Skip to content

v20.19.3 proposal #58588

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 63 commits into
base: v20.x
Choose a base branch
from
Open

v20.19.3 proposal #58588

wants to merge 63 commits into from

Conversation

marco-ippolito
Copy link
Member

@marco-ippolito marco-ippolito commented Jun 5, 2025

2025-06-23, Version 20.19.3 'Iron' (LTS), @marco-ippolito

Notable Changes

  • [c535a3c483] - crypto: graduate WebCryptoAPI Ed25519 and X25519 algorithms as stable (Filip Skokan) #56142
  • [af1dc63815] - crypto: update root certificates to NSS 3.108 (Node.js GitHub Bot) #57381
  • [01d63a4ddf] - deps: update timezone to 2025b (Node.js GitHub Bot) #57857
  • [b6daa344eb] - doc: add dario-piotrowicz to collaborators (Dario Piotrowicz) #58102

Commits

  • [fc1fa7a357] - build: use FILE_OFFSET_BITS=64 esp. on 32-bit arch (RafaelGSS) #58090
  • [79e0812181] - build: use glob for dependencies of out/Makefile (Richard Lau) #55789
  • [f56e62851a] - crypto: allow length=0 for HKDF and PBKDF2 in SubtleCrypto.deriveBits (Filip Skokan) #55866
  • [c535a3c483] - crypto: graduate WebCryptoAPI Ed25519 and X25519 algorithms as stable (Filip Skokan) #56142
  • [39925de8b1] - crypto: allow non-multiple of 8 in SubtleCrypto.deriveBits (Filip Skokan) #55296
  • [af1dc63815] - crypto: update root certificates to NSS 3.108 (Node.js GitHub Bot) #57381
  • [d09008add3] - deps: V8: cherry-pick 1a3ecc2483b2 (Michaël Zasso) #58342
  • [fd56652425] - deps: V8: cherry-pick 182d9c05e78b (Andrey Kosyakov) #58342
  • [447481e829] - deps: V8: cherry-pick third_party/zlib@646b7f569718 (Hans Wennborg) #58342
  • [eb447168df] - deps: update simdutf to 6.4.2 (Node.js GitHub Bot) #57855
  • [01d63a4ddf] - deps: update timezone to 2025b (Node.js GitHub Bot) #57857
  • [10fb49f2a9] - deps: update icu to 77.1 (Node.js GitHub Bot) #57455
  • [f1dc7d0205] - deps: update corepack to 0.32.0 (Node.js GitHub Bot) #57265
  • [7a2e64bb8a] - deps: update simdutf to 6.4.0 (Node.js GitHub Bot) #56764
  • [e80669be0d] - doc: mention reports should align with Node.js CoC (Rafael Gonzaga) #57607
  • [7b2c0bc92e] - doc: add gurgunday as triager (Gürgün Dayıoğlu) #57594
  • [791e4879de] - doc: document REPL custom eval arguments (Dario Piotrowicz) #57690
  • [2917f09876] - doc: improved fetch docs (Alessandro Miliucci) #57296
  • [d940b15843] - doc: clarify unhandledRejection events behaviors in process doc (Dario Piotrowicz) #57654
  • [71c664fab7] - doc: update position type to integer | null in fs (Yukihiro Hasegawa) #57745
  • [0c0fbfa9c6] - doc: add missing v0.x changelog entries (Antoine du Hamel) #57779
  • [e99462c9fc] - doc: correct deprecation type of assert.CallTracker (René) #57997
  • [c7e92696ef] - doc: add returns for https.get (Eng Zer Jun) #58025
  • [ccc42b69ce] - doc: fix env variable name in util.styleText (Antoine du Hamel) #58072
  • [b6daa344eb] - doc: add dario-piotrowicz to collaborators (Dario Piotrowicz) #58102
  • [e5d6a3df16] - doc: fix AsyncLocalStorage example response changes after node v18 (Naor Tedgi (Abu Emma)) #57969
  • [f006411998] - doc: fix typo of file zlib.md (yusheng chen) #58093
  • [5193735df4] - doc: add missing options.signal to readlinePromises.createInterface() (Jimmy Leung) #55456
  • [fd44af730f] - doc: fix misaligned options in vm.compileFunction() (Jimmy Leung) #58145
  • [0fdcc0ddcd] - doc: add ambassaor message (Brian Muenzenmeyer) #57600
  • [5ca9616bd3] - doc: increase z-index of header element (Dario Piotrowicz) #57851
  • [81342d10f0] - doc: fix deprecation type for DEP0148 (Livia Medeiros) #57785
  • [776becfe01] - doc: remove mention of --require not supporting ES modules (Huáng Jùnliàng) #57620
  • [3140a8f133] - doc: add missing deprecated badges in fs.md (Yukihiro Hasegawa) #57384
  • [441ce24ae3] - doc: deprecate passing invalid types in fs.existsSync (Carlos Espa) #55892
  • [0556f54544] - http: correctly translate HTTP method (Paolo Insogna) #52701
  • [c2c6d2b035] - http: be more generational GC friendly (ywave620) #56767
  • [cdf3fa241c] - http2: skip writeHead if stream is closed (Shima Ryuhei) #57686
  • [bbd5aec785] - http2: fix graceful session close (Kushagra Pandey) #57808
  • [b427ae4f34] - meta: remove build-windows.yml (Aviv Keller) #54662
  • [49e624f554] - os: fix netmask format check condition in getCIDR function (Wiyeong Seo) #57324
  • [d582954434] - src: remove unused variable in crypto_x509.cc (Michaël Zasso) #57754
  • [234a505e96] - src: allow embedder customization of OOMErrorHandler (Shelley Vohr) #57325
  • [c0252cd380] - src: fix -Wunreachable-code-return in node_sea (Shelley Vohr) #57664
  • [fcd1622fc1] - src: fix kill signal 0 on Windows (Stefan Stojanovic) #57695
  • [850192b06b] - test: skip broken sea on rhel8 (Marco Ippolito) #58761
  • [3cf7cfb695] - test: update WPT for WebCryptoAPI to edd42c005c (Node.js GitHub Bot) #57365
  • [f57765bdcf] - test: mark test-without-async-context-frame flaky on windows (James M Snell) #56753
  • [275ea8e7ef] - test: force GC in test-file-write-stream4 (Luigi Pinca) #57930
  • [da6a13c338] - test: deflake test-http2-options-max-headers-block-length (Luigi Pinca) #57959
  • [56fce6691e] - test: prevent extraneous HOSTNAME substitution in test-runner-output (René) #58076
  • [c9c0be5596] - test: update expected error message for macOS (Antoine du Hamel) #57742
  • [3cbf5f93d2] - test: fix missing edge case in test-blob-slice-with-large-size (Joyee Cheung) #58414
  • [bffd4ec379] - test: skip in test-buffer-tostring-rangeerror on allocation failure (Joyee Cheung) #58415
  • [8237346fb7] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #54593
  • [b90c4ab937] - tools: remove unused osx-pkg-postinstall.sh (Antoine du Hamel) #57667
  • [414013dcfb] - tools: edit create-release-proposal workflow to handle pr body length (Elves Vieira) #57841
  • [7c449ed6b3] - tools: fix tarball testing directory (Marco Ippolito) #57994
  • [d164dc2d38] - tools: update sccache version to v0.10.0 (Marco Ippolito) #57994
  • [debd3c2cc0] - tools: disable failing test envs in test-linux CI (Antoine du Hamel) #58351
  • [152112505a] - typings: fix ImportModuleDynamicallyCallback return type (Chengzhong Wu) #57160
  • [363bf744ab] - worker: flush stdout and stderr on exit (Matteo Collina) #56428

