Change8

v24.2.0

Breaking Changes
📦 node-jsView on GitHub →
1 breaking9 features🐛 5 fixes4 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

  1. Replace usage of util.isNativeError(obj) with Error.isError(obj).
  2. Ensure all HTTP class instantiations (e.g., ClientRequest, ServerResponse) use the 'new' keyword.
  3. Remove any logic relying on HTTP/2 priority signaling as it is no longer supported.
  4. 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.