tech_surveillance3689 wordsRead on Arc Codex

Node.js 24.21.0 (LTS)

Node.js 24.21.0 (LTS) Antoine du Hamel 2026-09-08, Version 24.21.0 'Krypton' (LTS), @aduh95 Notable Changes - [ 71106e1f17 ] - crypto: update root certificates to NSS 3.126 (Node.js GitHub Bot) #65495 - [ afca0a912d ] - (SEMVER-MINOR) crypto: support loading private keys through STORE loaders (Filip Skokan) #63949 - [ 6274fccbd9 ] - deps: update OpenSSL to 3.5.8 (Node.js GitHub Bot) #65542 - [ 53cba013c7 ] - deps: update Undici to 7.29.1 (Node.js GitHub Bot) #65789 - [ 0529772798 ] - (SEMVER-MINOR) lib,src: improve histogram implementation (James M Snell) #65024 - [ 41c7062b81 ] - (SEMVER-MINOR) net: improve performance ofnet.BlockList (James M Snell) #64974 - [ 5197b5a3c5 ] - (SEMVER-MINOR) perf_hooks: add statistical hypothesis testing to histogram (James M Snell) #65416 - [ 35c635b032 ] - (SEMVER-MINOR) util: add non-throwingMIMEType.parse (James M Snell) #64965 Commits - [ 84d706cb9b ] - assert: improve documentation wording (Kamal Rawal) #64953 - [ 90d127db33 ] - (SEMVER-MINOR) benchmark: add --analyze mode to compare.js (James M Snell) #65416 - [ ad1d7884c3 ] - benchmark: add test-only and mock timers cases (Luan Muniz) #64097 - [ 1d8f045914 ] - benchmark: applyhighWaterMark in webstreamspipe-to (Matteo Collina) #65138 - [ ed7ba3c993 ] - benchmark: complete the sqlite is-transaction fix (Edy Silva) #65218 - [ c8837e1aa3 ] - benchmark: add test runner hooks and options (Luan Muniz) #63754 - [ 2ba8661e23 ] - buffer: prevent string write offset overflow (Matteo Collina) #65043 - [ cc9ee6c2ae ] - buffer: treat detached ArrayBuffers as empty (Archkon) #64504 - [ 5a5d73e4c5 ] - build: pass target architecture to small-icu genccode (ulofiai) #65095 - [ 273e72d1a5 ] - build: deprecate always enabled--enable-static (Chengzhong Wu) #65103 - [ 89a67246e3 ] - build: check FIPS option value in node.gyp (Filip Skokan) #64982 - [ 2d21f41cd5 ] - build: handle malformed OpenSSL macros (Filip Skokan) #64982 - [ f62bc0f862 ] - build,win: add PGO workload scripts (Stefan Stojanovic) #63696 - [ 33d0c7dc12 ] - child_process: keep SIGWINCH from killing on Win (Kirill Saied) #64510 - [ 71106e1f17 ] - crypto: update root certificates to NSS 3.126 (Node.js GitHub Bot) #65495 - [ 419af8b86d ] - crypto: fix missing error checks on ASN1_STRING_to_UTF8() (Nora Dossche) #65200 - [ 8029383f3f ] - crypto: use available BoringSSL APIs (Filip Skokan) #65423 - [ a9bd780e19 ] - crypto: remove obsolete BoringSSL shims (Filip Skokan) #65423 - [ 7defefad3f ] - crypto: read WebCrypto inputs through primordials (Filip Skokan) #65115 - [ 6ed1e38627 ] - crypto: fix disabling FIPS mode (Filip Skokan) #64982 - [ afca0a912d ] - (SEMVER-MINOR) crypto: support loading private keys through STORE loaders (Filip Skokan) #63949 - [ 9b9dd6e9cf ] - debugger: wait for target startup (Filip Skokan) #65194 - [ 07faaeeffd ] - deps: update corepack to 0.36.0 (Node.js GitHub Bot) #65653 - [ 53cba013c7 ] - deps: update undici to 7.29.1 (Node.js GitHub Bot) #65789 - [ 0268ca547c ] - deps: update archs files for openssl-3.5.8 (Node.js GitHub Bot) #65542 - [ 6274fccbd9 ] - deps: upgrade openssl sources to openssl-3.5.8 (Node.js GitHub Bot) #65542 - [ 6bdcd121fa ] - deps: update zlib to 1.3.2.1-motley-8002e91 (Node.js GitHub Bot) #65316 - [ c2aa446b6d ] - deps: update simdjson to 4.6.7 (Node.js GitHub Bot) #65318 - [ 3e58e48ea8 ] - deps: update googletest to 49495eacfdbda3f4b6ba219923fedbb2e3f99376 (Node.js GitHub Bot) #65317 - [ 670b3665c0 ] - deps: cherry-pick libuv/libuv@e640dc9 (ulofiai) #65118 - [ ca1c67b021 ] - deps: float ICU-23262 patch for icu78 (René) #64678 - [ 4ad043b0aa ] - deps: enable AVX-512 OpenSSL asm with clang (Daniel Lemire) #65136 - [ 96b4af109b ] - deps: update googletest to d89aac5f0dd4021198d903d39de16f896726de21 (Node.js GitHub Bot) #65153 - [ 774f663c56 ] - dgram: don't swallow bind errors when callback is provided (armanmikoyan) #62602 - [ 94b118d62e ] - diagnostics_channel: validate before channel activation (Trivikram Kamat) #65313 - [ 09788665bd ] - dns: validate address type in lookupService (Lazizbek Ergashev) #64878 - [ 15f95fc0e2 ] - dns: validate port range insetServers() (René) #65021 - [ 37b9e9a154 ] - dns: fix crash on setServers with port 0 (Lazizbek Ergashev) #65009 - [ cd6205fa0d ] - doc: update AHAFS reference link (Taeuk Ha) #65481 - [ 0e6f9ae42e ] - doc: fix property names in os.networkInterfaces() example (Jihwan) #65469 - [ 034a827b41 ] - doc: fix broken links in cli.md (Donghoon Kang) #65412 - [ eb364621d4 ] - doc: remove outdated WASI version fallback (이혜미) #65303 - [ b13f425bf8 ] - doc: fix broken GYP link in n-api.md (Donghoon Kang) #65413 - [ 45c4011067 ] - doc: document that an empty OPENSSL_CONF skips config loading (Orgad Shaneh) #64949 - [ fde6776c5f ] - doc: fix broken TLS security level example (soreavis) #65391 - [ 290c1fec04 ] - doc: clarify socket destroyed behavior (Dayun) #65395 - [ a7e8269947 ] - doc: update outdated nodejs.org guide links (Donghoon Kang) #65394 - [ 7809f11249 ] - doc: clarify that ipv4 mapped to ipv6 are classified as ipv6 (Vedant Kulkarni) #62117 - [ 64cd3a6e95 ] - doc: clarify how fs.Dirent file types are determined (soreavis) #64532 - [ 9b92fdce14 ] - doc: update security release prepare command (Rafael Gonzaga) #64699 - [ 6f9b9df3c1 ] - doc: clarify copyFile symlink behavior (T) #62941 - [ 2480acb550 ] - doc: document setRawMode write access on Windows (Erik Demaine) #63856 - [ a1e9c3a5db ] - doc: add missing return types in fs.md (Chaseton Collins) #65307 - [ 4533572040 ] - doc: add missing return types in buffer.md (Yuya Inoue) #65308 - [ 39ecedbbd2 ] - doc: fix lint clean command (greenhead) #65274 - [ 0b1fb8fcd8 ] - doc: fix typo in onboarding.md (서울민트초코) #65295 - [ 3165b5d38a ] - doc: add missingadded: tags tofs.lchmod (Lazizbek Ergashev) #65283 - [ 113b808e59 ] - doc: fix SQLite changeset constant descriptions (greenhead) #65265 - [ c3eb51d5a1 ] - doc: document open pull request limit (Matteo Collina) #65250 - [ d7accdcd52 ] - doc: document http2 header constants (Harjoth Khara) #64548 - [ f47111416f ] - doc: create ai-guidelines and include to CONTRIBUTING (Rafael Gonzaga) #62105 - [ c3b120e737 ] - doc: update synopsis (Augustin Mauroy) #65171 - [ 39f4c831fd ] - doc: fix broken internal links (greenhead) #64901 - [ be25cdd69e ] - doc: report proper return type on urlPattern.test (Brian Muenzenmeyer) #64831 - [ 1bf7737810 ] - doc: fix permission documentation examples (greenhead) #64897 - [ b7932e68a1 ] - doc: document sqlite parameter binding (Guilherme Araújo) #65089 - [ 5234a5169c ] - doc: finalize statements in sqlite examples (Guilherme Araújo) #65088 - [ 39ea929da7 ] - doc: document quic stopSending() and resetStream() (Issac) #64888 - [ 2ba198db73 ] - doc: clarify sqlite bare parameter default (Sumit Kumar Das) #62009 - [ 314f9b200f ] - doc: remove usage ofutil.inherits (Augustin Mauroy) #60817 - [ d82a61662c ] - doc: fix grammar in worker_threads.md (이혜미) #64913 - [ 44c0c8ff5b ] - doc: clarify OpenSSL FIPS configuration (Filip Skokan) #64982 - [ 9b2ca70e0d ] - doc: remove--expose-gc flag from CLI documentation (Dario Piotrowicz) #58909 - [ a0a12397b9 ] - doc: document ArrayBuffer support in pbkd2Sync (kyungrae2002) #64976 - [ b48699e077 ] - doc: correct default highWaterMark values (Yilong Li) #64617 - [ 0312ee133c ] - esm: avoid super-linear data URL MIME regex (Sumit Kumar Das) #61951 - [ cd84d55c81 ] - esm: only register text format when enabled (Efe Karasakal) #64992 - [ c0a8ef611e ] - esm: fix wasm import name in error message (이혜미) #64950 - [ e6c34f90c2 ] - events: inline iterationCondition hybrid dispatch closure (Szymon Łągiewka) #64473 - [ 6ee4b40c91 ] - events: inline createEvent hybrid dispatch closure (Szymon Łągiewka) #64473 - [ 367549eed5 ] - fs: use sized reads for large files in readFileUtf8 (Shelley Vohr) #65328 - [ 8a5b1ae4c2 ] - fs: fix realpath of namespaced drive paths (Jason Zhang) #65378 - [ c9233b950d ] - fs: fix glob early return skipping sibling entries (Srinu desetti) #64895 - [ bc54dd8905 ] - fs: pass symlink type in cp when filter is provided (Jerry Zhao) #62654 - [ fcb4333aca ] - fs: allocate FSReqPromise stat arrays lazily (Samuel Attard) #63886 - [ c35876154e ] - fs: fix out-of-bounds write in mkdtemp for long prefixes (Hierax_Umbra) #64770 - [ b269616936 ] - fs: treatstd::errc::permission_denied asEPERM error (Kirill Saied) #64698 - [ 212fe77e76 ] - fs: add windowsHandle option to file streams (Kirill Saied) #63851 - [ 75df6cb435 ] - http: improve performance with known-length calls to end() (Tim Perry) #65466 - [ 48d9cd4a28 ] - http: cache maxHeaderPairs per header section (GetThatCookie) #64988 - [ 04785c8f43 ] - http: fix keylog listener setup on existing agent sockets (Shani Singh) #65066 - [ 4b90031534 ] - http: emit drain on socket takeover and avoid stale HWM reuse (Naman Trivedi) #64991 - [ 83a27559cd ] - http2: adapt receive deferral for Node.js 24 (Matteo Collina) #65093 - [ f43bed0ecc ] - http2: avoid uaf while receiving and sending rst_stream (esgor) #64166 - [ b42d664321 ] - inspector: avoid calling into JS from V8 interrupts (Joyee Cheung) #65028 - [ 6bf852197d ] - lib: use bracket notation instead of startsWith/endsWith for single char (Taejin Kim) #61500 - [ 151ca7e104 ] - lib: harden webidl dictionary member reads (Filip Skokan) #65115 - [ 7e8c2c9f44 ] - lib: use validateArray for array arguments (greenhead) #64959 - [ 424fe2bc5a ] - lib: add and test [EnforceRange] in webcrypto dictionaries (Filip Skokan) #65091 - [ 0529772798 ] - (SEMVER-MINOR) lib,src: improve histogram implementation (James M Snell) #65024 - [ 186e1b76e8 ] - meta: move targos to emeritus (Michaël Zasso) #65393 - [ b41b07c72a ] - meta: add unified http api initiative (James M Snell) #65139 - [ f85b6ecd67 ] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #65182 - [ 8f3d01bdce ] - meta: add Aviv Keller to.mailmap (Aviv Keller) #65048 - [ cfad1d5b28 ] - meta: update sccache to 0.17.0 (René) #64985 - [ 349c53c441 ] - module: report unreadable package.json (Paul Bouchon) #65223 - [ bd21e6706e ] - module: cache nearest parent package.json per directory (Shelley Vohr) #65326 - [ 961bd04370 ] - module: fix --check on ambiguous ESM files (Paul Bouchon) #65203 - [ f45ef73420 ] - net: handle undefined parent in _unrefTimer and _destroy (Shivay-98) #64644 - [ 41c7062b81 ] - (SEMVER-MINOR) net: improve performance of net.BlockList (James M Snell) #64974 - [ 5197b5a3c5 ] - (SEMVER-MINOR) perf_hooks: add statistical hypothesis testing to histogram (James M Snell) #65416 - [ 1722ddac28 ] - permission: enforce addon permission in GetLinkedBinding (Rafael Gonzaga) #65432 - [ dff2b675db ] - process: validate resource stats array offsets (Archkon) #65098 - [ f277983e7b ] - quic: changes for nghttp3_conn_close_stream2 (Marten Richter) #64574 - [ a4c770c78e ] - quic: mark drain promise handled (James M Snell) #65319 - [ 2460b171c5 ] - quic: reset rejected HTTP/3 request streams with H3_REQUEST_REJECTED (trivenay) #65442 - [ 18a7ccf302 ] - quic: write desired size needs update on maxstream (Marten Richter) #64768 - [ 9017f4a780 ] - quic: do not destroy incoming streams that have a consumer (trivenay) #65335 - [ ddc41c1ef4 ] - quic: fix wake up blob (Marten Richter) #64044 - [ 88bee43d7c ] - quic: convert incoming :status header to number (Hallison Pereira Melo) #63589 - [ cd776fe97c ] - quic: fix infinite loop if STOP_SENDING received on a buffering stream (Tim Perry) #64715 - [ 4f6eda3c23 ] - repl: keep entries added while history file is loading (Mhayk Whandson) #64513 - [ cd1e6ce29b ] - repl: add benchmarks (Aviv Keller) #64590 - [ 2ba740669d ] - sea: avoid dangling CLI option pointers (Archkon) #64755 - [ ec5e2d6856 ] - sea: handle NUL bytes in asset keys (Archkon) #64773 - [ 703b854293 ] - sea: reject trailing content in config JSON (Archkon) #64774 - [ a61a5fdd1c ] - sqlite: prevent reentrant session.close() (Trivikram Kamat) #65349 - [ 6ae81be0a3 ] - sqlite: reject statement-less SQL in prepare() (Trevor Burnham) #65157 - [ 043dfe4996 ] - sqlite: reject statement-less SQL in SQLTagStore (Trevor Burnham) #65157 - [ b8faee02e1 ] - sqlite: check null returns from sqlite value functions (Nora Dossche) #63288 - [ d6d2a71bee ] - sqlite: validate maxSize argument in createTagStore() (Anshika Jain) #63792 - [ 61a046309f ] - sqlite: reject non-positive backup rates (Trivikram Kamat) #64893 - [ 514e3f30fb ] - sqlite: clear SQLTagStore bindings (Matteo Collina) #65041 - [ c1542255b8 ] - sqlite: bind Boolean (mike-git374) #62001 - [ cdb732beb5 ] - sqlite: fix undefined behaviour inSession::Changeset() (Nora Dossche) #63637 - [ fbe8861111 ] - sqlite: bind ArrayBuffer (mike-git374) #62061 - [ e3c6bd6bc8 ] - src: add missing vector include (Filip Skokan) #65622 - [ 793cf69df8 ] - src: fix heap value deduplication in embedder graph (Ilyas Shabi) #64801 - [ ea5935b04c ] - src: fix out-of-bounds write when transcoding odd-length ucs2 (nashit hayat) #64512 - [ 22e5023f4d ] - src: escape Windows environment variables in task runner (Antoine du Hamel) #65217 - [ a0f3c62bd9 ] - src: simplify c++ diagnostics channel API (James M Snell) #65158 - [ 8e831a3d2e ] - src: make minor cleanup to permission checks (James M Snell) #65158 - [ 968b2ca3a3 ] - src: use DictionaryTemplate for permission diag channel message (James M Snell) #65158 - [ 18e16e7f8d ] - src: cache permission strings (James M Snell) #65158 - [ c8625a4b6f ] - src: add SetAbortHandler (Max H Fisher) #64684 - [ c990140d60 ] - src: match cmd.exe case-insensitively in task runner (Archkon) #64907 - [ d7463b9dbc ] - src: reuse cached env strings in remaining files (Seongeun Lee) #65039 - [ b055a43b93 ] - src: expose Windows-only fs open flags (Kirill Saied) #64775 - [ 7f21e37496 ] - src: report why --enable-fips failed (Filip Skokan) #64979 - [ 8c11beae27 ] - src: update repeated use strings to env (James M Snell) #64760 - [ 9e2c477e26 ] - stream: normalize fused stateless transform results (Trivikram Kamat) #65367 - [ 107e96dd41 ] - stream: encode whole chunks in TextEncoderStream (Matteo Collina) #65414 - [ 164068279b ] - stream: prevent share from eagerly draining source (Trivikram Kamat) #65338 - [ 93d822bdc1 ] - stream: drain pending writes before broadcast end (Trivikram Kamat) #65334 - [ 6b8b9c362f ] - stream: reuse unexposed managed read buffers (GetThatCookie) #64990 - [ 4ec4fab367 ] - stream: avoid duplicated endReadableNT scheduling (Matteo Collina) #65310 - [ 86d1196ebf ] - stream: decouple transform backpressure changes (Matteo Collina) #65143 - [ b8a7a75b19 ] - stream: reject pull on signal abort during flush (Trivikram Kamat) #65346 - [ 386ed6a06d ] - stream: avoid leaking consumers on signal failure (Trivikram Kamat) #65299 - [ 74d53bd73b ] - stream: use validateObject for zlib/iter params (greenhead) #65015 - [ 3a174ce16b ] - stream: use validateNumber for BYOB reader options.min (greenhead) #65014 - [ 859ea01cb2 ] - stream: consolidate non-op algorithm callbacks (Matteo Collina) #65138 - [ c577669825 ] - stream: cut promise churn in webstreams hot paths (Matteo Collina) #65138 - [ d631e910db ] - stream: preserve falsy cancellation reasons (Trivikram Kamat) #64705 - [ f9c21eabbd ] - stream: use validateBuffer for BYOB reader view (greenhead) #65046 - [ b89c8f5d1e ] - stream: fix recursive WritableStream abort (Jeong SeokChan) #64825 - [ 39e0457e86 ] - test: fix link-local dgram scope assertion (Filip Skokan) #65629 - [ 1433cf9d5b ] - test: account for varied OpenSSL CCM final behaviours (Filip Skokan) #65542 - [ 7d135d24b7 ] - test: convert forEach to for of test-messageevent-brandcheck file (Nachiketa Pathak) #65279 - [ 421ee11715 ] - test: use spawnSyncAndAssert in windowsHide test (Junsoo Ha) #65351 - [ 929d5705bc ] - test: remove test-debugger-run-after-quit-restart as flaky on macOS (Yuya Inoue) #65424 - [ f38f154c14 ] - test: simplify test-timers-interval-promisified.js (Donghoon Kang) #65322 - [ a98e27f2a9 ] - test: add Headers coverage and benchmark (Yagiz Nizipli) #65365 - [ 38fdbb62aa ] - test: deflake test-net-listen-ipv6only (sangwook) #64173 - [ 06c7684b01 ] - test: use common/child_process spawnSync helpers (Junsoo Ha) #65377 - [ 6438c70004 ] - test: fix Linux debug skip in SEA test guard (구현우) #63751 - [ fe0e4f1b65 ] - test: avoid timer race in event loop delay test (Trivikram Kamat) #64728 - [ 6ff69baea8 ] - test: enforce exit code intest-http-server-stale-close (Antoine du Hamel) #65198 - [ ba87603016 ] - test: convert test-async-local-storage-bind to async loop (freida-code) #65270 - [ 8d6b89f454 ] - test: replaceforEach() withfor...of in parallel tests (Phillip Markert) #65272 - [ a60572a7bb ] - test: convert forEach to for in test-constant.js file (NIxxy25) #65271 - [ f82060c6ce ] - test: use for-of instead of forEach (Felix P.) #65268 - [ 5ded71f9cc ] - test: coverrealpathSync resolving symlinks after a FIFO stat (Hendrik Liebau) #65113 - [ ac9835225e ] - test: account for [EnforceRange] in test-webcrypto-prototype-pollution (Filip Skokan) #65173 - [ 550d24277e ] - test: update WPT for WebCryptoAPI to 4c2fd05ed5 (Node.js GitHub Bot) #65150 - [ 2aa26559f0 ] - test: update WPT for urlpattern to 4832db4761 (Node.js GitHub Bot) #65151 - [ d45c010108 ] - test: fix hidden error in test-http-server-stale-close.js (Meghan Denny) #59357 - [ 881f8d092d ] - test: avoid deadlock issue in pipeline http2 tests to fix flakiness (Tim Perry) #65079 - [ e4b1e3ee75 ] - test: allow half-open CONNECT tunnel sockets (Trivikram Kamat) #64973 - [ 00f4240d48 ] - test: update passphrases to comply with the next OpenSSL FIPS mode (Filip Skokan) #65077 - [ cf7680efb7 ] - test: use libuv clock for immediate queue test (Trivikram Kamat) #64889 - [ b0c12772ff ] - test: increase timeout in probe-failure-hang-during-evaluate (Joyee Cheung) #64719 - [ 7e279104b4 ] - test: update WPT for WebCryptoAPI to 82c3d9069c (Node.js GitHub Bot) #64977 - [ ac11f88d16 ] - test,doc: cover and document multi-byte offset/size in randomFill (kyungrae2002) #64834 - [ 67da38cada ] - test_runner: match dotfiles in default coverage exclude (semimikoh) #63401 - [ b06c61a08f ] - test_runner: print coverage and diagnostic info with dot reporter (mag123c) #61423 - [ 7cb9c9c126 ] - test_runner: use run options with isolation="none" (Sylvester Keil) #62269 - [ 339acf4201 ] - test_runner: mock dual-package with conditional exports (Maruthan G) #62943 - [ e7a68bca08 ] - test_runner: add classname hierarchy for JUnit reporter (mag123c) #60220 - [ 6a248acefe ] - test_runner: fix junit report on empty diagnostic (Lazizbek Ergashev) #65357 - [ d01dda79b6 ] - test_runner: do not tag-filter test file wrappers (Chemi Atlow) #65170 - [ 32ead10ddd ] - test_runner: fix env option validation (Jihwan) #64865 - [ b0ef155440 ] - tls: throw on invalid ALPNProtocols instead of aborting (Sankalp Thakur) #65076 - [ dcf65c50ce ] - tls: fix authorized state on no-cert TLS1.3 client cert resumption (Tim Perry) #64677 - [ b0f54bda78 ] - tools: improve commit queue failure comment (Filip Skokan) #65433 - [ bc1f2718d5 ] - tools: fix max body length handler increate-release-proposal.sh (Antoine du Hamel) #65455 - [ bbe76516a9 ] - tools: bump brace-expansion in/tools/clang-format (dependabot[bot]) #64984 - [ 67697debdf ] - tools: make env variables consistent in cron jobs (Antoine du Hamel) #65168 - [ ac8a68ec92 ] - tools: only include fast-tracked and old enough PRs in CQ (Antoine du Hamel) #65197 - [ 6d9999fa2e ] - tools: remove skip logic incommit-queue.sh (Antoine du Hamel) #65162 - [ 60bfa1694e ] - tools: bump js-yaml from 4.2.0 to 4.3.1 in /tools/lint-md (dependabot[bot]) #65129 - [ 782748527e ] - tools: bump js-yaml from 4.2.0 to 4.3.1 in /tools/eslint (dependabot[bot]) #65130 - [ dac257340f ] - tools: fix GITHUB_TOKEN permissions for CQ workflow (Antoine du Hamel) #65192 - [ e624785846 ] - tools: use the read-only token when filtering PRs in CQ (Antoine du Hamel) #65169 - [ 7d9dcfaaa7 ] - tools: delay removal ofcommit-queue label (Antoine du Hamel) #65101 - [ 0d7c7936e7 ] - tools: move ncu config to global for commit queue (Filip Skokan) #65132 - [ 5e1db5a38a ] - tools: prefilter commit queue metadata (Filip Skokan) #64343 - [ f41509b91d ] - tools: lazy-abort failed PR merges in CQ (Antoine du Hamel) #65004 - [ ceb0e99acd ] - tools: sync mk-ca-bundle.pl with curl (Archkon) #64753 - [ 600663b23f ] - tty: add raw-vt and io raw modes (Samuel Williams) #64140 - [ a40bfc742e ] - typings: add signal_wrap internal binding types (Seongeun Lee) #65229 - [ b103a4a3b9 ] - typings: add diagnostics_channel typings (Seongeun Lee) #65227 - [ e64de34b89 ] - typings: add watchdog internal binding types (Seongeun Lee) #65228 - [ c57c83b4d1 ] - typings: add internal_only_v8 binding typeis (Donghoon Kang) #65071 - [ f15e8c9dcd ] - typings: add credentials internal binding types (Donghoon Kang) #65036 - [ a500256b0b ] - url: skip unused href reuse comparison (Yagiz Nizipli) #65361 - [ 58390f8bec ] - url: speed up WHATWG URL parsing (Yagiz Nizipli) #65361 - [ 7d5428c812 ] - url: speed up URLSearchParams (Yagiz Nizipli) #65363 - [ 8e2461d819 ] - url: bounds-check short Windows file URL paths (Archkon) #64788 - [ 9ffc0da90c ] - url: handle unparsable serialized URLs in setters (Matteo Collina) #64651 - [ fa9d4e075d ] - util: allow single-line format when break length is infinite (Hamid Reza Ghavami) #64238 - [ b68a7c3862 ] - util: fix OSC 8 hyperlink stripping in stripVTControlCharacters (Dushyant Singh Hada) #64319 - [ 10cbb6dc00 ] - util: fix formatting of functions returned from getters (Richard Gibson) #64839 - [ 64c20b449e ] - util: use more primordials incomparisons.js (Ayoub Mabrouk) #61198 - [ cea9786de8 ] - util: preserve function names without source map names (Hiroki Osame) #65108 - [ 35c635b032 ] - (SEMVER-MINOR) util: add non-throwing MIMEType.parse (James M Snell) #64965 - [ 5858c2ba9a ] - zlib: validate pledgedSrcSize for sync zstd (Archkon) #64601 Windows 64-bit Installer: https://nodejs.org/dist/v24.21.0/node-v24.21.0-x64.msi Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.21.0/node-v24.21.0-arm64.msi Windows 64-bit Binary: https://nodejs.org/dist/v24.21.0/win-x64/node.exe Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.21.0/win-arm64/node.exe macOS 64-bit Installer: https://nodejs.org/dist/v24.21.0/node-v24.21.0.pkg macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.21.0/node-v24.21.0-darwin-arm64.tar.gz macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.21.0/node-v24.21.0-darwin-x64.tar.gz Linux 64-bit Binary: https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-x64.tar.xz Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-ppc64le.tar.xz Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-s390x.tar.xz AIX 64-bit Binary: https://nodejs.org/dist/v24.21.0/node-v24.21.0-aix-ppc64.tar.gz ARMv8 64-bit Binary: https://nodejs.org/dist/v24.21.0/node-v24.21.0-linux-arm64.tar.xz Source Code: https://nodejs.org/dist/v24.21.0/node-v24.21.0.tar.gz Other release files: https://nodejs.org/dist/v24.21.0/ Documentation: https://nodejs.org/docs/v24.21.0/api/ SHASUMS -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 aec7b2464afb99f078c19cb06d201d543bd3b311cba071282bce1b17c97e58bb node-v24.21.0-aix-ppc64.tar.gz 22ca85110f26015696a3fa9216bc372ae65203d170622eaf7d211e2dd5bb49e3 node-v24.21.0-arm64.msi bed7eea5325e1108f32ce5228ddd6a5f0f08a499ee42aa7442aea583702f6057 node-v24.21.0-darwin-arm64.tar.gz 6239d4cf92d864487ec8cd3615038f7b67e7f58b77b21cd2f09ea9fbd68065fe node-v24.21.0-darwin-arm64.tar.xz 1462cb3b3046b815cf8ea436d3da450ec1a9f11dac7e5a46b0ada5305d7e8097 node-v24.21.0-darwin-x64.tar.gz 0ae5a24c24bb7d015cd816c5036b3f90f2945aa872fcf54e58da054753b3a299 node-v24.21.0-darwin-x64.tar.xz 57c6bee2e30bbbee5bd51d6cc343eb992e174b56a2a1d0eab7a7510771c20ea2 node-v24.21.0-headers.tar.gz 7497abc2fac1d332fae580046b6b39d0de283dfaf267207a32b59753739c1517 node-v24.21.0-headers.tar.xz 724282c3b43aec998aa9527380465b45d229e021b58035f5f4f63095eabfe5d5 node-v24.21.0-linux-arm64.tar.gz 6ad1325edbdb5649c379b75a237147a666c95d4f9ae8d340fef2d1575d289ad2 node-v24.21.0-linux-arm64.tar.xz 51c5d53066ee92920b61783b03b06ecb99f3661160f7b15ca77e8474115a67bc node-v24.21.0-linux-ppc64le.tar.gz 1936fd64623a2f98d1fb31b456686d10c30e92639899cfefdefa8835d22adccd node-v24.21.0-linux-ppc64le.tar.xz 5f2fa37422e0c75de35c1686fe51d78324f2c2a8fe2cc239a41d9c000a29d938 node-v24.21.0-linux-s390x.tar.gz 2ef7e2ecbf7a6c2f3d08d106f6b2f279419c6dac89fe91b8cad193af7890082c node-v24.21.0-linux-s390x.tar.xz 3d63405fc65a0d2d2976c1f0bc2fd27bb0bd07212469e705aac3f03ae5ab4c9c node-v24.21.0-linux-x64-musl.tar.gz 34ab095af8efe9018f21489d3dc19871fb5edd4f130a71469b69c05fd4e32a5e node-v24.21.0-linux-x64-musl.tar.xz 6e1db87ef58b8819e5d5402eff1536491b18edd8eb7bee5ef7897876e88dc5ff node-v24.21.0-linux-x64.tar.gz fd8e59d5a511510f6a298afb548f18c7d2b1be404d8b4a27d94fbe49f56cb2d6 node-v24.21.0-linux-x64.tar.xz 848cc8d138b712b5ae0f38de08fde62feb404226a63dde07d0ea5ccddbbd9dd7 node-v24.21.0-win-arm64.7z 8779b1bde1d39f8d420e3b57aa657b39891af434d3de44a919044cec06785921 node-v24.21.0-win-arm64.zip 4e5f86609712acf841f3a5e2d9d4854b4c149f6ead024fc38381b6d7b272c636 node-v24.21.0-win-x64.7z 158f7685b44de51f6c0df1d153526cbcd3e1bc739a8dfc607721cef75de9e541 node-v24.21.0-win-x64.zip bb0eaee134f9357f22aea915ee793343e627aefc1e66488164bac6915bce2cac node-v24.21.0-x64.msi 9831a74b04c270a429bd5a240e37712c4fe229b02b032e18ff2e0702c17c20fd node-v24.21.0.pkg 622424efb5dc0c26c93fbb619ff10737ee289c605b837c88778e186925d82777 node-v24.21.0.tar.gz a6f54defb6fd7c84f41dba13d61e78e9b4e0961712cf61f29715c05f5ced94fc node-v24.21.0.tar.xz dff59da18b6ffe1bf1ca99e1d2af4906080c481740619f5b5098c0fca28bd9b7 win-arm64/node.exe 2c0c3215d59c09d7c136da4949696dae121a299e9bdfc64cd9130a58610af63d win-arm64/node.lib 32ce76dd79deddcf6e08f612da714fc3a28fa39c0e4fe12283e019a90eb76483 win-arm64/node_pdb.7z d565f0a7a8eda1662886475471e454dbe2c2a53c9d1a8562fc986bd11c24fd72 win-arm64/node_pdb.zip ba4e6d110e8c1592a1ecd390f6b05f3da124b13871a5be62b341a07a853c6c32 win-x64/node.exe a0a84aa03917b578d286010b7521837e9ff1136ffb2e4a406c14316c33fd06f7 win-x64/node.lib 0df783d02aee58bbe9dcfc157ccc5cc37987d24c4f35889587b39500b12030a9 win-x64/node_pdb.7z 122f2af58bfb25816f12e49179217c3ff5bf96c1e083f3ccb0969a5b4794ff85 win-x64/node_pdb.zip -----BEGIN PGP SIGNATURE----- iHUEARYIAB0WIQRb6KP2yKXAHRBsCtggsaOQsWjTVgUCaqCC2wAKCRAgsaOQsWjT Vv76AQCzUTaAC4osCJzGVV+xtaqgA5v5tWhn3WwJweSFGKHxUwD/UsLGvdIo2tGk bTyUAWIgr/p3fFQM5gdAh28XWvNvcgQ= =nyNQ -----END PGP SIGNATURE-----

How it works

Once you click Generate, Ollama reads this article and crafts 5 comprehension questions. Your answers are graded against the article content — general knowledge won't be enough. Score 70+ to count toward your certificate.

Questions are cached — you'll always get the same 5 for this article.