写点什么

io.js 3.0 发布:重写 Buffer,支持 PPC

  • 2015-08-11
  • 本文字数:1441 字

    阅读完需:约 5 分钟

为了利用 JavaScript 语言构建和运行大规模网络应用及服务, Node.js 项目在 2009 年被提出。其后,该项目创始人 Ryan Dahl 加入 Joyent 公司,专职负责 Node.js 项目的研发。从 2010 年到 2013 年,Node.js 快速发展,大约每个月发布一个小版本。然而,经过了 Gatekeeper 的更迭,Node.js 项目从 2014 年开始贡献频率开始下降,其 1.0 版本也迟迟未能发布。2014 年 12 月,多位重量级 Node.js 开发者另外创建了 io.js ,试图利用 V8 JavaScript 引擎实现新的特性,从而替代 Node.js。io.js 的社区非常活跃,促使其发展速度很快,先后于 2015 年 1 月和 5 月份发布了 1.0 和 2.0 版本。近期,io.js 在同意与 Node.js 合并之后,又独立发布了一个大的版本—— 3.0 版本。接下来,本文就 io.js v3.0 的主要更新进行介绍。

  1. buffer 方面。新版的 io.js 在 buffer 方面的更新较多。首先,该版本在 V8 uint8Array 的基础上重新实现了 Buffer。尽管在重新实现过程中,相关设计师已经尽量减少其对性能的影响,Buffer 实例化仍然要一定程度的变慢。具体性能影响根据 Buffer 在应用程序内使用的情况而不同。目前,Buffer 可以接受 ArrayBuffer 作为一个构造函数的参数。当单个的 buffer 传给 Buffer.concat() 时,一个新的拷贝 Buffer 而不是原本的 Buffer 将会被返回。
  2. 编译方面。新版的 io.js 的内核中添加了 PPC 支持,使得基于 pLinux BE 和 LE 的编译变得可能。
  3. dgram 方面。当 socket.send() 发生错误,而且提供 callback 时,错误信息只是作为 callback 的第一个参数进行传输。
  4. freelist 方面。未编档的 freelist 内核模块将会被拒绝。
  5. http 方面。状态代码目前使用官方的 IANA 名字作为每个 RFC7231 。例如,http.STATUS_CODES[414] 返回’URI Too Long’,而不是’Request-URI Too Large’。此外,在一个 HTTP 代理中调用.getName() 将不再返回一个 trailing colon;HTTPS 代理也不再返回一个额外的 colon。
  6. node 方面。NODE_MODULE_VERSION 调整到了 45,以反映 ABI 中的 break。而且,node 中引入了新的 process.release 对象,其包含了一个设置为’io.js’的 name 属性。而且该对象的 sourceUrl、headersUrl 和 libUrl 属性包含了指向相关资源的 URL。与 io.js 绑定在一起的 node-gyp 版本下载和使用来自 iojs.org 的 header 文件包。
  7. repl 方面。永久的历史记录修改为默认处于使能状态。历史记录的文件位于~/.node_repl_history。该位置可以通过新的环境变量 NODE_REPL_HISTORY 来进行重新定位。而且,文件的格式修改为了纯文本类型,方便文件崩溃时进行处理。
  8. smalloc 方面。由于 V8 的变化,smalloc 不再提供 API。因此,smalloc 模块在新的版本中被移除。
  9. tls 方面。该版本为 TLS 会话密钥 rotation 添加了 server.getTicketKeys() 和 server.setTicketKeys() 两个方法。
  10. V8 JavaScript 引擎方面。该版本 io.js 使用的 v8 引擎升级到了 4.4.63.26 版本。这样,一些 ES6 的特性(如使用–harmony-rest-parameters 和–harmony-spreadcalls 命令行标志可以在 staging 分别实现 rest 参数和 spread 操作符等)就可以被支持。

从以上可以看出,作为 io.js 的一个较大的更新版本,v3.0 在多个方面进行了更新。据透露,Node.js 和 io.js 未来将会合并发布新的4.0 版本。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-08-11 19:332283
用户头像

发布了 268 篇内容, 共 127.8 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

KunlunBase功能体验范例

KunlunBase昆仑数据库

MySQL 数据库

全彩LED显示屏在单位形象的作用

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

这几款小程序插件可以让效率翻倍

Geek_99967b

小程序

实验精神终将胜利:量子纠缠的祛魅七十年

脑极体

Flowable 设置任务处理人的四种方式

江南一点雨

Java springboot flowable JavaEE

软件测试 | 测试开发 | 测试过程中遇到的那些奇葩bug

测吧(北京)科技有限公司

测试

详解webpack构建优化

Geek_02d948

webpack

Apache SeaTunnel(Incubating) 2.2.0-beta 版本发布!API 重构,连接器与引擎解偶

Apache SeaTunnel

数据同步 Seatunnel 版本发布 数据集成平台 新版本/特性发布

外包学生管理系统

早安

架构

一文了解 Python 中的对象比较方法 is 和 ==及其本质

宇宙之一粟

Python 10月月更

解读Vue3模板编译优化

yyds2026

Vue

RocketMQ Streams在云安全及 IoT 场景下的大规模最佳实践

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

小程序容器技术,或许是提升智能设备安全等级的又一解决方案

Speedoooo

浏览器安全 小程序容器

5分钟带您了解DSL、以太网线缆和光纤之间的区别,值得收藏!

wljslmz

dsl 光纤 以太网 10月月更

如何搭建知识库网页?

Baklib

英国国民信托 CIO:如何讲好可持续发展故事

雨果

CIO

如何打造优秀的客户体验?

Baklib

客户体验 客户体验管理

企业级低代码开发平台有哪些?

优秀

企业级低代码平台 企业级低代码

量化自动套利分红机器人系统开发(成熟技术)

开发微hkkf5566

强引用、软引用、弱引用、幻象引用的区别

zarmnosaj

10月月更

Apache RocketMQ 5.0 在Stream场景的存储增强

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

顶级理解!阿里这份Github星标63.7K的Redis高级笔记简直不要太细

程序知音

Java 数据库 redis 架构 后端技术

如何制作企业在线产品手册?这里有一些简单的方法!

Baklib

【指针】有哪些类型?

Geek_65222d

10月月更

【一Go到底】第十天---位运算and移位运算符

指剑

Go golang 10月月更

我奋斗了 18 年才和你坐在一起喝咖啡

宇宙之一粟

vue的几个提效技巧

yyds2026

Vue

展示出你的创意,知识库搭建也可以这样玩!

Baklib

Python基础(十四) | Python之禅与时间复杂度分析

timerring

Python 时间复杂度 10月月更 python之禅

聊聊Vuex原理

yyds2026

Vue

企业如何低成本快速搭建团队知识库,实现企业知识管理?

Baklib

io.js 3.0发布:重写Buffer,支持PPC_架构/框架_张天雷_InfoQ精选文章