写点什么

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:332192
用户头像

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

关注

评论

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

软件测试/测试开发 | app自动化测试(Android)--高级定位技巧

测试人

软件测试 自动化测试 测试开发 appium

年度技术盘点:水稻、韦伯、脑机接口、AI预测及创作、快速充电

B Impact

2022年12月视频行业用户洞察:世界杯后半程看球热度不减,优质IP创新与开发助力用户留存

易观分析

音视频 视频

Domino的数据迁移方案

饿鱼

如何集中式管理多个客户端节点传输任务-镭速

镭速

Github霸榜!竟是阿里技术官的微服务分布式项目实战笔记总结

程序知音

Java 分布式 微服务 java架构 后端技术

移动开发平台真的能提升App开发效率吗?

Onegun

移动应用开发 移动端开发

软件测试/测试开发 | app自动化测试(Android)--元素定位方式与隐式等待

测试人

软件测试 自动化测试 测试开发 appium

阿里、腾讯、蚂蚁金服Java技术面试及经验总结(文末分享答案)

程序知音

Java java面试 后端技术 春招 八股文

国家先进计算产业创新(宜昌)中心来了!

SENSORO

人工智能 大数据

MixMIM 创建混合图像,提出新型掩码方案

Zilliz

计算机视觉

2022年中国跨境支付行业年度专题分析

易观分析

金融 跨境支付 市场

老马闲评数字化【3】业务说了算还是技术说了算?

行云创新

云原生 数字化转型 企业数字化 老马闲评数字化 行云创新

行云洞见|为什么说云端IDE代表未来趋势?

行云创新

程序员 云原生 CloudIDE 集成开发环境 云端IDE

模块五计算架构模式

程序员小张

「架构实战营」

老马闲评数字化【1】数字化转型,不转得死,转了也未必活?

行云创新

云原生 数字化转型 企业数字化

C4D和3dmax有什么区别?

Finovy Cloud

3DMAX C4D

混合式APP开发框架

力软低代码开发平台

带你熟悉3种AQS的线程并发工具的用法

华为云开发者联盟

后端 开发 华为云 企业号 1 月 PK 榜 华为云开发者联盟

软件测试/测试开发 | app自动化测试(Android)--App 控件定位

测试人

软件测试 自动化测试 测试开发 appium

除 svn、Testlink 外,还有哪些不错的测试用例管理工具?

爱吃小舅的鱼

项目管理 管理工具 测试用例管理平台

尚硅谷Spring6发布视频教程

小谷哥

太狠了,Spring全家桶笔记,一站式通关全攻略,已入职某厂涨薪18K

程序知音

Java spring ssm java架构 后端技术

推荐几款实用的移动开发平台

FinFish

移动开发 开发平台 移动开发平台 移动端开发 小程序技术

老马闲评数字化【2】您的企业是否应该急于数字化转型?

行云创新

云原生 数字化转型 企业数字化 老马闲评数字化 行云创新

由浅入深,聊聊 LeackCanary 的那些事

Petterp

android 内存泄漏 LeakCanary

一种前端无源码定制化开发能力专利解读

元年技术洞察

低代码 数字化转型 无源码 元年方舟

各大互联网公司面经分享:Java全栈知识+1500道大厂面试真题

程序知音

Java java面试 java架构 大厂面试题 八股文

网易游戏实时 HTAP 计费风控平台建设

Apache Flink

大数据 flink 实时计算

从零到一,臻于至善|网易邮箱基于StarRocks 开发大数据平台的实践

StarRocks

数据库

2022评分最高十大信创解决方案出炉!

饿鱼

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