Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
>=20.18.1
->>=22.12.0
Release Notes
nodejs/node (node)
v22.12.0
: 2024-12-03, Version 22.12.0 'Jod' (LTS), @ruyadornoCompare Source
Notable Changes
require(esm) is now enabled by default
Support for loading native ES modules using require() had been available on v20.x and v22.x under the command line flag --experimental-require-module, and available by default on v23.x. In this release, it is now no longer behind a flag on v22.x.
This feature is still experimental, and we are looking for user feedback to make more final tweaks before fully stabilizing it. For this reason, on v22.x, when the Node.js instance encounters a native ES module in require() for the first time, it will emit an experimental warning unless
require()
comes from a path that containsnode_modules
. If there happens to be any regressions caused by this feature, users can report it to the Node.js issue tracker. Meanwhile this feature can also be disabled using--no-experimental-require-module
as a workaround.With this feature enabled, Node.js will no longer throw
ERR_REQUIRE_ESM
ifrequire()
is used to load a ES module. It can, however, throwERR_REQUIRE_ASYNC_MODULE
if the ES module being loaded or its dependencies contain top-levelawait
. When the ES module is loaded successfully byrequire()
, the returned object will either be a ES module namespace object similar to what's returned byimport()
, or what gets exported as"module.exports"
in the ES module.Users can check
process.features.require_module
to see whetherrequire(esm)
is enabled in the current Node.js instance. For packages, the"module-sync"
exports condition can be used as a way to detectrequire(esm)
support in the current Node.js instance and allow bothrequire()
andimport
to load the same native ES module. See the documentation for more details about this feature.Contributed by Joyee Cheung in #55085
Added resizable
ArrayBuffer
support inBuffer
When a
Buffer
is created using a resizableArrayBuffer
, theBuffer
length will now correctly change as the underlyingArrayBuffer
size is changed.Contributed by James Snell in #55377
Update root certificates to NSS 3.104
This is the version of NSS that shipped in Firefox 131.0 on 2024-10-01.
Certificates added:
Contributed by Richard Lau in #55681
Other Notable Changes
4920869935
] - (SEMVER-MINOR) assert: make assertion_error use Myers diff algorithm (Giovanni Bucci) #54862ccffd3b819
] - doc: enforce strict policy to semver-major releases (Rafael Gonzaga) #55732acc6806900
] - doc: add jazelly to collaborators (Jason Zhang) #5553188d91e8bc2
] - esm: mark import attributes and JSON module as stable (Nicolò Ribaudo) #5533398bfc7dce5
] - (SEMVER-MINOR) http: add diagnostic channelhttp.client.request.created
(Marco Ippolito) #55586337f61fb25
] - (SEMVER-MINOR) lib: add UV_UDP_REUSEPORT for udp (theanarkh) #554031628c48ad6
] - (SEMVER-MINOR) net: add UV_TCP_REUSEPORT for tcp (theanarkh) #55408457e73f4c9
] - (SEMVER-MINOR) sqlite: add support for SQLite Session Extension (Bart Louwers) #54181Commits
f6885e1c68
] - assert: fix the string length check for printing the simple diff (Giovanni Bucci) #55474907484f04d
] - assert: fix deepEqual always return true on URL (Xuguang Mei) #50853301844e249
] - assert: differentiate cases wherecause
isundefined
or missing (Antoine du Hamel) #5573889ccd3e3f4
] - assert: fixdeepStrictEqual
on errors whencause
is not undefined (Edigleysson Silva (Edy)) #554064920869935
] - (SEMVER-MINOR) assert: make assertion_error use Myers diff algorithm (Giovanni Bucci) #54862c67aec368e
] - benchmark: addtest-reporters
(Aviv Keller) #5575749774cc2c0
] - benchmark: addtest_runner/mock-fn
(Aviv Keller) #557714caaeb47b2
] - benchmark: add nodeTiming.uvmetricsinfo bench (RafaelGSS) #55614cac58564a1
] - benchmark: add --runs support to run.js (Rafael Gonzaga) #551585c3ee886fc
] - benchmark: adjust byte size for buffer-copy (Rafael Gonzaga) #552956023e1bdb2
] - (SEMVER-MINOR) buffer: make Buffer work with resizable ArrayBuffer (James M Snell) #55377a6c00c2204
] - build: add create release proposal action (Rafael Gonzaga) #55690b4e413933b
] - build: implement node_use_amaro flag in GN build (Cheng) #55798d1db202d4a
] - build: apply cpp linting and formatting to ncrypto (Aviv Keller) #553628c670496da
] - build: use rclone instead of aws CLI (Michaël Zasso) #55617827e2065bd
] - build: stop pre-compilinglint-md
(Aviv Keller) #55266c3ca978d9c
] - build: fix building with system icu 76 (Michael Cho) #5556323e3287bbe
] - build: fix GN arg used in generate_config_gypi.py (Shelley Vohr) #555302b561abb0d
] - build: fix GN build for sqlite and nghttp2 (Shelley Vohr) #555297008f29d79
] - build: fix GN build for cares/uv deps (Cheng) #554776ee94a394f
] - build: fix uninstall script for AIX 7.1 (Cloorc) #55438edbbd4a374
] - build: conditionally compile bundled sqlite (Richard Lau) #554093d8e3a657c
] - build: tidy up cares.gyp (Richard Lau) #55445f0c12e8fcb
] - build: synchronize list of c-ares source files (Richard Lau) #554458daa8a62f8
] - build: fix path concatenation (Mohammed Keyvanzadeh) #5538712faf0466e
] - build: fix make errors that occur in Makefile (minkyu_kim) #55287a21be0294d
] - build,win: enable pch for clang-cl (Stefan Stojanovic) #552497ed058cd00
] - cli: add--heap-prof
flag available toNODE_OPTIONS
(Juan José) #54259c26b1bfe6a
] - crypto: allow length=0 for HKDF and PBKDF2 in SubtleCrypto.deriveBits (Filip Skokan) #55866a1201d0392
] - crypto: update root certificates to NSS 3.104 (Richard Lau) #5568120483aab7a
] - crypto: fixRSA_PKCS1_PADDING
error message (Richard Lau) #55629d345662d50
] - crypto: include openssl/rand.h explicitly (Shelley Vohr) #55425166ab3209d
] - deps: update simdutf to 5.6.1 (Node.js GitHub Bot) #55850934979e12e
] - deps: update undici to 6.21.0 (Node.js GitHub Bot) #55851af77f66424
] - deps: update c-ares to v1.34.3 (Node.js GitHub Bot) #55803948a88d2f4
] - deps: update icu to 76.1 (Node.js GitHub Bot) #55551fa4c58a983
] - deps: update acorn to 8.14.0 (Node.js GitHub Bot) #55699c91155f22e
] - deps: update sqlite to 3.47.0 (Node.js GitHub Bot) #55557d1cb7af95c
] - deps: update amaro to 0.2.0 (Node.js GitHub Bot) #55601655e5600cb
] - deps: update nghttp2 to 1.64.0 (Node.js GitHub Bot) #55559992450c469
] - deps: update acorn to 8.13.0 (Node.js GitHub Bot) #55558abd2bd4f64
] - deps: update undici to 6.20.1 (Node.js GitHub Bot) #555037dc2c2edad
] - deps: update googletest todf1544b
(Node.js GitHub Bot) #55465fa9329c024
] - deps: update c-ares to v1.34.2 (Node.js GitHub Bot) #5546341a2bcd335
] - deps: update ada to 2.9.1 (Node.js GitHub Bot) #54679a3b793defd
] - deps: update simdutf to 5.6.0 (Node.js GitHub Bot) #55379551b8f897d
] - deps: update c-ares to v1.34.1 (Node.js GitHub Bot) #5536926861eaf4e
] - Revert "deps: disable io_uring support in libuv by default" (Santiago Gimeno) #5511441c50bc15e
] - deps: update libuv to 1.49.1 (Santiago Gimeno) #5511426fcc04084
] - deps: update amaro to 0.1.9 (Node.js GitHub Bot) #553480ee6715921
] - diagnostics_channel: fix unsubscribe during publish (simon-id) #55116bf68733e7f
] - dns: stop using deprecatedares_query
(Aviv Keller) #55430ef6707eb9b
] - dns: honor the order option (Luigi Pinca) #553920f3810f3e5
] - doc: add added tag and fix typo sqlite.md (Bart Louwers) #56012d1bd0ef1b7
] - doc: remove non-working example (Antoine du Hamel) #55856824ac650ed
] - doc: addnode:sqlite
to mandatorynode:
prefix list (翠 / green) #55846b3ea42d887
] - doc: add-S
flag release preparation example (Antoine du Hamel) #558360bd5d8b9d9
] - doc: clarify UV_THREADPOOL_SIZE env var usage (Preveen P) #5583227b0236a99
] - doc: add notable-change mention to sec release (Rafael Gonzaga) #55830476075bada
] - doc: fix history info forURL.prototype.toJSON
(Antoine du Hamel) #558182743b7b1d3
] - doc: correct max-semi-space-size statement (Joe Bowbeer) #558123013870093
] - doc: update unflag info ofimport.meta.resolve
(skyclouds2001) #5581027bcd103e7
] - doc: run license-builder (github-actions[bot]) #5581372d4b30ead
] - doc: clarify triager role (Gireesh Punathil) #55775a30defe9dd
] - doc: clarify removal of experimental API does not require a deprecation (Antoine du Hamel) #55746ccffd3b819
] - doc: enforce strict policy to semver-major releases (Rafael Gonzaga) #55732b6d2a4e816
] - doc: add path aliases typescript doc (Carlos Espa) #55766a435affa11
] - doc: add esm example inpath.md
(Aviv Keller) #5574591443c2711
] - doc: consistent use of word child process (Gireesh Punathil) #5565483fb0079d4
] - doc: clarity to available addon options (Preveen P) #557156ca851457a
] - doc: update--max-semi-space-size
description (Joe Bowbeer) #55495e17fffc0ff
] - doc: brokenPerformanceObserver
code sample (Dom Harrington) #542278bd5777f0f
] - doc: add write flag when open file as the demo code's intention (robberfree) #54626f1e0e0ba55
] - doc: remove mention of ECDH-ES in crypto.diffieHellman (Filip Skokan) #556111d60b7ec97
] - doc: improve c++ embedder API doc (Gireesh Punathil) #55597bbf51d7000
] - doc: capitalize "MIT License" (Aviv Keller) #555750e69f6d123
] - doc: add suggested tsconfig for type stripping (Marco Ippolito) #5553467beb37f50
] - doc: add esm examples to node:string_decoder (Alfredo González) #55507acc6806900
] - doc: add jazelly to collaborators (Jason Zhang) #55531a6b3ed54ae
] - doc: changed the command used to verify SHASUMS256 (adriancuadrado) #554200ad7ca4f1d
] - doc: move dual package shipping docs to separate repo (Joyee Cheung) #55444e99a98ddfd
] - doc: add note about stdio streams in child_process (Ederin (Ed) Igharoro) #5532220302851a9
] - doc: addisBigIntObject
to documentation (leviscar) #5545050d983e80b
] - doc: remove outdated remarks abouthighWaterMark
in fs (Ian Kerins) #5546207c2fb2045
] - doc: move Danielle Adams key to old gpg keys (RafaelGSS) #5539941b045170d
] - doc: move Bryan English key to old gpg keys (RafaelGSS) #5539913724dcc20
] - doc: move Beth Griggs keys to old gpg keys (RafaelGSS) #553990230fb1ead
] - doc: spell out condition restrictions (Jan Martin) #5518766e41f044d
] - doc: add instructions for WinGet build (Hüseyin Açacak) #5535623d89da3f1
] - doc: add missing return values in buffer docs (Karl Horky) #552736e7b33a0ef
] - doc: fix ambasador markdown list (Rafael Gonzaga) #55361d8c552a060
] - doc: edit onboarding guide to clarify when mailmap addition is needed (Antoine du Hamel) #55334c7f82ec978
] - doc: fix the return type of outgoingMessage.setHeaders() (Jimmy Leung) #55290f1b9791694
] - doc: updaterequire(ESM)
history and stability status (Antoine du Hamel) #551999ffd2dd43b
] - doc: consolidate history table of CustomEvent (Edigleysson Silva (Edy)) #5575864fb9e6516
] - doc: add history entries for JSON modules stabilization (Antoine du Hamel) #55855ae2ae2fef1
] - esm: fix import.meta.resolve crash (Marco Ippolito) #5577715dd43dd6e
] - esm: add a fallback when importer in not a file (Antoine du Hamel) #55471aed758d270
] - esm: fix inconsistency withimportAssertion
inresolve
hook (Wei Zhu) #5536588d91e8bc2
] - esm: mark import attributes and JSON module as stable (Nicolò Ribaudo) #55333a2c8de7fba
] - events: add hasEventListener util for validate (Sunghoon) #552304f84cdc8a2
] - events: optimize EventTarget.addEventListener (Robert Nagy) #55312c17601557b
] - fs: prevent unwanteddependencyOwners
removal (Carlos Espa) #555654dd609c685
] - fs: fix bufferSize option for opendir recursive (Ethan Arrowood) #55744d695bd4c4f
] - fs: pass correct path toDirentFromStats
duringglob
(Aviv Keller) #550715357338b8e
] - fs: usewstring
on Windows paths (jazelly) #551710a7f301a36
] - http: add diagnostic channelhttp.server.response.created
(Marco Ippolito) #5562298bfc7dce5
] - (SEMVER-MINOR) http: add diagnostic channelhttp.client.request.created
(Marco Ippolito) #55586d2430ee363
] - http2: fix client async storage persistence (Orgad Shaneh) #55460753cbede2a
] - lib: remove startsWith/endsWith primordials for char checks (Gürgün Dayıoğlu) #554076e3e99c81e
] - lib: prefer logical assignment (Aviv Keller) #5504403902ebb74
] - lib: replacecreateDeferredPromise
util withPromise.withResolvers
(Yagiz Nizipli) #54836ee17fcd6f3
] - lib: prefer symbol to number in webidltype
function (Antoine du Hamel) #5573718f0f07e92
] - lib: implement webidl dictionary converter and use it in structuredClone (Jason Zhang) #55489bcead24e24
] - lib: prefer number to string in webidltype
function (Jason Zhang) #55489d48c5da039
] - lib: convert transfer sequence to array in js (Jason Zhang) #55317cefce4cbb0
] - lib: remove unnecessary optional chaining (Gürgün Dayıoğlu) #55728f2561fdeec
] - lib: usePromise.withResolvers()
in timers (Yagiz Nizipli) #55720337f61fb25
] - (SEMVER-MINOR) lib: add UV_UDP_REUSEPORT for udp (theanarkh) #554034f89059f63
] - lib: add flag to drop connection when running in cluster mode (theanarkh) #5492729f7325e73
] - lib: test_runner#mock:timers respeced timeout_max behaviour (BadKey) #5537568bcec64b8
] - lib: remove settled dependant signals when they are GCed (Edigleysson Silva (Edy)) #553543f8a5d8a28
] - meta: bump actions/setup-python from 5.2.0 to 5.3.0 (dependabot[bot]) #55688644ad5d60d
] - meta: bump actions/setup-node from 4.0.4 to 4.1.0 (dependabot[bot]) #55687334fa69c31
] - meta: bump rtCamp/action-slack-notify from 2.3.0 to 2.3.2 (dependabot[bot]) #55686fb3fa8bee2
] - meta: bump actions/upload-artifact from 4.4.0 to 4.4.3 (dependabot[bot]) #556851aca3a8289
] - meta: bump actions/cache from 4.0.2 to 4.1.2 (dependabot[bot]) #55684a6c73eb9c2
] - meta: bump actions/checkout from 4.2.0 to 4.2.2 (dependabot[bot]) #5568306445bc4e3
] - meta: bump github/codeql-action from 3.26.10 to 3.27.0 (dependabot[bot]) #5568237bafce2d8
] - meta: make review-wanted message minimal (Aviv Keller) #556074cca54b161
] - meta: show PR/issue title on review-wanted (Aviv Keller) #5560668decbf935
] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #5538107fc40d823
] - meta: assign CODEOWNERS for /deps/ncrypto/* (Filip Skokan) #55426139e8f1579
] - meta: change color to blue notify review-wanted (Rafael Gonzaga) #55423c0614dc92c
] - meta: bump codecov/codecov-action from 4.5.0 to 4.6.0 (dependabot[bot]) #5522247b6c6748b
] - meta: bump github/codeql-action from 3.26.6 to 3.26.10 (dependabot[bot]) #552216c836aa97e
] - meta: bump step-security/harden-runner from 2.9.1 to 2.10.1 (dependabot[bot]) #55220c81c818a21
] - module: throw ERR_NO_TYPESCRIPT when compiled without amaro (Marco Ippolito) #55332d6d1479fcc
] - module: simplify --inspect-brk handling (Joyee Cheung) #5567991fdec3a52
] - module: fix error thrown from require(esm) hitting TLA repeatedly (Joyee Cheung) #55520cb527a925d
] - module: do not warn when require(esm) comes from node_modules (Joyee Cheung) #5596016119f206f
] - module: trim off internal stack frames for require(esm) warnings (Joyee Cheung) #5549628b5b9a57d
] - module: allow ESM that failed to be required to be re-imported (Joyee Cheung) #555026ac3400960
] - module: include module information in require(esm) warning (Joyee Cheung) #55397fcdd6167d8
] - module: check --experimental-require-module separately from detection (Joyee Cheung) #55250d8c34ced43
] - module: use kNodeModulesRE to detect node_modules (Joyee Cheung) #55243545c069eb5
] - module: support 'module.exports' interop export in require(esm) (Guy Bedford) #5456358d6871c45
] - (SEMVER-MINOR) module: unflag --experimental-require-module (Joyee Cheung) #550851628c48ad6
] - (SEMVER-MINOR) net: add UV_TCP_REUSEPORT for tcp (theanarkh) #55408a5590083cd
] - node-api: add napi_create_buffer_from_arraybuffer method (Mert Can Altin) #5450521ec855feb
] - os: improve path check with direct index access (Mert Can Altin) #554341fdaa15226
] - report: fix network queries in getReport libuv with exclude-network (Adrien Foulon) #55602457e73f4c9
] - (SEMVER-MINOR) sqlite: add support for SQLite Session Extension (Bart Louwers) #54181428701a6d8
] - sqlite: improve error handling using MaybeLocal (Tobias Nießen) #555714e5878536a
] - sqlite: add readOnly option (Tobias Nießen) #555678c35ad12de
] - sqlite: refactor open options (Tobias Nießen) #55442c3c403040a
] - sqlite: cache column names in stmt.all() (Fedor Indutny) #553736858f7a4d3
] - src: use env strings to create sqlite results (Michaël Zasso) #55785db01eaf318
] - src: improvenode:os
userInfo performance (Yagiz Nizipli) #55719383d28489d
] - src: provide workaround for container-overflow (Daniel Lemire) #555913477b6b4a5
] - src: move more key related stuff to ncrypto (James M Snell) #5536838c047e38f
] - src: refactor ECDHBitsJob signature (Filip Skokan) #55610acbb62902a
] - src: fix dns crash when failed to create NodeAresTask (theanarkh) #55521547cab9433
] - src: use NewFromUtf8Literal in NODE_DEFINE_CONSTANT (Charles Kerr) #55581231fe7b953
] - src: do not run IsWindowsBatchFile on non-windows (Yagiz Nizipli) #55560bde374ee6a
] - src: remove icu basedToASCII
andToUnicode
(Yagiz Nizipli) #551566ad23e74be
] - src: fix winapi_strerror error string (Hüseyin Açacak) #5520763bc40550b
] - src: remove uv__node_patch_is_using_io_uring (Santiago Gimeno) #551142af72a7671
] - src: implement IsInsideNodeModules() in C++ (Joyee Cheung) #55286e14fb2defb
] - src,lib: optimize nodeTiming.uvMetricsInfo (RafaelGSS) #55614e14dba3ee5
] - src,lib: introduceutil.getSystemErrorMessage(err)
(Juan José) #540758f59c41d52
] - stream: propagate AbortSignal reason (Marvin ROGER) #554737acb96362c
] - test: increase coverage ofpathToFileURL
(Antoine du Hamel) #554935861135ddb
] - test: improve test coverage for child process message sending (Juan José) #55710554d4ace2f
] - test: ensure that test priority is not higher than current priority (Livia Medeiros) #55739b0ce62a9bd
] - test: add buffer to fs_permission tests (Rafael Gonzaga) #557349d9ad81d54
] - test: improve test coverage forServerResponse
(Juan José) #55711273f84e01c
] - test: updateperformance-timeline
wpt (RedYetiDev) #5519789c9c46185
] - test: ignore unrelated events in FW watch tests (Carlos Espa) #55605fc69080669
] - test: refactor some esm tests (Antoine du Hamel) #55472a80c166733
] - test: split up test-runner-mock-timers test (Julian Gassner) #555068c2fc11f7c
] - test: remove unneeded listeners (Luigi Pinca) #554861c5872dbde
] - test: avoidapply()
calls with large amount of elements (Livia Medeiros) #555012194eb4909
] - test: increase test coverage forhttp.OutgoingMessage.appendHeader()
(Juan José) #55467ad7e81379a
] - test: make test-node-output-v8-warning more flexible (Shelley Vohr) #554016aeeaa719b
] - test: fix addons and node-api test assumptions (Antoine du Hamel) #5544173ab14fd8f
] - test: update wpt test for webmessaging/broadcastchannel (devstone) #55205ded1b68d10
] - test: deflaketest-cluster-shared-handle-bind-privileged-port
(Aviv Keller) #553780e873c3031
] - test: updateconsole
wpt (Aviv Keller) #55192832300533b
] - test: remove duplicate tests (Luigi Pinca) #55393310a734c1b
] - test: update test_util.cc for coverage (minkyu_kim) #55291254badd480
] - test: updatecompression
wpt (Aviv Keller) #55191c52a808ac9
] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #55703445d117b67
] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #55512cd0d748ede
] - test,crypto: make crypto tests work with BoringSSL (Shelley Vohr) #554918bac7c27c8
] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #55427363e7d5a76
] - test_runner: error on mocking an already mocked date (Aviv Keller) #55858f41d329e98
] - test_runner: add support for scheduler.wait on mock timers (Erick Wendel) #55244b9200c33ae
] - test_runner: require--enable-source-maps
for sourcemap coverage (Aviv Keller) #55359f11d93d8ef
] - tools: enforce ordering of error codes inerrors.md
(Antoine du Hamel) #5532485ca31a90a
] - tools: bump @eslint/plugin-kit from 0.2.0 to 0.2.3 in /tools/eslint (dependabot[bot]) #55875506aac567b
] - tools: fix exclude labels for commit-queue (Richard Lau) #5580914ffac9995
] - tools: make commit-queue check blocked label (Marco Ippolito) #55781eb22ec87e6
] - tools: remove non-existent file from eslint config (Aviv Keller) #557725844565fb2
] - tools: fix c-ares updater script for Node.js 18 (Richard Lau) #557170a79ebd257
] - tools: update ESLint to 9.14.0 (dependabot[bot]) #5568912543d560a
] - tools: useutil.parseArgs
inlint-md
(Aviv Keller) #55694d95aa244c2
] - tools: fix root certificate updater (Richard Lau) #556813626891f8e
] - tools: compact jq output in daily-wpt-fyi.yml action (Filip Skokan) #5569502c902e68a
] - tools: run daily WPT.fyi report on all supported releases (Filip Skokan) #55619456b02351b
] - tools: lint README lists more strictly (Antoine du Hamel) #5562583a5983c7d
] - tools: update lint-md-dependencies (Node.js GitHub Bot) #5547072b4a8df6a
] - tools: update gyp-next to 0.18.3 (Node.js GitHub Bot) #554646b6e6a5590
] - tools: add script to synch c-ares source lists (Richard Lau) #55445a6c444291b
] - tools: fix typos (Nathan Baulch) #55061d5e915ba5d
] - tools: addpolyfilled
option toprefer-primordials
rule (Antoine du Hamel) #55318c8e7f767b7
] - typings: add missing type ofArrayBufferPrototypeGetByteLength
(Wuli Zuo) #554396317f77942
] - url: refactorpathToFileURL
to native (Antoine du Hamel) #554765418d40256
] - url: handle "unsafe" characters properly inpathToFileURL
(Antoine du Hamel) #54545fce8c32c19
] - util: do not mark experimental feature as deprecated (Antoine du Hamel) #55740940d22ffe1
] - (SEMVER-MINOR) util: fix util.getCallSites plurality (Chengzhong Wu) #5562642ac0c2af3
] - util: do not catch on circular@@​toStringTag
errors (Aviv Keller) #55544v22.11.0
: 2024-10-29, Version 22.11.0 'Jod' (LTS), @richardlauCompare Source
Notable Changes
This release marks the transition of Node.js 22.x into Long Term Support (LTS)
with the codename 'Jod'. The 22.x release line now moves into "Active LTS"
and will remain so until October 2025. After that time, it will move into
"Maintenance" until end of life in April 2027.
Other than updating metadata, such as the
process.release
object, to reflectthat the release is LTS, no further changes from Node.js 22.10.0 are included.
OpenSSL 3.x
Official binaries for Node.js 22.x currently include OpenSSL 3.0.x (more
specifically, the quictls OpenSSL fork).
OpenSSL 3.0.x is the currently designated long term support version that is
scheduled to be supported until 7th September 2026, which is within the expected
lifetime of Node.js 22.x. We are expecting upstream OpenSSL to announce a
successor long term support version prior to that date and since OpenSSL now
follows a semantic versioning-like versioning scheme we expect to be able to
update to the next long term supported version of OpenSSL during the lifetime of
Node.js 22.x.
v22.10.0
: 2024-10-16, Version 22.10.0 (Current), @aduh95Compare Source
Notable Changes
New
"module-sync"
exports conditionThis release introduces a
"module-sync"
exports condition that's enabled whenrequire(esm)
is enabled, so packages can supply a synchronous ES module to theNode.js module loader, no matter if it's being required or imported. This is
similar to the
"module"
condition that bundlers have been using to supportrequire(esm)
in Node.js, and allows dual-package authors to opt into ESM-firstonly on newer versions of Node.js that supports
require(esm)
to avoid thedual-package hazard.
Or if the package is only meant to be run on Node.js and wants to fallback to
CJS on older versions that don't have
require(esm)
:For package authors: this only serves as a feature-detection mechanism for
packages that wish to support both CJS and ESM users during the period when some
active Node.js LTS versions support
require(esm)
while some older ones don't.When all active Node.js LTS lines support
require(esm)
, packages can simplifytheir distributions by bumping the major version, dropping their CJS exports,
and removing the
module-sync
exports condition (with onlymain
ordefault
targetting the ESM exports). If the package needs to support both bundlers and
being run unbundled on Node.js during the transition period, use both
module-sync
andmodule
and point them to the same ESM file. If the packagealready doesn't want to support older versions of Node.js that doesn't support
require(esm)
, don't use this export condition.For bundlers/tools: they should avoid implementing this stop-gap condition.
Most existing bundlers implement the de-facto bundler standard
module
exports condition, and that should be enough to support users who want to bundle
ESM from CJS consumers. Users who want both bundlers and Node.js to recognize
the ESM exports can use both
module
/module-sync
conditions during thetransition period, and can drop
module-sync
+module
when they no longer needto support older versions of Node.js. If tools do want to support this
condition, it's recommended to make the resolution rules in the graph pointed by
this condition match the Node.js native ESM rules to avoid divergence.
We ended up implementing a condition with a different name instead of reusing
"module"
, because existing code in the ecosystem using the"module"
condition sometimes also expect the module resolution for these ESM files to
work in CJS style, which is supported by bundlers, but the native Node.js loa
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Hywax Assistant.