v24.2.0
Breaking Changes📦 node-jsView on GitHub →
⚠ 1 breaking✨ 9 features🐛 5 fixes⚡ 4 deprecations🔧 11 symbols
Summary
This release introduces import.meta.main for ESM entry point detection, stabilizes Symbol.dispose, and removes HTTP/2 priority signaling in alignment with RFC 9113. It also includes several deprecations to align with modern JavaScript practices and updates core dependencies like nghttp2 and SQLite.
⚠️ Breaking Changes
- Support for HTTP/2 priority signaling has been removed. Applications relying on manual priority signaling in nghttp2 will no longer function as this follows RFC 9113.
Migration Steps
- Replace usage of util.isNativeError(obj) with Error.isError(obj).
- Ensure all HTTP class instantiations (e.g., ClientRequest, ServerResponse) use the 'new' keyword.
- Remove any logic relying on HTTP/2 priority signaling as it is no longer supported.
- Update any child_process calls that pass an empty string to options.shell to use a valid shell path or omit the option.
✨ New Features
- Added import.meta.main to detect if the current module is the entry point of the process.
- Graduated Symbol.dispose and Symbol.asyncDispose from experimental to stable.
- Added autoClose option to FileHandle.readableWebStream().
- Added http2.server.stream.finish diagnostics channel.
- Graduated several long-standing internal error codes to stable.
- Added support for namespace options in configuration files.
- Added implicit allow-fs-read permission to the application entrypoint when using the permission model.
- Made Worker and performance event loop delay histograms (perf_hooks) async disposable.
- Added 'none' style to util.styleText.
🐛 Bug Fixes
- Fixed broken fs.cpSync benchmark.
- Fixed pointer compression builds.
- Fixed DLL builds on Windows.
- Fixed defaults for shared llhttp builds.
- Forward authentication tags to OpenSSL immediately in crypto module.
Affected Symbols
⚡ Deprecations
- HTTP/2 priority signaling is now deprecated across all Node.js release lines.
- util.isNativeError is deprecated in favor of Error.isError.
- Passing an empty string to options.shell in child_process is now deprecated.
- Instantiating HTTP classes without the 'new' keyword is now deprecated.