BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 张天雷 关注 4 他的粉丝 发布于 2015年8月12日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

为了利用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读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT