Commit Graph
11826 Commits
Author SHA1 Message Date
manjit singh cab918281e doc: clarify process.loadEnvFile variable precedence (#66315)
Signed-off-by: manjit <manjitcse@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67276
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
2026-11-07 15:33:48 +00:00
Antoine du Hamel 3c463ba593 doc: fix security pre-alert template
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67240
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
2026-11-06 09:19:41 +00:00
Paul Bouchon 6720aad20c doc: fix execFile/execFileSync shell option docs
The `shell` option for `execFile()` and `execFileSync()` was described
as running `command` inside a shell, but those functions take a `file`
argument, not `command`. The text was copied from `exec()`/`spawn()`.

The note under `execFile()` also read "Since a shell is not spawned,
behaviors such as I/O redirection and file globbing are not supported",
which contradicts the preceding sentence that the same options as
`exec()` (including `shell`) are supported. Change "Since" to "If" so it
only applies when no shell is spawned.

Fixes: https://github.com/nodejs/node/issues/32524
Signed-off-by: Paul Bouchon <mail@bitpshr.net>
PR-URL: https://github.com/nodejs/node/pull/64437
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
2026-11-06 02:18:37 +00:00
Joyee Cheung 5e893ce072 src: do not enable the inspector during snapshot building
V8 no longer allows attaching a debuger or setting a debug context ID
during snapshot building. Avoid enabling the inspector in this case,
and reject the inspector options when the user-land --build-snapshot
is used.

Refs: https://chromium-review.googlesource.com/c/v8/v8/+/8679045
Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67154
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
2026-11-05 15:21:41 +00:00
Damiano Mazzella bea4d26011 ffi: support function calls from pointers
Add getFunctionFromPointer() to create callables from native addresses
with explicit signatures.

Reuse function preparation without populating named symbol caches.
Keep the associated library alive and invalidate pointer callables
when it is closed.

Add coverage for conversions, vtables, permissions and garbage
collection, and document pointer lifetime requirements.

Assisted-by: GitHub Copilot
Signed-off-by: Damiano Mazzella <damianomazzella@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66458
Fixes: https://github.com/nodejs/node/issues/66272
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
2026-11-04 19:25:06 +00:00
Yuya Inoue 7fbe29db8a doc: document C++ formatting in the pull request guide
Document formatter setup and usage separately from make lint so
contributors can catch C/C++ formatting issues before CI runs.

Refs: https://github.com/nodejs/node/pull/66834#issuecomment-6583209249
Assisted-by: Codex
Signed-off-by: inoway46 <inoueyuya416@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67205
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
2026-11-04 18:42:51 +00:00
Yuya Inoue 20daf9a4c7 http2: exclude queued data from response memory checks
Allow clients to receive responses when queued request data exceeds
maxSessionMemory, while preserving limits on received headers.

Fixes: https://github.com/nodejs/node/issues/66739
Refs: https://github.com/nodejs/node/pull/67113
Assisted-by: Codex
Signed-off-by: inoway46 <inoueyuya416@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67114
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Tim Perry <pimterry@gmail.com>
2026-11-04 17:43:00 +00:00
Filip Skokan e86ce8b975 crypto: add X509Certificate inspection getters
Expose version, subjectName, issuerName, extensions, tbs, and signature
without requiring callers to parse display strings or certificate DER.

Names include complete DER and grouped, ordered RDN attributes.
Extensions retain their order, duplicate and unknown OIDs, criticality,
and raw values. Expose the exact signed TBSCertificate bytes and the
signature octets, algorithm OID, and DER parameters.

Return fresh objects, arrays, and Buffers from the new getters, leaving
existing getter caching unchanged. Report inspection failures as
ERR_CRYPTO_INVALID_X509_CERTIFICATE.

Fixes: https://github.com/nodejs/node/issues/48730
Assisted-by: Codex
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67082
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Tim Perry <pimterry@gmail.com>
2026-11-04 09:20:53 +00:00
Rafael Gonzaga b8aec5b3c4 doc: describe how the permission model grants the entrypoint
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: https://github.com/nodejs/node/pull/67038
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
2026-11-03 20:26:19 +00:00
Mike McCready a1e1a743a1 doc: correct DEP0199 runtime deprecation listing
Signed-off-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
PR-URL: https://github.com/nodejs/node/pull/67167
Refs: https://github.com/nodejs/node/pull/58535
Reviewed-By: Tim Perry <pimterry@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
2026-11-02 23:21:37 +00:00
Yuya Inoue 3556d018a4 doc: add LIEF to the dependency list
Refs: https://github.com/nodejs/node/issues/67164

Assisted-by: Codex
Signed-off-by: inoway46 <inoueyuya416@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67165
Refs: https://github.com/nodejs/node/issues/67164
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Darshan Sen <raisinten@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
2026-11-02 17:00:15 +00:00
Dustin 1389475f66 quic: retain readers for readable streams
Create readers when readable QuicStream instances are constructed so
data received before the first async iterator pull survives native
stream cleanup. Add a regression test for a peer-initiated
unidirectional stream that sends data and FIN before the reader is
pulled.

Assisted-by: Codex
Signed-off-by: GiHoon1123 <rlaejrqo465@naver.com>
PR-URL: https://github.com/nodejs/node/pull/66407
Fixes: https://github.com/nodejs/node/issues/66347
Reviewed-By: Tim Perry <pimterry@gmail.com>
2026-11-02 12:22:47 +00:00
Abdirahim Musse 040c1a2030 doc: ffi rename OS/400 -> IBM i
Signed-off-by: Abdirahim Musse <33973272+abmusse@users.noreply.github.com>
PR-URL: https://github.com/nodejs/node/pull/67144
Reviewed-By: Stewart X Addison <sxa@redhat.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
2026-11-01 15:24:51 +00:00
inoway46 b615ce858f doc: list CVE-2026-106072 in v24 changelog
The non-canonical IP address fix also addresses CVE-2026-106072.
Record both CVE IDs in the v24.22.1 notable changes.

Refs: https://github.com/nodejs/node/issues/66981
Assisted-by: a closed-source coding agent
Signed-off-by: inoway46 <inoueyuya416@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66984
Fixes: https://github.com/nodejs/node/issues/66981
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2026-11-01 06:45:46 +00:00
inoway46 f145fa4692 doc: list CVE-2026-106072 in v22 changelog
The non-canonical IP address fix also addresses CVE-2026-106072.
Record both CVE IDs in the v22.23.4 notable changes.

Refs: https://github.com/nodejs/node/issues/66981
Assisted-by: a closed-source coding agent
Signed-off-by: inoway46 <inoueyuya416@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66984
Fixes: https://github.com/nodejs/node/issues/66981
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2026-11-01 06:45:45 +00:00
Ulises Gascón 4c234f6266 doc: remove CI lockdown steps from security releases
The CI is no longer locked down for security releases. The pre-release
paragraph describing the lockdown procedure was already dropped from
releases.md in nodejs/node#64198, but the release day steps and two
inline notes still told stewards and releasers to wait for it.

Remove the remaining references:

  * Drop 'Lock down the CI' and 'Unlock the CI' from the release day
    checklist in security-release-process.md and renumber the steps.
  * Drop the note in releases.md telling releasers not to run CI on
    nodejs-private pull requests until the lockdown.
  * Drop the security release details block under the CI step that
    deferred to the lockdown coordinated with the Build Working Group.

Refs: https://github.com/nodejs/node/pull/64198
Signed-off-by: Ulises Gascon <ulisesgascongonzalez@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67116
Refs: https://github.com/nodejs/build/pull/4355
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Beth Griggs <bethanyngriggs@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
2026-10-31 17:25:28 +00:00
Joyee Cheung fe91868982 doc: clarify that V8 major upgrade uses stable release
Along with Chrome, V8 has several different release channels. A
V8 release only reaches stable after the stable cut has been rolled
out and tested in several Chrome release channels, where regressions
and bugs are discovered and fixed.

This patch clarifies that we follow the _stable release_ of main
branch to reduce the amount of churn needed. The V8 stable releases
are already battle tested in Chrome and generally contain fewer
regressions/bugs that would require another refresh to address.

Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/67106
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Tierney Cyren <hello@bnb.im>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
2026-10-31 12:01:56 +00:00
Trivikram Kamat d44625a4b8 ffi: keep DynamicLibrary alive while callbacks are registered
Callback pointers returned by registerCallback() are plain bigint
addresses, so they do not keep the owning DynamicLibrary reachable.
If user code dropped the library without calling close(), the next GC
ran ~DynamicLibrary(), which freed every ffi_closure. Native code still
holding a callback pointer then jumped into freed trampoline memory and
crashed the process, even though close() was never called.

Hold the owning library through a BaseObjectPtr in each FFICallback,
so it stays strong until its last callback is unregistered or the
library is closed. Callbacks released with unrefCallback() still count,
because their trampolines remain live native memory. Since this forms a
cycle, release the callbacks from an Environment cleanup hook so the
library is still freed at teardown.

Signed-off-by: Trivikram Kamat <16024985+trivikr@users.noreply.github.com>
Assisted-by: claude:opus-5.5
PR-URL: https://github.com/nodejs/node/pull/66842
Fixes: https://github.com/nodejs/node/issues/66841
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
2026-10-31 05:16:01 +00:00
RafaelGSS ee982dbf48 2026-10-29, Version 27.0.0-alpha.0.0.0 (Alpha)
Notable changes:

build:
  * (SEMVER-MAJOR) remove the bundled FIPS provider build (Filip Skokan) https://github.com/nodejs/node/pull/64777
  * (SEMVER-MAJOR) require OpenSSL 3 or later (Filip Skokan) https://github.com/nodejs/node/pull/64777
  * (SEMVER-MAJOR) downgrade Intel macOS support to experimental (Antoine du Hamel) https://github.com/nodejs/node/pull/65427
crypto:
  * (SEMVER-MAJOR) move DEP0093 to End-of-Life (Filip Skokan) https://github.com/nodejs/node/pull/64777
  * (SEMVER-MAJOR) remove legacy OpenSSL code paths (Filip Skokan) https://github.com/nodejs/node/pull/64777
  * (SEMVER-MAJOR) validate digest output encodings (Filip Skokan) https://github.com/nodejs/node/pull/66247
  * (SEMVER-MAJOR) validate update input encodings (Filip Skokan) https://github.com/nodejs/node/pull/66247
  * (SEMVER-MAJOR) validate inputEncoding in Cipher/Decipher update (Maruthan G) https://github.com/nodejs/node/pull/66247
  * (SEMVER-MAJOR) move DEP0198 to End-of-Life (Filip Skokan) https://github.com/nodejs/node/pull/64000
  * (SEMVER-MAJOR) move DEP0203 and DEP0204 to End-of-Life (Filip Skokan) https://github.com/nodejs/node/pull/63188
  * (SEMVER-MAJOR) reject resizable backing stores in Web Crypto buffer parameters (Filip Skokan) https://github.com/nodejs/node/pull/63925
  * (SEMVER-MAJOR) throw on uninitialized DH computeSecret (Filip Skokan) https://github.com/nodejs/node/pull/63922
  * (SEMVER-MAJOR) runtime-deprecate calling Hmac.digest() more than once (Madelyn) https://github.com/nodejs/node/pull/63624
crypto,https,tls:
  * (SEMVER-MAJOR) end OpenSSL engine support (Filip Skokan) https://github.com/nodejs/node/pull/64777
deps:
  * (SEMVER-MAJOR) update archs files for openssl-4.1.0 (Node.js GitHub Bot) https://github.com/nodejs/node/pull/66971
  * (SEMVER-MAJOR) upgrade openssl sources to openssl-4.1.0 (Node.js GitHub Bot) https://github.com/nodejs/node/pull/66971
  * (SEMVER-MAJOR) remove ncrypto legacy OpenSSL backend (Filip Skokan) https://github.com/nodejs/node/pull/64777
  * (SEMVER-MAJOR) update V8 to 15.6.75.13 (Joyee Cheung) https://github.com/nodejs/node/pull/66601
  * (SEMVER-MAJOR) upgrade npm to 12.1.0 (npm team) https://github.com/nodejs/node/pull/66212
dgram:
  * (SEMVER-MAJOR) skip the custom lookup for literal IP addresses (Ruben Bridgewater) https://github.com/nodejs/node/pull/64131
dns:
  * (SEMVER-MAJOR) do not consult hosts file in reverse lookups (Archkon) https://github.com/nodejs/node/pull/64268
  * (SEMVER-MAJOR) stop using deprecated functions in `SetServers` (Antoine du Hamel) https://github.com/nodejs/node/pull/64356
doc:
  * (SEMVER-MAJOR) remove OpenSSL 1.x references (Filip Skokan) https://github.com/nodejs/node/pull/64777
  * (SEMVER-MAJOR) update Node.js 27 official binary toolchains (Richard Lau) https://github.com/nodejs/node/pull/66377
domain:
  * (SEMVER-MAJOR) runtime-deprecate the module (Matteo Collina) https://github.com/nodejs/node/pull/65074
  * (SEMVER-MAJOR) port to AsyncLocalStorage (Matteo Collina) https://github.com/nodejs/node/pull/61095
fs:
  * (SEMVER-MAJOR) implement glob natively (Aviv Keller) https://github.com/nodejs/node/pull/65392
  * (SEMVER-MAJOR) return Buffer from mkdtemp when prefix is a Buffer (Hamid Reza Ghavami) https://github.com/nodejs/node/pull/64397
http:
  * (SEMVER-MAJOR) reject responses exceeding header limit (Matteo Collina) https://github.com/nodejs/node/pull/65010
  * (SEMVER-MAJOR) runtime deprecate instantiating without new (Yagiz Nizipli) https://github.com/nodejs/node/pull/64853
  * (SEMVER-MAJOR) increase keepAliveTimeout default to 65 seconds (Tim Perry) https://github.com/nodejs/node/pull/62782
  * (SEMVER-MAJOR) make req.headers have a null prototype (Matteo Collina) https://github.com/nodejs/node/pull/62900
  * (SEMVER-MAJOR) reject addTrailers after finish (Ryuhei Shima) https://github.com/nodejs/node/pull/62832
http2:
  * (SEMVER-MAJOR) increase default window sizes (Matteo Collina) https://github.com/nodejs/node/pull/64623
lib:
  * (SEMVER-MAJOR) deprecate _http_* (Sebastian Beltran) https://github.com/nodejs/node/pull/58535
  * (SEMVER-MAJOR) insert argv[0] at argv[1] in setDeserializeMainFunction (Daijiro Wachi) https://github.com/nodejs/node/pull/62928
  * (SEMVER-MAJOR) use `Object.freeze` to avoid defensive cloning in `SourceMap` (Daijiro Wachi) https://github.com/nodejs/node/pull/62830
  * (SEMVER-MAJOR) reject SharedArrayBuffer in Blob constructor per spec (Ali Hassan) https://github.com/nodejs/node/pull/63046
lib,src:
  * (SEMVER-MAJOR) remove `--no-experimental-websocket` CLI flag (Antoine du Hamel) https://github.com/nodejs/node/pull/65284
net:
  * (SEMVER-MAJOR) race family autoselection attempts (Matteo Collina) https://github.com/nodejs/node/pull/66229
  * (SEMVER-MAJOR) throw on multiple listen calls (Matteo Collina) https://github.com/nodejs/node/pull/64871
  * (SEMVER-MAJOR) runtime-deprecate Server.prototype._listen2 (Guilherme Araújo) https://github.com/nodejs/node/pull/64794
  * (SEMVER-MAJOR) add experimental net/promises API (Ethan Arrowood) https://github.com/nodejs/node/pull/63965
repl:
  * (SEMVER-MAJOR) use inspector over vm (Aviv Keller) https://github.com/nodejs/node/pull/64034
src:
  * (SEMVER-MAJOR) officially deprecate `node::ObjectWrap` (Anna Henningsen) https://github.com/nodejs/node/pull/63756
  * (SEMVER-MAJOR) merge `CreateEnvironment()` overloads (Anna Henningsen) https://github.com/nodejs/node/pull/63596
src,lib:
  * (SEMVER-MAJOR) add --allow-env permission (James M Snell) https://github.com/nodejs/node/pull/66132
stream:
  * (SEMVER-MAJOR) destroy source when map iterator closes early (Y1D7NG) https://github.com/nodejs/node/pull/64264
test_runner:
  * use AsyncLocalStorage instead of async_hooks (Matteo Collina) https://github.com/nodejs/node/pull/66795
tls:
  * (SEMVER-MAJOR) move _tls_* to end-of-life (Sebastian Beltran) https://github.com/nodejs/node/pull/60658
zlib:
  * (SEMVER-MAJOR) convert classes to modern syntax and eol DEP0184 (Yagiz Nizipli) https://github.com/nodejs/node/pull/64849

PR-URL: https://github.com/nodejs/node/pull/67062
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
2026-10-29 15:20:04 -03:00
Rafael Gonzaga 5f242ebb03 doc: note linear history rule on branch-off
Pushing new `vN.x` and `vN.x-staging` branches to the repository is
rejected by the "Require linear history" ruleset, because branch
creation evaluates the whole history and `main` still contains merge
commits from 2015. Document that a repository admin must disable the
rule, push the branches, and enable it again, as done for v26.x and
v27.x.

Refs: https://github.com/nodejs/Release/issues/1187
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: https://github.com/nodejs/node/pull/67057
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
2026-10-29 13:20:58 +00:00
yuki motokane e3b3984232 doc: remove outdated platform note for --watch-path
Fixes: https://github.com/nodejs/node/issues/66743
Signed-off-by: Yuki Motokane <216834584+motokaneyuki@users.noreply.github.com>
Assisted-by: Claude
PR-URL: https://github.com/nodejs/node/pull/66749
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
2026-10-29 13:01:48 +00:00
Marco c2591daac5 child_process: add subprocess.timedOut
When the timeout option of spawn(), exec(), execFile() or fork()
expires, the child is sent the kill signal and exits with that signal.
Nothing told the caller that the timeout was the reason.

Set subprocess.timedOut to true when the kill signal is sent because of
the timeout, and add the same flag to the error passed to the exec()
and execFile() callback.

Fixes: https://github.com/nodejs/node/issues/51561
Refs: https://github.com/nodejs/node/pull/51608
Signed-off-by: marcopiraccini <marco.piraccini@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66639
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
2026-10-29 08:56:09 +00:00
Donghoon Kang 4b9caf05df doc: fix sqlite tagged template examples
Signed-off-by: HoonDongKang <d159123@naver.com>
PR-URL: https://github.com/nodejs/node/pull/66920
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Guilherme Araújo <arauujogui@gmail.com>
2026-10-28 23:17:28 +00:00
Antoine du Hamel 48cb57d2f8 2026-10-28, Version 24.22.2 'Krypton' (LTS)
PR-URL: https://github.com/nodejs/node/pull/67040
2026-10-28 19:32:55 +01:00
Richard Lau 2ebf49f6b8 2026-10-28, Version 26.13.0 'Lithium' (LTS)
Notable changes:

This release marks the transition of Node.js 26.x into Long Term Support (LTS)
with the codename 'Lithium'. It will continue to receive updates through to
the end of April 2029.

Other than updating metadata, such as the `process.release` object, to reflect
that the release is LTS, no further changes from Node.js 26.12.1 are included.

PR-URL: https://github.com/nodejs/node/pull/66965
Signed-off-by: Richard Lau <richard.lau@ibm.com>
2026-10-28 12:56:13 +00:00
Guy Bedford ec7a28f2e0 module: cache compiled WebAssembly modules in the compile cache
Extends the module compile cache to WebAssembly modules loaded through
the ES module integration. A new kWasm entry type is keyed on the module
URL with the wire bytes as the hashed source, and stores the serialized
CompiledWasmModule. On load, cached code is deserialized through
v8::WasmModuleCompilation with the same compile options the translator
uses (js-string builtins and imported string constants), falling back
to compilation when V8 rejects it.

As for JavaScript, the cache entry is generated right after compilation.
V8 only serializes optimized tier code, so with the default lazy
baseline compilation there is nothing to cache and no entry is written;
a complete cache requires --no-liftoff --no-wasm-lazy-compilation, which
is documented as the way to use the compile cache for WebAssembly.

Signed-off-by: Guy Bedford <guybedford@gmail.com>
Assisted-by: Claude Code
PR-URL: https://github.com/nodejs/node/pull/66191
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
2026-10-28 01:46:44 +00:00
Philipp Dunkel 7622ebb3d7 zlib: add raw content read methods to ZipEntry
zipEntry.rawContent was a getter that exposed the retained buffer of an
in-memory entry and returned null for a file-backed or streaming one,
so the still-compressed bytes of a member read through ZipFile could
not be obtained at all.

Replace it with rawContent(), rawContentSync() and
rawContentIterator(), which mirror content(), contentSync() and
contentIterator() but return the bytes as stored, without
decompressing or verifying them. They work for every entry that has
readable content, return caller-owned buffers from the buffered
variants, and accept a maxSize bound on the compressed size.

Signed-off-by: Philipp Dunkel <pip@pipobscure.com>
PR-URL: https://github.com/nodejs/node/pull/66801
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
2026-10-27 17:45:32 +00:00
Rafael Gonzaga 7abbd56cfd doc: document the alpha release process
Document how to prepare, version, tag and promote the Alpha releases
introduced by the new release schedule, starting with Node.js 27, and
how the first Alpha and semver-major releases are prepared with
git node release.

Refs: https://github.com/nodejs/Release/issues/1187
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: https://github.com/nodejs/node/pull/66796
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
2026-10-26 16:32:08 +00:00
Antoine du Hamel 1ae40765d6 Revert "build, doc: move to redesign"
This reverts commit 18a9ba509a.

PR-URL: https://github.com/nodejs/node/pull/67015
Refs: https://github.com/nodejs/node/issues/66571
Reviewed-By: Claudio Wunder <cwunder@gnome.org>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
2026-10-26 16:08:31 +01:00
Ravi Arnan Irianto ba3c34a93a doc: fix grammar and phrasing in typescript.md
Fix grammatical issues and heading phrasing in `doc/api/typescript.md`:
- Correct subject-verb agreement ("files that contains" -> "files that
  contain").
- Add missing indefinite article ("result in an ... error").
- Change heading from "Paths aliases" to "Path aliases" to match
  standard TypeScript terminology.
- Clarify verb parallelism ("won't be transformed and will therefore
  produce an error").

Signed-off-by: Ravi Arnan <raviarnankeren@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66977
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
2026-10-26 07:56:41 +00:00
Filip Skokan a2cd8aa883 crypto,https,tls: end OpenSSL engine support
OpenSSL removed support for engines in version 4. Remove the Node.js
APIs, constants, native bindings, and implementation that depend on
ENGINE.

Keep recognizing the former TLS and HTTPS engine options so their use
fails explicitly instead of appearing to work while being ignored.

Move DEP0183 directly from Documentation-only to End-of-Life after
reverting its unreleased Runtime deprecation.

Signed-off-by: Filip Skokan <panva.ip@gmail.com>
Assisted-by: Codex
PR-URL: https://github.com/nodejs/node/pull/64777
Fixes: https://github.com/nodejs/node/issues/56733
Refs: https://github.com/nodejs/node/pull/64211
Refs: https://github.com/nodejs/node/pull/63966
Refs: https://github.com/nodejs/node/pull/53329
Refs: https://github.com/nodejs/node/pull/48950
Refs: https://github.com/nodejs/node/issues/45465
Refs: https://github.com/nodejs/node/issues/42827
Refs: https://github.com/nodejs/node/issues/47076
Refs: https://github.com/nodejs/node/pull/62862
Refs: https://github.com/nodejs/node/pull/38512
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
2026-10-25 22:36:38 +01:00
Filip Skokan b61e682fc0 Revert "crypto,https,tls: runtime-deprecate OpenSSL engine-based APIs (DEP0183)"
This reverts commit da516920fc.

PR-URL: https://github.com/nodejs/node/pull/64777
Fixes: https://github.com/nodejs/node/issues/56733
Refs: https://github.com/nodejs/node/pull/64211
Refs: https://github.com/nodejs/node/pull/63966
Refs: https://github.com/nodejs/node/pull/53329
Refs: https://github.com/nodejs/node/pull/48950
Refs: https://github.com/nodejs/node/issues/45465
Refs: https://github.com/nodejs/node/issues/42827
Refs: https://github.com/nodejs/node/issues/47076
Refs: https://github.com/nodejs/node/pull/62862
Refs: https://github.com/nodejs/node/pull/38512
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
2026-10-25 22:36:37 +01:00
Filip Skokan fb8d52d75a crypto: move DEP0093 to End-of-Life
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
Assisted-by: Codex
PR-URL: https://github.com/nodejs/node/pull/64777
Fixes: https://github.com/nodejs/node/issues/56733
Refs: https://github.com/nodejs/node/pull/64211
Refs: https://github.com/nodejs/node/pull/63966
Refs: https://github.com/nodejs/node/pull/53329
Refs: https://github.com/nodejs/node/pull/48950
Refs: https://github.com/nodejs/node/issues/45465
Refs: https://github.com/nodejs/node/issues/42827
Refs: https://github.com/nodejs/node/issues/47076
Refs: https://github.com/nodejs/node/pull/62862
Refs: https://github.com/nodejs/node/pull/38512
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
2026-10-25 22:36:36 +01:00
Filip Skokan 7f16850ef6 doc: remove OpenSSL 1.x references
Rename the openssl30 footnote, which marks APIs unavailable on
BoringSSL rather than ones requiring OpenSSL. Remove obsolete version
qualifiers from the provider and FIPS documentation, drop the "As of
OpenSSL 1.1.0" anchor from the PSK size limits, and point the man1.1.1
links at man3.0.

Document BoringSSL as the only backend with numeric key adapters.

Signed-off-by: Filip Skokan <panva.ip@gmail.com>
Assisted-by: Codex
PR-URL: https://github.com/nodejs/node/pull/64777
Fixes: https://github.com/nodejs/node/issues/56733
Refs: https://github.com/nodejs/node/pull/64211
Refs: https://github.com/nodejs/node/pull/63966
Refs: https://github.com/nodejs/node/pull/53329
Refs: https://github.com/nodejs/node/pull/48950
Refs: https://github.com/nodejs/node/issues/45465
Refs: https://github.com/nodejs/node/issues/42827
Refs: https://github.com/nodejs/node/issues/47076
Refs: https://github.com/nodejs/node/pull/62862
Refs: https://github.com/nodejs/node/pull/38512
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
2026-10-25 22:36:33 +01:00
Filip Skokan b12bad4b11 build,deps,tools: prepare to update to OpenSSL 4.1
Update the updater script and files under `deps/openssl/config` in
preparation for updating `deps/openssl` to OpenSSL 4.1.

Signed-off-by: Filip Skokan <panva.ip@gmail.com>
Assisted-by: Codex
PR-URL: https://github.com/nodejs/node/pull/66758
Reviewed-By: Richard Lau <richard.lau@ibm.com>
2026-10-23 23:47:23 +00:00
Rafael Gonzaga 2e4f8cfa20 doc: add rafael and antoine as last security release stewards
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: https://github.com/nodejs/node/pull/66909
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
2026-10-23 22:37:13 +00:00
Rafael Gonzaga 84f8e2f3a9 doc: document --allow-fs-vfs in the permission model page
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: https://github.com/nodejs/node/pull/66793
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2026-10-23 17:20:07 +00:00
Filip Skokan 952dcb2dc2 doc: update config schema for test-forbid-only
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66945
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
2026-10-23 10:22:44 +02:00
joao-oliveira-softtor 45b6626457 test_runner: add option to forbid exclusive tests
Add --test-forbid-only and the forbidOnly run() option to detect
accidentally committed exclusive tests. Reject only declarations and
runOnly(true) in both isolation modes, and record a run-level failure
so TODO and expected failures cannot absorb the error.

Document the runtime-only detection and add regression coverage for
filtering, option inheritance, both isolation modes, and disabled
guards.

Refs: https://github.com/nodejs/node/issues/60917
Assisted-by: a coding agent
Signed-off-by: João Victor <joao.oliveira@softtor.com.br>
PR-URL: https://github.com/nodejs/node/pull/66578
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
2026-10-23 07:04:37 +00:00
Guilherme Araújo 6d4646731e doc: mark test runner watch mode as stable
Signed-off-by: Guilherme Araújo <arauujogui@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66708
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Tierney Cyren <hello@bnb.im>
2026-10-22 22:59:58 +00:00
Rafael Gonzaga a7e06d975d permission: reject wildcard references when dropping env
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: https://github.com/nodejs/node/pull/66773
Reviewed-By: James M Snell <jasnell@gmail.com>
2026-10-22 20:12:12 +00:00
Filip Skokan 936b20c074 doc,crypto: mark raw key formats as stable
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66829
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
2026-10-21 14:28:48 +00:00
Antoine du Hamel b85dd8021c 2026-10-21, Version 22.23.4 'Jod' (LTS)
This is a security release.

Notable changes:

* (CVE-2026-105481) http: ensure agent data guard works without I/O (James M Snell)
* (CVE-2026-105482) dns: validate resolve inputs for null bytes (James M Snell)
* (CVE-2026-106069) tls: reject non-canonical IP addresses (Matteo Collina)
* (CVE-2026-106073) permission: check permission model in realpathSync (RafaelGSS)
* (CVE-2026-106074) crypto: reset random caches across snapshots (Filip Skokan)
* (CVE-2026-111497) src: expose `BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH` (Antoine du Hamel)
* (CVE-2026-111497) deps: brotli: cherry-pick 0ed4268a4401abcb44720963 (Evgenii Kliuchnikov)
* crypto: update root certificates to NSS 3.131.1 (Antoine du Hamel)
* deps: update c-ares to 1.34.9 (Node.js GitHub Bot)
* deps: update timezone to 2026e (Node.js GitHub Bot)
* deps: upgrade openssl sources to openssl-3.5.9 (Node.js GitHub Bot)
* deps: update sqlite to 3.53.4 (Node.js GitHub Bot)
* deps: update undici to 6.29.1 (Node.js GitHub Bot)

PR-URL: https://github.com/nodejs-private/node-private/pull/1010
2026-10-21 12:04:28 +02:00
Antoine du Hamel b29989dda4 2026-10-21, Version 24.22.1 'Krypton' (LTS)
This is a security release.

Notable changes:

* (CVE-2026-105481) http: ensure agent data guard works without I/O (James M Snell)
* (CVE-2026-105482) dns: validate resolve inputs for null bytes (James M Snell)
* (CVE-2026-105483) tls: fix ip normalization regression (James M Snell)
* (CVE-2026-106069) tls: reject non-canonical IP addresses (Matteo Collina)
* (CVE-2026-106073) permission: check permission model in realpathSync (RafaelGSS)
* (CVE-2026-106074) crypto: reset random caches across snapshots (Filip Skokan)
* (CVE-2026-111497) src: expose `BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH` (Antoine du Hamel)
* (CVE-2026-111497) deps: brotli: cherry-pick 0ed4268a4401abcb44720963 (Evgenii Kliuchnikov)
* crypto: update root certificates to NSS 3.131.1 (Antoine du Hamel)
* deps: update c-ares to 1.34.9 (Node.js GitHub Bot)
* deps: update timezone to 2026e (Node.js GitHub Bot)
* deps: upgrade openssl sources to openssl-3.5.9 (Node.js GitHub Bot)
* deps: update undici to 7.30.1 (Node.js GitHub Bot)

PR-URL: https://github.com/nodejs-private/node-private/pull/1012
2026-10-21 12:03:11 +02:00
RafaelGSS 18aaee07d6 2026-10-21, Version 26.12.1 (Current)
This is a security release.

Notable changes:

* (CVE-2026-106069, CVE-2026-106072) tls: reject non-canonical IP addresses (Matteo Collina) – High
* (CVE-2026-105482) dns: validate resolve inputs for null bytes (James M Snell) – High
* (CVE-2026-105483) tls: fix ip normalization regression (James M Snell) – High
* (CVE-2026-111497) src: expose `BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH` (Antoine du Hamel) – High
* (CVE-2026-111497) deps: brotli: cherry-pick 0ed4268a4401abcb44720963 (Evgenii Kliuchnikov) – High
* (CVE-2026-105481) http: ensure agent data guard works without I/O (James M Snell) – Medium
* (CVE-2026-106074) crypto: reset random caches across snapshots (Filip Skokan) – Medium
* (CVE-2026-106070) zlib: avoid caching invalid ZIP local headers (Matteo Collina) – Low
* (CVE-2026-106071) src: fix the fs permission tree node on wildcard nodes (James M Snell) – Low
* (CVE-2026-106073) permission: check permission model in realpathSync (RafaelGSS) – Low
* deps: V8: backport 93cd21e8254b (Joyee Cheung)
* crypto: update root certificates to NSS 3.131.1 (Antoine du Hamel)
* tls: reject chains containing blocked public keys (Ulises Gascon)
* deps: update c-ares to 1.34.9 (Node.js GitHub Bot)
* tools: retry Gatekeeper check and stapling after notarization (Ryan Aslett)
* crypto: harden X.509 conversion and formatting (Filip Skokan)

PR-URL: https://github.com/nodejs-private/node-private/pull/1013
2026-10-21 12:02:46 +02:00
Marco Ippolito 67d0e5faca doc: update node-config-schema.json
Regenerate the schema with tools/doc/generate-json-schema.mjs. It had
fallen out of date because test-config-json-schema was not running in
CI.

Assisted-by: claude:opus-5.5
Signed-off-by: Marco Ippolito <marcoippolito54@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66827
Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
2026-10-21 04:58:22 +00:00
Philipp Dunkel df2ea49e00 zlib: add crc32c
Add zlib.crc32c(data[, value]), which computes the CRC-32C checksum
(Castagnoli polynomial, RFC 3720 section 12.1). CRC-32C has better
error detection properties than the CRC-32 of zlib.crc32() and is the
checksum required by many current protocols, formats and services,
among them:

- iSCSI header and data digests (RFC 7143)
- SCTP packet checksums (RFC 9260)
- iWARP MPA framing (RFC 5044)
- NVMe/TCP header and data digests
- ext4, Btrfs and XFS metadata checksums
- the Snappy framing format
- Apache Kafka record batches
- LevelDB and RocksDB block checksums
- TensorFlow TFRecord files
- Google Cloud Storage and Amazon S3 object checksums

Implementing any of these in JavaScript currently needs a userland
CRC-32C, which is far slower than native code.

The function mirrors zlib.crc32(): it accepts a string (encoded as
UTF-8) or an ArrayBufferView, takes an optional 32-bit unsigned
starting value so a checksum can be continued across chunks, and has a
V8 fast API path.

The checksum is computed by absl::ExtendCrc32c() from the bundled
Abseil, which is already built and linked into node, so this adds no
new dependency and no new checksum implementation. absl_crc32c is
added to the libraries linked with --shared-abseil.

Abseil selects its hardware-accelerated CRC-32C path (SSE4.2 and
PCLMULQDQ on x64, the CRC32 and PMULL extensions on arm64) at compile
time, so with node's default compiler flags the portable table-driven
implementation is used. It runs at about the same speed as zlib.crc32()
(about 6.5 GB/s on a recent x64 machine), while the hardware path
reaches about 38 GB/s. Builds whose target CPU baseline already
includes those instructions get the hardware path without changes.
Enabling it for generic builds is left out on purpose: on x64, Abseil
uses the accelerated code for unrecognized CPUs without a runtime
feature check, so compiling it in unconditionally would fault on CPUs
without SSE4.2.

Signed-off-by: Philipp Dunkel <pip@pipobscure.com>
PR-URL: https://github.com/nodejs/node/pull/66828
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
2026-10-20 12:33:08 +00:00
Efe Karasakal 1a54c4fe8c quic: truncate CONNECTION_CLOSE frame reason field
Signed-off-by: Efe Karasakal <hi@efe.dev>
PR-URL: https://github.com/nodejs/node/pull/66644
Reviewed-By: Tim Perry <pimterry@gmail.com>
2026-10-20 11:01:08 +00:00
Guy Bedford 8ae0ad0683 module: add "worker" condition for Web Worker threads
Adds a "worker" package condition that is applied within Web Worker
threads created via the `Worker` global, for the worker entry point,
its dependencies, `import()`, `require()` and `import.meta.resolve()`.
Threads created via `worker_threads`, including from within a Web
Worker, do not apply the condition. Other conditions are unaffected.

Assisted-by: OpenCode
Signed-off-by: Guy Bedford <guybedford@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/66635
Reviewed-By: James M Snell <jasnell@gmail.com>
2026-10-19 17:09:42 +00:00
Rafael Gonzaga 8df2dd89d0 doc: update V8 ABI release policy
Document the V8-related native addon ABI policy discussed in
nodejs/TSC#1852.

Starting with Node.js 27, V8 updates may land during Alpha and
Current even when they require a `NODE_MODULE_VERSION` bump, as
long as the ABI change is documented in release notes.

Refs: https://github.com/nodejs/TSC/issues/1852#issuecomment-4566968175

Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: https://github.com/nodejs/node/pull/64196
Refs: https://github.com/nodejs/TSC/issues/1852
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
2026-10-19 16:27:15 +00:00