ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Node.js 10.20.0 (LTS) 发布详解:macOS 公证构建、Buffer 大整数读写与 N-API 实例状态管理

Node.js 10.20.0 (LTS) 发布详解:macOS 公证构建、Buffer 大整数读写与 N-API 实例状态管理 Node.js 10.20.0 (LTS) 发布详解macOS 公证构建、Buffer 大整数读写与 N-API 实例状态管理【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org本篇技术指南基于 nodejs.org 网站仓库中收录的官方发布说明v10.20.0.md系统梳理 Node.js 10.20.0LTS的核心变更macOS 包公证带来的构建链升级、Buffer 64 位大整数读写 API、OpenSSL 1.1.1e 与 libuv 1.34.2 依赖升级、N-API 实例状态管理与 TLS keylog 事件等。读完本文你将完整理解该版本的技术内容、下载校验方式以及 nodejs.org 网站如何从这份发布说明生成并渲染发布页面。版本概览与定位v10.20.0 发布于 2020 年 4 月 8 日属于 Node.js 10.x 主线LTS 维护周期由 Bethany Nicolle Griggs 撰写发布说明。该版本以安全性与工程基础设施改进为主同时带来多个标记为SEMVER-MINOR向后兼容的新功能的 API 增强。从仓库中可以看到这类发布说明统一存放在 apps/site/pages/en/blog/release/ 目录下与 10.x 线其余 800 余篇发布说明一起构成完整的版本档案可经由网站/blog/release/v10.20.0路径访问。macOS 包公证与构建配置变更本次发布最值得关注的基础设施变更位于构建链层面Node.js 10.20.0 及后续 10.x 版本的macOS 二进制改用 macOS 10.15Catalina Xcode 11 编译以满足苹果对.pkg安装包的notarization公证要求——这是 macOS 10.15 及以上系统安装.pkg文件的硬性前提。此前 Node.js 10.x 的构建环境为 macOS 10.10Yosemite最低部署目标为 macOS 10.7Lion。由于新版二进制依然保持 macOS 10.7Lion的最低部署目标因此老版本 macOS 用户不受影响无需担心兼容性回退。这一变更对应仓库构建系统的适配工作原文档标注为 build 模块的 macOS package notarization 提交。从运维角度看它意味着安装包签名与公证链路代码签名 → 公证 → 票据 stapling成为后续 10.x 发布流程的固定环节任何 macOS 10.15 用户在安装node-v10.20.0.pkg时都不会再收到未公证应用的拦截提示。Notable Changes 逐模块解析buffer64 位大整数读写方法新增{read|write}Big[U]Int64{BE|LE}系列方法对应 PR #19691补齐了 Buffer 在64 位大整数超出 JS 安全整数范围的 BigInt 值上的读写能力readBigInt64BE/readBigInt64LE按大端BE或小端LE字节序读取带符号 64 位整数返回bigintreadBigUInt64BE/readBigUInt64LE读取无符号 64 位整数writeBigInt64BE/writeBigInt64LE与writeBigUInt64BE/writeBigUInt64LE向 Buffer 写入bigint值。该 API 对处理时间戳、ID 主键、加密摘要等超过Number.MAX_SAFE_INTEGER的数据场景尤为重要此前只能依赖第三方库或手动拆分为两个 32 位整数处理。deps三大核心依赖同步升级npm 升级至 6.14.3并在此后随多个提交继续跟进到 6.14.4修复此前 6.14.x 系列引入的回归问题OpenSSL 源码升级至 1.1.1e含 archs 文件与配置调整、若干 cherry-pick 安全修复直接影响 TLS 底层能力与安全基线libuv 升级至 1.34.2从 1.29.1 一路累积多个中间版本带来事件循环与异步 I/O 层面的修复与改进。依赖版本数据也会被网站侧消费releaseData生成逻辑会将每个版本的dependencies.npm、dependencies.v8提取出来见 releaseData.mjs用于下载页展示各版本对应的 npm、V8 版本信息。n-api实例状态管理与 API 扩展N-APINode.js 原生模块 ABI 稳定层在本版本迎来多项SEMVER-MINOR级增强napi_get_all_property_namesPR #30006新增枚举对象全部属性名的原生 API支持按类型可枚举/不可枚举、字符串/Symbol过滤替代此前需要逐属性遍历的繁琐写法per-instance state management APIPR #28682新增按Node.js 环境实例维度的状态管理能力允许原生模块为每个实例存储独立数据避免多实例如 worker_threads、Electron 渲染进程场景下的状态串扰N-API 发布 release 6PR #32058将本次新增 API 固化为 ABI 稳定承诺原生模块声明NAPI_VERSION 6后即可安全使用新能力NAPI_CALL_INTO_MODULE由宏改为函数PR #26128属于内部实现重构减少宏展开带来的调试与代码生成问题对二进制兼容性无破坏。tlskeylog 事件与协议版本默认值TLSSocket暴露keylog事件PR #27654当 TLS 会话产生密钥材料如 TLS 1.3 的会话密钥时触发配合 Wireshark 等工具可解密 TLS 流量此前该能力仅存在于更高版本 API 中CLI 支持 TLS min/max 协议默认值PR #27946允许通过命令行配置 TLS 最低/最高协议版本便于在维护旧客户端兼容性与安全基线之间做精细化控制。urlurlToOptions() 兼容 quasi-WHATWG URLurlToOptions()用于将 URL 对象转换为http.request()的 options现在能够正确处理quasi-WHATWG URLPR #26226即那些不完全符合 WHATWG 规范但结构相近的 URL 对象减少依赖url.parse与new URL()混用时的行为差异。Commits 提交清单概览除上述功能提交外本版本还包含一批质量与工程改进原文档中完整列出了全部 55 条提交见 v10.20.0.md要点包括build,win修复 vcbuild 中的 goto exit 问题console为time/count系列方法补充 trace-events 埋点depsnpm 6.13.6 → 6.14.4 的多次递进升级、移除 deps/npm 中的.pyc文件、V8 cherry-pickd89f4ef1cd62doc/tools修正Readable.from的版本元数据、changelog 版本数据源改为CHANGELOG.md、doctool 支持无网络环境构建test若干 flaky 测试修复与超时放大保证 CI 稳定性v8修复 load elimination 的 liveness 检查。下载资源与平台覆盖本版本面向 Windows、macOS、Linux、AIX、SmartOS 及多种 ARM/PowerPC 架构发布二进制原文档列出的完整下载清单如下平台/架构安装包/二进制Windows 32-bit Installernode-v10.20.0-x86.msiWindows 64-bit Installernode-v10.20.0-x64.msiWindows 32-bit Binarywin-x86/node.exeWindows 64-bit Binarywin-x64/node.exemacOS 64-bit Installernode-v10.20.0.pkgmacOS 64-bit Binarynode-v10.20.0-darwin-x64.tar.gzLinux 64-bitnode-v10.20.0-linux-x64.tar.xzLinux PPC LE 64-bitnode-v10.20.0-linux-ppc64le.tar.xzLinux s390x 64-bitnode-v10.20.0-linux-s390x.tar.xzAIX 64-bitnode-v10.20.0-aix-ppc64.tar.gzSmartOS 64-bitnode-v10.20.0-sunos-x64.tar.xzARMv6 / ARMv7 / ARMv8node-v10.20.0-linux-armv6l / armv7l / arm64 .tar.xzSource Codenode-v10.20.0.tar.gz这些资源统一托管在nodejs.org/dist/v10.20.0/目录文档镜像位于nodejs.org/docs/v10.20.0/api/。值得注意的是网站的下载页并非硬编码这份清单而是通过数据驱动渲染。仓库中 constants.json 定义了各操作系统支持的平台矩阵如 Linux 的 x86、x64、ARMv7、ARM64、ppc64le、s390xWindows 的 x64/x86/ARM64及其semver 兼容区间——例如 x86 平台要求 23.0.0ARM64 要求 19.9.0ppc64le 要求 4.4.0。兼容性校验逻辑在 util/download/index.tsx 中通过satisfies()对版本号与区间做匹配据此自动启用/禁用下拉选项。SHASUMS 校验验证下载完整性发布说明末尾附带了完整的SHASUMS256 校验清单以 PGP 签名消息-----BEGIN PGP SIGNED MESSAGE-----形式提供覆盖全部平台产物的 SHA-256 哈希例如392432f73ec56ad420bd505d9d4e0e15435138aef45c27106d0f15de4975790b node-v10.20.0-aix-ppc64.tar.gz 45de728515f0e7cac4ecf7741b0fa09d4e9f2048162fa3b680ea4e1f8ee24588 node-v10.20.0-darwin-x64.tar.xz 63f7fe148dece366c79a4daf06d38ab06e979cf6d7c3ea7153887e4d65a5f85e node-v10.20.0-linux-x64.tar.gz b902776612234df2bf901728eddac8222101acf533f675dbcf8c317af5ccd9da node-v10.20.0.pkg 5b7166da554743989c657918a0246b09770bea9706df3b531d7a08e53f77981f node-v10.20.0.tar.gz校验步骤任一平台通用# 1. 下载发布包与校验文件校验文件即本文 SHASUMS 部分 # 2. 计算本地文件的 SHA-256 shasum -a 256 node-v10.20.0-linux-x64.tar.xz # 3. 与发布说明中对应行的哈希比对一致即代表文件完整、未被篡改由于校验文件本身经过 PGP 签名建议同时验证签名有效性确保哈希列表确实出自 Node.js 发布团队而非中间人篡改。这些 SHASUMS 数据正是发布说明生成脚本自动抓取的产物脚本会请求nodejs.org/dist/v10.20.0/SHASUMS256.txt.asc并将其嵌入模板见 index.mjs。深入发布说明是如何生成的仓库中 scripts/release-post/index.mjs 是理解本文文档来源的关键发布说明并非纯手工撰写而是由脚本从多数据源聚合生成从nodejs.org/dist/index.json获取最新版本号或显式传入版本参数从CHANGELOG_V10.md正则截取对应版本段落fetchChangelog并从段落头部解析发布作者与版本策略Stable/LTS抓取SHASUMS256.txt.asc作为校验区块逐个 HEAD 请求验证下载链接是否可用不可用则标记*Coming soon*由 template.hbs 经 Handlebars 渲染出--- frontmatter --- changelog 下载清单 SHASUMS的完整 Markdown再经 Prettier 格式化后写入pages/en/blog/release/vX.md。由此可见本文所依据的 v10.20.0.md 严格遵循该模板frontmatter 中的date、category: release、title、layout: blog-post、author字段正对应模板中的占位符。运行方式为node apps/site/scripts/release-post/index.mjs 10.20.0若省略版本号则自动选取最新版文件已存在时默认拒绝覆盖可通过--force强制重写。发布页面在网站中的呈现发布说明在网站上有两个消费入口版本档案路由每篇发布说明经由/blog/release/{version}路径渲染为独立博文。仓库中的 BlogPostLink.tsx 组件从ReleaseContext读取当前版本号并生成/blog/release/${version}链接将下载页与版本博文串接起来发布数据驱动网站下载页依赖 releaseData.mjs 生成的结构化发布数据状态 Current/LTS/EOL、codename、npm/V8 版本、minorVersions 列表等。数据源来自 majorNodeReleases.mjs 对nodevu包的封装并按support.phases.dates.end判断是否已进入 EOL。v10 线作为已结束维护的 LTS 主线在今日网站的发布数据中会被标记为 EOL 状态。结语Node.js 10.20.0 是一次典型的维护期功能补充型 LTS 发布macOS 公证构建保障了新系统上的安装体验Buffer 大整数 API 与 N-API release 6 扩展了原生与二进制数据处理的边界OpenSSL 1.1.1e 与 libuv 1.34.2 则夯实了安全与异步 I/O 的地基。对开发者而言理解这类发布说明的阅读方法Notable Changes → Commits → 下载校验与生成机制也能更高效地跟踪 Node.js 的演进节奏。【免费下载链接】nodejs.orgThe Node.js® Website项目地址: https://gitcode.com/GitHub_Trending/no/nodejs.org创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表