写点什么

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

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

关注

评论

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

赛博威正式加入广东省网商协会,共促大湾区网商产业数智化高质量发展

赛博威科技

数字化 生态合作 赛博威 网商协会

引爆 AI 会议工具潮流,Granola 打造 2.5 亿美元估值产品的秘密丨Voice Agent 学习笔记

RTE开发者社区

AI Agent多模态融合策略研究与实证应用

申公豹

人工智能

活动邀请 | 阿里云AI原生应用开发实战营—Serverless AI 专场(北京站)开启报名!

阿里巴巴云原生

阿里云 Serverless AI 云原生

中烟创新参编的《数据企业评估规范》标准正式发布

中烟创新

YashanDB SQLCODE函数

YashanDB

数据库

海外舆情监测为何成为出海企业的必修课?

沃观Wovision

出海企业 海外舆情监控 沃观Wovision 舆情监测系统

YashanDB SQLERRM函数

YashanDB

数据库

首个智能体模型实测:产品、开发、运维“全包了”

Alter

施耐德电气徐栋:AI加速数据中心发展 以创新构建适配未来的基础设施

新消费日报

奥特斯2025/26财年第一季度呈现增长趋势

财见

语言模型的后完成学习技术解析

qife122

语言模型 自我评估

当阿里巴巴“戴上眼镜”

趣解商业

阿里巴巴 夸克 AI眼镜

中烟创新参编的《软件和信息技术服务行业企业环境社会治理信息披露指南》标准正式发布

中烟创新

Web前端入门:JavaScript cookie 有大小限制吗?溢出会怎样?

不在线第一只蜗牛

JavaScript 前端 Web

YashanDB STDDEV_POP函数

YashanDB

数据库

全球首个搭载 Kimi-K2 的 Serverless 架构 VibeCoding解决方案重磅来袭!

阿里巴巴云原生

阿里云 Serverless 云原生

利用模型上下文协议增强生成式AI解决方案 - 第1部分

qife122

企业架构 生成式AI

凯睿德制造收购Convanit,推进智能制造中的AI图像分析

财见

语音客服公司驯鹿 AI 获数千万 A+轮融资;扎克伯格:眼镜将成为用户与 AI 交互的主要方式丨日报

RTE开发者社区

从崩溃到稳定:前端开发者必学的 Node.js 守护进程实战指南

量贩潮汐·WholesaleTide

node.js

YashanDB SQRT函数

YashanDB

数据库

[鸿蒙征文]小支的 HarmonyOS 学习笔记:从零搞个小应用

巴库一郎

鸿蒙 开发工具 HarmonyOS HarmonyOS NEXT 实践分享

YashanDB STDDEV函数

YashanDB

数据库

龙蜥社区邀您参加 2025 CCF 中国开源大会

OpenAnolis小助手

AI 操作系统 龙蜥社区 龙蜥操作系统

在多机运维过程中,最容易踩的几个坑

是但求其发

nginx 容器 运维工具 Linux 运维 #程序员

Alexa实时对话翻译技术解析

qife122

语音识别 对话式AI

为 Go 开发者量身打造的分布式任务,异步任务变得如此简单

vison

Go 分布式 定时任务

基于迁移学习的智能代理在多领域任务中的泛化能力探索

申公豹

人工智能

清华大学软件学院长聘副教授龙明盛:Timer 3.0 已经成为了“满血版”的时序大模型

Apache IoTDB

融云十周年,致敬程序员精神

融云 RongCloud

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