皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Node 20.0.0 发布

Node 20.0.0 发布

值得注意的变化
权限模型
Node.js现在有一个实验性的功能,叫做许可模型。它允许开发者在程序执行过程中限制对特定资源的访问,如文件系统操作、子进程生成和工作线程创建。该API存在于一个标志–实验性权限(experimental-permission)背后,当它被启用时,将限制对所有可用权限的访问。通过使用这一功能,开发人员可以防止他们的应用程序访问或修改敏感数据或运行潜在的有害代码。关于权限模型的更多信息可以在Node.js文档中找到。

权限模型是Rafael Gonzaga在#44004中的贡献。

自定义ESM加载器钩子在专用线程上运行
通过加载器(–experimental-loader=foo.mjs)提供的ESM钩子现在在一个专用线程中运行,与主线程隔离。这为加载器提供了一个独立的范围,并确保加载器和应用程序代码之间没有交叉污染。

同步的import.meta.resolve()

为了与浏览器行为保持一致,该函数现在同步返回。尽管如此,用户加载器的解析钩子仍然可以被定义为异步函数(或者同步函数,如果作者愿意的话)。即使有异步解析钩子被加载,import.meta.resolve仍将为应用程序代码同步地返回。

由Anna Henningsen、Antoine du Hamel、Geoffrey Booth、Guy Bedford、Jacob Smith和Michaël Zasso在#44710贡献。

V8 11.3
V8引擎被更新到11.3版本,是Chromium 113的一部分。这个版本包括了JavaScript API的三个新功能:

String.prototype.isWellFormed和toWellFormed
通过复制改变Array和TypedArray的方法
可调整的ArrayBuffer和可增长的SharedArrayBuffer
正则v标志与设置符号+字符串的属性
WebAssembly尾部调用
V8的更新是Michaël Zasso在#47251的贡献。

稳定的测试运行器
最近对Node.js的更新,版本20,包括对test_runner模块的一个重要改变。在最近的更新后,该模块已被标记为稳定。此前,test_runner模块是实验性的,但这一变化标志着它成为一个稳定的模块,可以在生产中使用。

由Colin Ihrig贡献于#46983

Ada 2.0
Node.js v20带有最新版本的URL解析器,Ada。这次更新为URL解析带来了重大的性能改进,包括对node:url中url.domainToASCII和url.domainToUnicode函数的增强。

Ada 2.0已被集成到Node.js代码库中,确保应用程序的所有部分都能从改进的性能中受益。此外,Ada 2.0的特点是比其前身Ada 1.0.4有了明显的性能提升,同时还消除了对URL主机名解析的ICU要求。

由Yagiz Nizipli和Daniel Lemire贡献于#47339

准备单个可执行的应用程序现在需要注入一个Blob
构建单个可执行应用程序现在需要注入由Node.js从JSON配置中准备的Blob,而不是注入原始JS文件。这开启了将多个共存资源嵌入SEA(单一可执行应用程序)的可能性。

由Joyee Cheung贡献于#47125

Web Crypto API
Web Crypto API函数的参数现在可以像其他Web Crypto API实现一样,根据其WebIDL定义进行强制和验证。这进一步提高了与其他Web Crypto API实现的互操作性。

这一变化是由Filip Skokan在#46067中做出的。

对ARM64 Windows的正式支持
Node.js现在包括适用于ARM64 Windows的二进制文件,允许在该平台上进行本地执行。MSI、zip/7z包和可执行文件可以从Node.js的下载网站上获得,与所有其他平台一样。更新了CI系统,现在所有的变化都在ARM64 Windows上进行了全面测试,以防止退步并确保兼容性。

Stefan Stojanovic在#47233中将ARM64 Windows升级为2级支持。

现在必须指定WASI版本
当new WASI()被调用时,版本选项现在是必须的,没有默认值。任何依赖默认版本的代码将需要更新,以请求一个特定的版本。

这一改动是由Michael Dawson在#47391中做出的。

弃用和删除
[3bed5f11e0] – (SEMVER-MAJOR) url: runtime-deprecate url.parse() with invalid ports(Rich Trott) #45526
url.parse()接受带有非数字端口的URL。这种行为可能会导致主机名称被意外输入欺骗。在未来的Node.js版本中,这些URLs将抛出一个错误,正如WHATWG URL API已经做的那样。从 Node.js 20 开始,这些 URLs 会导致 url.parse() 发出警告。

更多 Node v20.0.0 (Current) | Node.js (nodejs.org)

Windows 32-bit Installer: https://nodejs.org/dist/v20.0.0/node-v20.0.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v20.0.0/node-v20.0.0-x64.msi
Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.0.0/node-v20.0.0-arm64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v20.0.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v20.0.0/win-x64/node.exe
Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.0.0/win-arm64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v20.0.0/node-v20.0.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.0.0/node-v20.0.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.0.0/node-v20.0.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v20.0.0/node-v20.0.0-aix-ppc64.tar.gz
ARMv7 32-bit Binary: https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v20.0.0/node-v20.0.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v20.0.0/node-v20.0.0.tar.gz
Other release files: https://nodejs.org/dist/v20.0.0/
Documentation: https://nodejs.org/docs/v20.0.0/api/

转自 Node v20.0.0 (Current) | Node.js (nodejs.org)