Node.js 16 發布,V8 升級至 9.0!
我們很高興地宣布 Node.js 16 正式發布了!升級重點包括 V8 JS 引擎升級至 9.0,預構建的 Apple Silicon 二進制文件,還有一些額外的穩定 API。
image.png
你可以在 這里[1] 下載最新版,或者使用 UNIX 上的 Node 版本管理器[2] 運行 nvm install 16 命令進行安裝。Node.js 博客中包含的變更日志可以在 這里[3] 找到。
最初,Node.js 16 將會替代 Node.js 15 成為我們的「當前」發布版本。根據 發布時間表[4],Node.js 16 將是未來 6 個月的「當前』版本,然后在 2021 年 10月 升級為長期支持(LTS)。一旦升級為長期支持,將以 “Gallium” 的代號發布。
提醒一下 —— Node.js 12 將保持長期支持直到2022年4月,Node.js 14 將保持長期支持直到 2023 年 4 月。Node.js 10 將在這個月底(2021 年 4 月)結束生命??梢栽?Node.js 發布工作組倉庫[5]中找到關于我們的發布計劃或者時間表的更多細節。
V8 升級至 9.0
和往常一樣,V8 JavaScript 引擎的新版本帶來了性能調整和改進,并使 Node.js 保持最新的 JavaScript 語言特性。在 Node.js v16.0.0 中,V8 引擎從 Node.js 15 中的 8.6 升級到 9.0。
這個更新帶來了 ECMAScript RegExp 匹配索引,它提供了捕獲字符串的開始和結束索引。當正則表達式具有 /d 標志時,索引數組可以通過匹配對象的 .indices 屬性獲得。
- > const matchObj = /(Java)(Script)/d.exec('JavaScript');
- undefined
- > matchObj.indices
- [ [ 0, 10 ], [ 0, 4 ], [ 4, 10 ], groups: undefined ]
- > matchObj.indices[0]; // Match
- [ 0, 10 ]
- > matchObj.indices[1]; // First capture group
- [ 0, 4 ]
- > matchObj.indices[2]; // Second capture group
- [ 4, 10 ]
- 復制代碼
V8 中的更多新特性以及更新內容請查看 V8 博客:v8.dev/[6]。
穩定的 Timers Promises API
Timers Promises API 提供了另一組返回 Promise 對象的定時器函數,不再需要使用 util.promisify()。
- import { setTimeout } from 'timers/promises';
- async function run() {
- await setTimeout(5000);
- console.log('Hello, World!');
- }
- run();
- 復制代碼
James Snell 在 Node.js v15.0.0 中添加了該特性(github.com/nodejs/node…[7]
其他特性
我們發布進度的本質意味著新特性大約每兩周在「當前」發布版本線中發布一次。由于這個原因,最近的 Node.js 15 版本中已經提供了許多新添加的內容,但是對于運行時來說仍然是相對較新的。
Node.js 15 最近發布的一些特性,也將在 Node.js 16 中可用,包括:
標準 Web Crypto API[8] 的實驗實現
npm 7(Node.js v16.0.0 中為 npm 7.10.0)
Node-API v8
穩定的 Source Map v3
Web 平臺 atob(buffer.atob(data))和btoa(buffer.btoa(data))實現,以兼容遺留的 Web 平臺 api
新的編譯器
Node.js 為幾種不同的平臺提供了預構建的二進制文件。對于每個主要版本,最小的工具鏈被評估并在適當的地方被提出。
Node.js v16.0.0 將會是第一個支持 Apple Silicon 的預構建二進制文件。雖然我們將為 Intel(darwin-x64)和 ARM (darwin-arm64)架構提供單獨的 tarball,但 macOS 安裝程序(.pkg)將以 “fat”(多架構) 二進制文件的形式發布。
這些二進制文件的生產版本得以實現,要感謝 MacStadium 為該項目提供了必要的硬件。
在我們基于 linux 的平臺上,構建 Node.js 16 的最低 GCC 版本將是 GCC 8.3。關于所支持的工具鏈和編譯器的詳細信息在Node.js BUILDING.md[9] 中有文檔說明。
描述
一個新的主要版本發布,這也是我們介紹新的運行時廢棄的時候。Node.js 項目旨在將任何破壞性改變對生態系統的破壞最小化。該項目使用名為 CITGM[10](金礦中的金絲雀)的工具來測試任何破壞性更改(包括棄用)對大量流行的生態系統模塊的影響,以便在完成這些更改之前提供額外的見解。
Node.js 16 中值得注意的棄用包括運行時棄用一些核心模塊的 process.binding() 訪問,比如 process.binding('http_parser')。




























