base64 和 base64url 编码和解码功能的性能显著提高。
本次发布引入了仅限文档的弃用通知,不再推荐使用比密码块大小更短的 GCM 认证标签,除非用户指定了 authTagLength 选项。
从本次发布开始,CustomEvent 被标记为稳定。
fs 的同步函数在抛出错误时包含堆栈跟踪信息,这有助于调试。但 fs/promises 中的函数抛出错误时没有堆栈跟踪信息。此提交通过调用 Error.captureStacktrace 并重新抛出错误,添加了堆栈跟踪。
新选项 --report-exclude-network,也可作为 report.excludeNetwork 使用,使用户能够在诊断报告中排除网络接口。在某些系统上,这可以优化报告生成时间,因为生成报告可能需要几分钟。
从本次发布开始,可以通过调用 process.getAvailableMemory() 获取系统中的可用内存。
此提交添加了对流中类型化数组的支持。
现在可以向 util.styleText 传递格式字符串数组,以对相同文本应用多种格式。
console.log(
util.styleText(['underline', 'italic'], 'My italic underlined message')
);
这类似于 Chromium DevTools 控制台提供的 queryObjects() 控制台 API。它可以在一次完整的垃圾回收后,搜索堆中原型链上具有匹配构造函数的对象,这对内存泄漏回归测试非常有用。为了避免意外结果,用户应避免在自己无法控制实现的构造函数或可能被应用程序中的其他方调用的构造函数上使用此 API。
为了避免意外泄漏,此 API 不返回找到对象的原始引用。默认情况下,它返回找到对象的数量。如果 options.format 是 'summary',则返回一个包含每个对象简要字符串表示的数组。此 API 提供的可见性类似于堆快照,同时用户可以节省序列化和解析的成本,并在搜索期间直接过滤目标对象。
我们在测试套件中内部使用此 API,比任何其他 CI 中的泄漏回归测试策略更稳定。通过公共实现,我们现在可以使用公共 API。
const { queryObjects } = require('node:v8');
class A {
foo = 'bar';
}
console.log(queryObjects(A)); // 0
let a = new A();
console.log(queryObjects(A)); // 1
// [ "A { foo: 'bar' }" ]
console.log(queryObjects(A, { format: 'summary' }));
// Release the object.
a = null;
// Search again. queryObjects() includes a full garbage collection
// so a should disappear.
console.log(queryObjects(A)); // 0
class B extends A {
bar = 'qux';
}
// The child class B's prototype has A's prototype on its prototype chain
// so the prototype object shows up too.
console.log(queryObjects(A, { format: 'summary' })); // [ A {}' ]
从本次发布开始,Watch 模式被视为稳定。当处于 Watch 模式时,被监视文件的更改会导致 Node.js 进程重启。
本文内容来自 Node.js 官方发布博客 https://nodejs.org/en/blog/release/v20.13.0
- END -