aduh95 and others added 20 commits May 22, 2025 15:26
29c0324 added a few test environments that are simply not working
20.x branch. Let's revert those changes that were unrelated, probably a
result of a sloppy conflict resolution.

PR-URL: #58351
Reviewed-By: Marco Ippolito <[email protected]>
PR-URL: #57994
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Edy Silva <[email protected]>
PR-URL: #57994
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Edy Silva <[email protected]>
If the buffer allocation fails due to insufficient memory, there is no
point continue testing toString().

PR-URL: #58415
Reviewed-By: LiviaMedeiros <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
The test only cares about whether a size outside the range
of the 32-bit signed integers works with Blob.prototype.slice().
If it fails due to allocation failure when the system
does not have enough memory, the test should just be skipped.
The test previously only skipped the test when the allocation
failure happens during allocation of the buffer source, but
it could also happen during Blob.prototype.slice().

PR-URL: #58414
Fixes: #57235
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Tobias Nießen <[email protected]>
Reviewed-By: LiviaMedeiros <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Stefan Stojanovic <[email protected]>
This is the certdata.txt[0] from NSS 3.108.

This is the version of NSS that shipped in Firefox 136.0 on 2025-03-04.

Certificates added:
- D-TRUST BR Root CA 2 2023
- D-TRUST EV Root CA 2 2023

