此博客是由Bethany Griggs编写的,其中来自Node.js技术指导委员会的其他贡献。
我们很高兴今天宣布Node.js 16的发布!亮点包括更新V8 JavaScript引擎到9.0,预构建的Apple芯片二进制文件和额外的稳定API。
您可以从https://nodejs.org/en/download/current/下载最新版本,或者在Unix上使用Node版本管理器以安装NVM安装16.包含ChangeLog的Node.js博客文章可在HTTPS下载: //nodejs.org/en/blog/release/v16.0.0。
最初,Node.js 16将替换为“当前”发布行的Node.js 15。根据发布时间表,Node.js 16将是未来6个月的“当前”发布,然后在10月2021年10月推广到长期支持(LTS)。一旦提升为长期支持,将指定发布代号'镓'。
作为提醒 - Node.js 12将在长期支持中留在长期支持,直到2022年4月,并且节点14将在长期支持中留在长期支持,直到2023年4月。Node.js 10将在最后结束生命结束本月(2021年4月)。有关我们发布计划/计划的更多详细信息,可以在Node.js发布工作组存储库中找到。
始终是V8 javascript引擎的新版本带来了性能调整和改进以及将Node.js与JavaScript语言功能保持联系。在Node.js v16.0.0中,V8引擎在Node.js 15中的V8 8.6中更新为V8 9.0 - v8 9.0。
此更新带来了ECMAScript Regexp匹配指标,它提供捕获的字符串的开始和结束索引。当正则表达式具有/ D标志时,索引数组可通过.indices属性通过.indices属性。
> const matchobj = /(java)(script)/d.exec(' ;javascript'); undefined> matchobj.indices [[0,10],[0,4],[4,10],组:未定义]> matchobj.indices [0]; //匹配[0,10]> mainobj.indices [1]; //第一个捕获组[0,4]> mainobj.indices [2]; //第二捕获组[4,10]
有关V8中的新功能和更新的详细信息,请查看V8博客:https://v8.dev/。
定时器承诺API提供替代的定时器函数集,返回promise对象,删除使用util.promisify()的需要。
James Snell(https://github.com/nodejs/node/pull/33950)中添加在node.js v15.0.0中。在此版本中,他们从实验状态毕业到稳定。
我们的发布过程的性质意味着新功能大约每两周在“当前”释放线中发布。因此,在最新的Node.js 15发布中已经提供了许多最新添加,但运行时仍然相对较新。
Node.js 15中的一些最近发布的功能也将在Node.js 16中提供:
Web Platform ATOB(Buffer.Atob(Data))和BTOA(Buffer.BtoA(数据))实现与传统Web平台API的兼容性
node.js为几个不同平台提供预构建的二进制文件。对于每个重大释放,在适当的情况下评估和提出最小的工具链。
node.js v16.0.0将是我们发出苹果芯片的预设二进制文件的第一个版本。虽然我们将为英特尔(Darwin-X64)和Arm(Darwin-ARM64)架构提供单独的Tarballs架构麦斯科斯州安装者(.pkg)将作为“FAT”(多架构)二进制运输。
由于捐赠给项目所必需的硬件的慷慨,这些二进制文件的生产是可能的。
在基于Linux的平台上,构建Node.js 16的最小GCC级别将为GCC 8.3。有关支持的工具链和编译器的详细信息在Node.js Building.md文件中记录。
作为一个新的主要版本,它也是我们引入新的运行时弃用的时间。 Node.js项目旨在最大限度地减少对生态系统的干扰,以便进行任何破坏变化。该项目使用名为CILGM(Goldmine的金丝雀)的工具,以测试任何破坏更改(包括弃用)对大量流行生态系统模块的影响,以便在降落这些变化之前提供额外的洞察力。
Node.js 16中的显着弃用包括对Process.Binding()的运行时弃权弃权用于许多核心模块,例如process.binding('http_parser')。
一个新的重大版本是所有项目贡献者和Node.js合作者的努力的总和,所以我们想使用这个机会说一个大谢谢。特别是,我们要感谢Node.js构建工作组,以确保我们有基础架构准备创建和测试版本并为Node.js 16提供必要的升级。