Certificates removed:
- SwissSign Silver CA - G2

[0] https://raw.githubusercontent.com/nss-dev/nss/refs/tags/NSS_3_108_RTM/lib/ckfw/builtins/certdata.txt

PR-URL: #57381
Reviewed-By: Moshe Atlow <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
The `out/Makefile` target in `Makefile` has an incomplete list of
`.gyp` files for Node.js dependencies in `deps`, but also the ones
that are listed are unconditional. If using any of the `--shared-*`
configure options, it should be possible to still build Node.js if
the corresponding directory under `deps` is removed.

Convert the explicit list of dependency `*.gyp` files for the
`out/Makefile` target to a glob. This will pick up any toplevel
`.gyp` files for dependencies present in `deps`.

PR-URL: #55789
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Juan José Arboleda <[email protected]>
PR-URL: #55892
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Jason Zhang <[email protected]>
PR-URL: #56142
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Tobias Nießen <[email protected]>
Signed-off-by: Matteo Collina <[email protected]>
PR-URL: #56428
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Paolo Insogna <[email protected]>
PR-URL: #56764
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
PR-URL: #57265
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
PR-URL: #57384
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
PR-URL: #57620
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Ulises Gascón <[email protected]>
Reviewed-By: Jordan Harband <[email protected]>
Reviewed-By: Chemi Atlow <[email protected]>
This special case was missed in the previous changes to this file.

Refs: #55514
Refs: #42923
Fixes: #57669
PR-URL: #57695
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Jake Yuesong Li <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
PR-URL: #57742
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
PR-URL: #57785
Refs: #40121
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: James M Snell <[email protected]>
increase the z-index of the header element to make sure that
opened pickers from it (such as the node version picker) are
on top of other content

PR-URL: #57851
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Co-Authored-By: richardlau - Richard Lau <[email protected]>
PR-URL: #58090
Refs: #57934
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/actions
  • @nodejs/gyp
  • @nodejs/security-wg
  • @nodejs/tsc

@nodejs-github-bot nodejs-github-bot added build Issues and PRs related to build files or the CI. dependencies Pull requests that update a dependency file. doc Issues and PRs related to the documentations. meta Issues and PRs related to the general management of the project. needs-ci PRs that need a full CI run. v20.x v20.x Issues that can be reproduced on v20.x or PRs targeting the v20.x-staging branch. labels Jun 5, 2025
marco-ippolito added a commit that referenced this pull request Jun 5, 2025
Notable changes:

crypto:
  * graduate WebCryptoAPI Ed25519 and X25519 algorithms as stable (Filip Skokan) #56142
  * update root certificates to NSS 3.108 (Node.js GitHub Bot) #57381
deps:
  * update timezone to 2025b (Node.js GitHub Bot) #57857
doc:
  * stabilize util.styleText (Rafael Gonzaga) #56265
  * add dario-piotrowicz to collaborators (Dario Piotrowicz) #58102

PR-URL: #58588
@marco-ippolito marco-ippolito removed the doc Issues and PRs related to the documentations. label Jun 5, 2025
@nodejs-github-bot
Copy link
Collaborator

@marco-ippolito
Copy link
Member Author

Dropped the commit and changed the release date to 2025-06-17

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@marco-ippolito
Copy link
Member Author

@nodejs/releasers asking for help on this release. I have no idea how to fix the test failing on rhel

@aduh95
Copy link
Contributor

aduh95 commented Jun 15, 2025

Let's bisect

git bisect bad fb7d05e07cf211968a7a0db502f67861cc64d15f
git bisect good 14d228a5fff4621c472f654d00c1ae6c1ce751bc

https://ci.nodejs.org/job/node-test-commit-plinux/59465/


Bisecting [10fb49f] deps: update icu to 77.1 GOOD 🟢
https://ci.nodejs.org/job/node-test-commit-plinux/59467/


Bisecting [d582954] src: remove unused variable in crypto_x509.cc GOOD 🟢
https://ci.nodejs.org/job/node-test-commit-plinux/59473/


Bisecting [1521125] typings: fix ImportModuleDynamicallyCallback return type GOOD 🟢
https://ci.nodejs.org/job/node-test-commit-plinux/59474/


Bisecting [8237346] test,crypto: update WebCryptoAPI WPT GOOD 🟢
https://ci.nodejs.org/job/node-test-commit-plinux/59476/


Bisecting [3cf7cfb] test: update WPT for WebCryptoAPI to edd42c005c GOOD 🟢
https://ci.nodejs.org/job/node-test-commit-plinux/59478/


Bisecting [b427ae4] meta: remove build-windows.yml GOOD 🟢
https://ci.nodejs.org/job/node-test-commit-plinux/59485/


Bisecting [fb7d05e] 2025-06-17, Version 20.19.3 'Iron' (LTS) BAD 🔴
https://ci.nodejs.org/job/node-test-commit-plinux/59486

@nodejs-github-bot
Copy link
Collaborator

@marco-ippolito
Copy link
Member Author

marco-ippolito commented Jun 16, 2025

The release commit is the bad commit fb7d05e, it makes the test fail 🫤
But its only markdown...
maybe the #define NODE_VERSION_IS_RELEASE 1 changes something in SEA? @RaisinTen @joyeecheung

@RaisinTen
Copy link
Member

I'm not able to think of how that change could affect SEA. It's just as surprising as the webcrypto WPT update that was being suspected earlier.

Weird that this fails on just rhel8-ppc64le and not on rhel9-ppc64le. @nodejs/platform-ppc might know why.

I suspect this is because of a platform limitation.

Another way of debugging this would be to study the core dump if one is produced or run the SEA in a debugger and check the backtrace to know where the segmentation fault is happening.

@marco-ippolito
Copy link
Member Author

I agree this is a @nodejs/build specifically @nodejs/platform-ppc issue so not really much I can do about it

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@joyeecheung
Copy link
Member

It seems fine to just skip the test on rhel8+ppc, that's only a tier 2 platform and I doubt how many users would actually be affected by this.

@marco-ippolito
Copy link
Member Author

marco-ippolito commented Jun 18, 2025

Technically

Tier 2: These platforms represent smaller segments of the Node.js user base. The Node.js Build Working Group maintains infrastructure for full test coverage. Test failures on tier 2 platforms will block releases. Infrastructure issues may delay the release of binaries for these platforms.

Test failures on tier 2 platforms will block releases

Is it ok to mark all these tests as skip?

[sequential.test-single-executable-application](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application/)
[sequential.test-single-executable-application-assets](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application_assets/)
[sequential.test-single-executable-application-assets-raw](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application_assets_raw/)
[sequential.test-single-executable-application-disable-experimental-sea-warning](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application_disable_experimental_sea_warning/)
[sequential.test-single-executable-application-empty](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application_empty/)
[sequential.test-single-executable-application-snapshot](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application_snapshot/)
[sequential.test-single-executable-application-snapshot-and-code-cache](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application_snapshot_and_code_cache/)
[sequential.test-single-executable-application-snapshot-worker](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application_snapshot_worker/)
[sequential.test-single-executable-application-use-code-cache](https://ci.nodejs.org/job/node-test-commit-plinux/nodes=rhel8-ppc64le/59518/testReport/junit/(root)/sequential/test_single_executable_application_use_code_cache/)

@RaisinTen
Copy link
Member

I'm also okay with marking these tests as skip on v20.x for rhel8-ppc64le because SEA is experimental. Also, arm64 is tier 1 on Linux and macOS but we are already skipping some tests on main -

[$arch==arm || $arch==arm64]
# https://github.com/nodejs/node/pull/31178
test-crypto-dh-stateless: SKIP
test-crypto-keygen: SKIP

@marco-ippolito
Copy link
Member Author

marco-ippolito commented Jun 19, 2025

I opened a PR to skip these tests PTAL #58761

@mhdawson
Copy link
Member

I'm ok with skipping the tests since SEA is experimental and I believe that there is likely low usage on power systems at this point

PR-URL: #58761
Refs: #58588
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Darshan Sen <[email protected]>
Reviewed-By: Michael Dawson <[email protected]>
Notable changes:

crypto:
  * graduate WebCryptoAPI Ed25519 and X25519 algorithms as stable (Filip Skokan) #56142
  * update root certificates to NSS 3.108 (Node.js GitHub Bot) #57381
deps:
  * update timezone to 2025b (Node.js GitHub Bot) #57857
doc:
  * add dario-piotrowicz to collaborators (Dario Piotrowicz) #58102

PR-URL: #58588
@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

nodejs-github-bot commented Jun 20, 2025

@marco-ippolito
Copy link
Member Author

Finally a green CI 🥹

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
needs-ci PRs that need a full CI run. needs-citgm PRs that need a CITGM CI run. release Issues and PRs related to Node.js releases. v8 engine Issues and PRs related to the V8 dependency. v20.x v20.x Issues that can be reproduced on v20.x or PRs targeting the v20.x-staging branch.
Projects
None yet
Development

Successfully merging this pull request may close these issues.