-
-
Notifications
You must be signed in to change notification settings - Fork 33.7k
src: fix timing of snapshot serialize callback #60434
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
Conversation
Previously the addAfterUserSerailizeCallback() wasn't ready to be used for building the built-in snapshot. This patch initializes the callbacks at the time lib/internal/v8/start_snapshot.js is loaded, so that these callbacks get run correctly when building the built-in snapshot. Currently when building the built-in snapshot, addAfterUserSerializeCallback() is only used by createUnsafeBuffer(), other usages can only come from user-land snapshots, which is covered by tests, but what gets run by the built-in snapshot building process is less visible, and the path used by createUnsafeBuffer() isn't reliably visible in user land either. This adds an internal usage counter in debug builds to verify this path when building the built-in snapshot.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: this effectively disables --zero-fill-buffers default being on since 24.0.0
If not for a significant perf impact, this should have been a semver-major change at this point
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #60434 +/- ##
==========================================
+ Coverage 88.07% 88.57% +0.50%
==========================================
Files 704 704
Lines 207778 207814 +36
Branches 39949 40038 +89
==========================================
+ Hits 182998 184078 +1080
+ Misses 16791 15775 -1016
+ Partials 7989 7961 -28
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RSLGTM
|
Also this likely should be both a notable change and have a clear description that it disables default buffer zero-filling, which has been accidental |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Testing ./node -e 'for (let i = 0; i < 1e6; i++) {if(Buffer.allocUnsafe(4096).some(x=>x))process.exit(0)}process.exit(1)' is failing without this patch, and passing with it
|
Fast-track has been requested by @aduh95. Please 👍 to approve. |
|
Fast track so it can get into #60436? |
|
Adding
baking-for-lts
|
Commit Queue failed- Loading data for nodejs/node/pull/60434 ✔ Done loading data for nodejs/node/pull/60434 ----------------------------------- PR info ------------------------------------ Title src: fix timing of snapshot serialize callback (#60434) Author Joyee Cheung <joyeec9h3@gmail.com> (@joyeecheung) Branch joyeecheung:buffer -> nodejs:main Labels c++, lib / src, baking-for-lts, fast-track, author ready, needs-ci Commits 4 - src: add COUNT_GENERIC_USAGE utility for tests - src: fix timing of snapshot serialize callback - fixup! src: fix timing of snapshot serialize callback - fixup! fixup! src: fix timing of snapshot serialize callback Committers 1 - Joyee Cheung <joyeec9h3@gmail.com> PR-URL: https://github.com/nodejs/node/pull/60434 Fixes: https://github.com/nodejs/node/issues/60423 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com> ------------------------------ Generated metadata ------------------------------ PR-URL: https://github.com/nodejs/node/pull/60434 Fixes: https://github.com/nodejs/node/issues/60423 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com> -------------------------------------------------------------------------------- ℹ This PR was created on Mon, 27 Oct 2025 14:31:11 GMT ✔ Approvals: 3 ✔ - Matteo Collina (@mcollina) (TSC): https://github.com/nodejs/node/pull/60434#pullrequestreview-3384325240 ✔ - Antoine du Hamel (@aduh95) (TSC): https://github.com/nodejs/node/pull/60434#pullrequestreview-3384634586 ✔ - Richard Lau (@richardlau) (TSC): https://github.com/nodejs/node/pull/60434#pullrequestreview-3386023877 ℹ This PR is being fast-tracked ✔ Last GitHub CI successful ℹ Last Full PR CI on 2025-10-27T22:09:50Z: https://ci.nodejs.org/job/node-test-pull-request/69909/ - Querying data for job/node-test-pull-request/69909/ ✔ Last Jenkins CI successful -------------------------------------------------------------------------------- ✔ No git cherry-pick in progress ✔ No git am in progress ✔ No git rebase in progress -------------------------------------------------------------------------------- - Bringing origin/main up to date... From https://github.com/nodejs/node * branch main -> FETCH_HEAD ✔ origin/main is now up-to-date - Downloading patch for 60434 From https://github.com/nodejs/node * branch refs/pull/60434/merge -> FETCH_HEAD ✔ Fetched commits as 51a57f2b3629..d6d46594f8e8 -------------------------------------------------------------------------------- [main 74f6c4aa82] src: add COUNT_GENERIC_USAGE utility for tests Author: Joyee Cheung <joyeec9h3@gmail.com> Date: Mon Oct 27 13:42:30 2025 +0100 3 files changed, 35 insertions(+), 2 deletions(-) [main 7f70321948] src: fix timing of snapshot serialize callback Author: Joyee Cheung <joyeec9h3@gmail.com> Date: Mon Oct 27 13:43:09 2025 +0100 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 test/parallel/test-buffer-alloc-unsafe-is-uninitialized.js [main 9f399a1b9a] fixup! src: fix timing of snapshot serialize callback Author: Joyee Cheung <joyeec9h3@gmail.com> Date: Mon Oct 27 17:42:51 2025 +0100 2 files changed, 21 insertions(+) create mode 100644 test/parallel/test-buffer-alloc-unsafe-is-initialized-with-zero-fill-flag.js [main d7be4afbbf] fixup! fixup! src: fix timing of snapshot serialize callback Author: Joyee Cheung <joyeec9h3@gmail.com> Date: Mon Oct 27 18:11:18 2025 +0100 2 files changed, 14 insertions(+), 8 deletions(-) ✔ Patches applied There are 4 commits in the PR. Attempting autorebase. Rebasing (2/6) Executing: git node land --amend --yes --------------------------------- New Message ---------------------------------- src: add COUNT_GENERIC_USAGE utility for testshttps://github.com/nodejs/node/actions/runs/18859727179 |
| using v8::Value; | ||
|
|
||
| thread_local std::unordered_map<std::string, int> generic_usage_counters; | ||
| thread_local std::unordered_map<FastStringKey, int, FastStringKey::Hash> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's make this use FastStringKey as well, that is useful here for the same reason as it is for fast API call count tracking
| if (generic_usage_counters.find(counter_name) == generic_usage_counters.end()) | ||
| generic_usage_counters[counter_name] = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| if (generic_usage_counters.find(counter_name) == generic_usage_counters.end()) | |
| generic_usage_counters[counter_name] = 0; |
... since this doesn't actually do anything, right? operator[] creates the element for you if it doesn't exist
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
will do a separate PR – #60447
|
Landed in 51a57f2...1f6b681 |
Previously the addAfterUserSerailizeCallback() wasn't ready to be used for building the built-in snapshot. This patch initializes the callbacks at the time lib/internal/v8/start_snapshot.js is loaded, so that these callbacks get run correctly when building the built-in snapshot. Currently when building the built-in snapshot, addAfterUserSerializeCallback() is only used by createUnsafeBuffer(), other usages can only come from user-land snapshots, which is covered by tests, but what gets run by the built-in snapshot building process is less visible, and the path used by createUnsafeBuffer() isn't reliably visible in user land either. This adds an internal usage counter in debug builds to verify this path when building the built-in snapshot. PR-URL: #60434 Fixes: #60423 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com>
Previously the addAfterUserSerailizeCallback() wasn't ready to be used for building the built-in snapshot. This patch initializes the callbacks at the time lib/internal/v8/start_snapshot.js is loaded, so that these callbacks get run correctly when building the built-in snapshot. Currently when building the built-in snapshot, addAfterUserSerializeCallback() is only used by createUnsafeBuffer(), other usages can only come from user-land snapshots, which is covered by tests, but what gets run by the built-in snapshot building process is less visible, and the path used by createUnsafeBuffer() isn't reliably visible in user land either. This adds an internal usage counter in debug builds to verify this path when building the built-in snapshot. PR-URL: #60434 Fixes: #60423 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com>
This addresses late review comments for the recently landed cfbfc1b. Refs: nodejs#60434 (review)
This addresses late review comments for the recently landed cfbfc1b and aligns the new code with the pre-existing V8 fast call counters. Refs: nodejs#60434 (review)
|
Given this landed, how fast can it get into 24? |
Why should restoring documented behaviour that's present on 22 and now 25 need wait to land on 24? I think
baking-for-lts
|
|
I'm removing
baking-for-lts
|
This addresses late review comments for the recently landed cfbfc1b and aligns the new code with the pre-existing V8 fast call counters. Refs: #60434 (review) PR-URL: #60447 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Previously the addAfterUserSerailizeCallback() wasn't ready to be used for building the built-in snapshot. This patch initializes the callbacks at the time lib/internal/v8/start_snapshot.js is loaded, so that these callbacks get run correctly when building the built-in snapshot. Currently when building the built-in snapshot, addAfterUserSerializeCallback() is only used by createUnsafeBuffer(), other usages can only come from user-land snapshots, which is covered by tests, but what gets run by the built-in snapshot building process is less visible, and the path used by createUnsafeBuffer() isn't reliably visible in user land either. This adds an internal usage counter in debug builds to verify this path when building the built-in snapshot. PR-URL: #60434 Fixes: #60423 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com>
Previously the addAfterUserSerailizeCallback() wasn't ready to be used for building the built-in snapshot. This patch initializes the callbacks at the time lib/internal/v8/start_snapshot.js is loaded, so that these callbacks get run correctly when building the built-in snapshot. Currently when building the built-in snapshot, addAfterUserSerializeCallback() is only used by createUnsafeBuffer(), other usages can only come from user-land snapshots, which is covered by tests, but what gets run by the built-in snapshot building process is less visible, and the path used by createUnsafeBuffer() isn't reliably visible in user land either. This adds an internal usage counter in debug builds to verify this path when building the built-in snapshot. PR-URL: #60434 Fixes: #60423 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com>
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `25.0.0` -> `25.1.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v25.1.0`](https://github.com/nodejs/node/releases/tag/v25.1.0): 2025-10-28, Version 25.1.0 (Current), @​aduh95 [Compare Source](nodejs/node@v25.0.0...v25.1.0) ##### Notable Changes - \[[`4395fe14b9`](nodejs/node@4395fe14b9)] - **(SEMVER-MINOR)** **http**: add optimizeEmptyRequests server option (Rafael Gonzaga) [#​59778](nodejs/node#59778) - \[[`2e55c6ad04`](nodejs/node@2e55c6ad04)] - **(SEMVER-MINOR)** **sqlite**: allow setting defensive flag (Bart Louwers) [#​60217](nodejs/node#60217) - \[[`f437204491`](nodejs/node@f437204491)] - **(SEMVER-MINOR)** **src**: add watch config namespace (Marco Ippolito) [#​60178](nodejs/node#60178) ##### Commits - \[[`bb27766bd5`](nodejs/node@bb27766bd5)] - **benchmark**: improve cpu.sh for safety and usability (Nam Yooseong) [#​60162](nodejs/node#60162) - \[[`e600711c20`](nodejs/node@e600711c20)] - **benchmark**: add benchmark for leaf source text modules (Joyee Cheung) [#​60205](nodejs/node#60205) - \[[`1bbcdf9039`](nodejs/node@1bbcdf9039)] - **benchmark**: add vm.SourceTextModule benchmark (Joyee Cheung) [#​59396](nodejs/node#59396) - \[[`22fa6bd28b`](nodejs/node@22fa6bd28b)] - **build**: ibmi follow aix visibility (SRAVANI GUNDEPALLI) [#​60360](nodejs/node#60360) - \[[`931028400e`](nodejs/node@931028400e)] - **build**: use call command when calling python configure (Jacob Nichols) [#​60098](nodejs/node#60098) - \[[`17fde3f3d1`](nodejs/node@17fde3f3d1)] - **build**: build v8 with -fvisibility=hidden -fvisibility-inlines-hidden (Joyee Cheung) [#​56290](nodejs/node#56290) - \[[`04cc7aae5e`](nodejs/node@04cc7aae5e)] - **build**: remove V8\_COMPRESS\_POINTERS\_IN\_ISOLATE\_CAGE defs (Joyee Cheung) [#​60296](nodejs/node#60296) - \[[`8a2053060d`](nodejs/node@8a2053060d)] - **crypto**: update root certificates to NSS 3.116 (Node.js GitHub Bot) [#​59956](nodejs/node#59956) - \[[`fe91c0f755`](nodejs/node@fe91c0f755)] - **deps**: update simdjson to 4.0.7 (Node.js GitHub Bot) [#​59883](nodejs/node#59883) - \[[`aacfc0d212`](nodejs/node@aacfc0d212)] - **deps**: update corepack to 0.34.1 (Node.js GitHub Bot) [#​60314](nodejs/node#60314) - \[[`8596891a71`](nodejs/node@8596891a71)] - **deps**: update inspector\_protocol to [`af7f5a8`](nodejs/node@af7f5a8) (Node.js GitHub Bot) [#​60312](nodejs/node#60312) - \[[`21bcd0eb2f`](nodejs/node@21bcd0eb2f)] - **deps**: V8: cherry-pick [`3d0f462`](nodejs/node@3d0f462a17ff) (Joyee Cheung) [#​59396](nodejs/node#59396) - \[[`673558501c`](nodejs/node@673558501c)] - **deps**: update googletest to [`279f847`](nodejs/node@279f847) (Node.js GitHub Bot) [#​60219](nodejs/node#60219) - \[[`425a1879b1`](nodejs/node@425a1879b1)] - **doc**: mention more codemods in `deprecations.md` (Augustin Mauroy) [#​60243](nodejs/node#60243) - \[[`563e1317f3`](nodejs/node@563e1317f3)] - **doc**: remove unnecessary statement of web storage (Deokjin Kim) [#​60363](nodejs/node#60363) - \[[`064c8c5cfd`](nodejs/node@064c8c5cfd)] - **doc**: add missing CAA type to dns.resolveAny() & dnsPromises.resolveAny() (Jimmy Leung) [#​58899](nodejs/node#58899) - \[[`99e357af35`](nodejs/node@99e357af35)] - **doc**: use `any` for `worker_threads.Worker` 'error' event argument `err` (Jonas Geiler) [#​60300](nodejs/node#60300) - \[[`8ccff0d934`](nodejs/node@8ccff0d934)] - **doc**: update decorator documentation to reflect actual policy (Muhammad Salman Aziz) [#​60288](nodejs/node#60288) - \[[`bac70c6ef3`](nodejs/node@bac70c6ef3)] - **doc**: document wildcard supported by tools/test.py (Joyee Cheung) [#​60265](nodejs/node#60265) - \[[`8492bc6a88`](nodejs/node@8492bc6a88)] - **doc**: add --heap-snapshot-on-oom to useful v8 flag (jakecastelli) [#​60260](nodejs/node#60260) - \[[`0f0d3c0e47`](nodejs/node@0f0d3c0e47)] - **doc**: fix `blob.bytes()` heading level (XTY) [#​60252](nodejs/node#60252) - \[[`8c8525cf93`](nodejs/node@8c8525cf93)] - **doc**: fix not working code example in vm docs (Artur Gawlik) [#​60224](nodejs/node#60224) - \[[`8a6de3866c`](nodejs/node@8a6de3866c)] - **doc, assert**: correct order of changes entries (Gerhard Stöbich) [#​60304](nodejs/node#60304) - \[[`6bacb6555a`](nodejs/node@6bacb6555a)] - **doc, module**: change async customization hooks to experimental (Gerhard Stöbich) [#​60302](nodejs/node#60302) - \[[`6f3b16df16`](nodejs/node@6f3b16df16)] - **esm**: use index-based resolution callbacks (Joyee Cheung) [#​59396](nodejs/node#59396) - \[[`95644a432c`](nodejs/node@95644a432c)] - **http**: lazy allocate cookies array (Robert Nagy) [#​59734](nodejs/node#59734) - \[[`4395fe14b9`](nodejs/node@4395fe14b9)] - **(SEMVER-MINOR)** **http**: add optimizeEmptyRequests server option (Rafael Gonzaga) [#​59778](nodejs/node#59778) - \[[`f1aa1eaaf5`](nodejs/node@f1aa1eaaf5)] - **inspector**: add network payload buffer size limits (Chengzhong Wu) [#​60236](nodejs/node#60236) - \[[`64fc625bf9`](nodejs/node@64fc625bf9)] - **inspector**: support handshake response for websocket inspection (Shima Ryuhei) [#​60225](nodejs/node#60225) - \[[`0ecbb806a8`](nodejs/node@0ecbb806a8)] - **lib**: fix typo in createBlobReaderStream (SeokHun) [#​60132](nodejs/node#60132) - \[[`ffec5927fd`](nodejs/node@ffec5927fd)] - **meta**: fix typo in test-shared workflow name (Ronit Sabhaya) [#​60321](nodejs/node#60321) - \[[`a02897e157`](nodejs/node@a02897e157)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#​60325](nodejs/node#60325) - \[[`59223a7831`](nodejs/node@59223a7831)] - **meta**: loop userland-migrations in deprecations (Chengzhong Wu) [#​60299](nodejs/node#60299) - \[[`2d48d17696`](nodejs/node@2d48d17696)] - **module**: refactor and clarify async loader hook customizations (Joyee Cheung) [#​60278](nodejs/node#60278) - \[[`be1b84fd93`](nodejs/node@be1b84fd93)] - **module**: handle null source from async loader hooks in sync hooks (Joyee Cheung) [#​59929](nodejs/node#59929) - \[[`063fbd87d3`](nodejs/node@063fbd87d3)] - **msi**: fix WiX warnings (Stefan Stojanovic) [#​60251](nodejs/node#60251) - \[[`2e55c6ad04`](nodejs/node@2e55c6ad04)] - **(SEMVER-MINOR)** **sqlite**: allow setting defensive flag (Bart Louwers) [#​60217](nodejs/node#60217) - \[[`dc93d6988a`](nodejs/node@dc93d6988a)] - **src**: fix timing of snapshot serialize callback (Joyee Cheung) [#​60434](nodejs/node#60434) - \[[`267e1b3817`](nodejs/node@267e1b3817)] - **src**: add COUNT\_GENERIC\_USAGE utility for tests (Joyee Cheung) [#​60434](nodejs/node#60434) - \[[`4a5d7a4c2a`](nodejs/node@4a5d7a4c2a)] - **src**: conditionally disable source phase imports by default (Shelley Vohr) [#​60364](nodejs/node#60364) - \[[`f437204491`](nodejs/node@f437204491)] - **(SEMVER-MINOR)** **src**: add watch config namespace (Marco Ippolito) [#​60178](nodejs/node#60178) - \[[`36837fa0f9`](nodejs/node@36837fa0f9)] - **src**: use cached primordials\_string (Sohyeon Kim) [#​60255](nodejs/node#60255) - \[[`df8396ad37`](nodejs/node@df8396ad37)] - **src**: replace Environment::GetCurrent with args.GetIsolate (Sohyeon Kim) [#​60256](nodejs/node#60256) - \[[`5dd670b2b9`](nodejs/node@5dd670b2b9)] - **src**: initial enablement of IsolateGroups (James M Snell) [#​60254](nodejs/node#60254) - \[[`afdb362933`](nodejs/node@afdb362933)] - **src**: use `Utf8Value` and `TwoByteValue` instead of V8 helpers (Anna Henningsen) [#​60244](nodejs/node#60244) - \[[`a40e533e72`](nodejs/node@a40e533e72)] - **src**: add a default branch for module phase (Chengzhong Wu) [#​60261](nodejs/node#60261) - \[[`42729f07ee`](nodejs/node@42729f07ee)] - **src**: stop using deprecated v8::Context::GetIsolate (Michaël Zasso) [#​60223](nodejs/node#60223) - \[[`7a6542c205`](nodejs/node@7a6542c205)] - **test**: skip failing test on macOS 15.7+ (Antoine du Hamel) [#​60419](nodejs/node#60419) - \[[`29a5855a4f`](nodejs/node@29a5855a4f)] - **test**: ensure assertions are reachable in `test/addons` (Antoine du Hamel) [#​60142](nodejs/node#60142) - \[[`12773d19c4`](nodejs/node@12773d19c4)] - **test**: increase debugger waitFor timeout on macOS (Chengzhong Wu) [#​60367](nodejs/node#60367) - \[[`0b38de3e9e`](nodejs/node@0b38de3e9e)] - **test**: put helper in test-runner-output into common (Joyee Cheung) [#​60330](nodejs/node#60330) - \[[`6de2407c44`](nodejs/node@6de2407c44)] - **test**: fix small compile warning in test\_network\_requests\_buffer.cc (xiaocainiao633) [#​60281](nodejs/node#60281) - \[[`4b23ac8613`](nodejs/node@4b23ac8613)] - **test**: fix status when compiled without inspector (Antoine du Hamel) [#​60289](nodejs/node#60289) - \[[`a07f32e326`](nodejs/node@a07f32e326)] - **test**: split test-runner-watch-mode-kill-signal (Joyee Cheung) [#​60298](nodejs/node#60298) - \[[`30451d32d7`](nodejs/node@30451d32d7)] - **test**: fix incorrect calculation in test-perf-hooks.js (Joyee Cheung) [#​60271](nodejs/node#60271) - \[[`e3c3b48f1c`](nodejs/node@e3c3b48f1c)] - **test**: ignore EPIPE errors in https proxy invalid URL test (Joyee Cheung) [#​60269](nodejs/node#60269) - \[[`405a9c4c5f`](nodejs/node@405a9c4c5f)] - **test**: parallelize test-without-async-context-frame correctly (Joyee Cheung) [#​60273](nodejs/node#60273) - \[[`ffeebebc71`](nodejs/node@ffeebebc71)] - **test**: make test-worker-prof more tolerant (Joyee Cheung) [#​60272](nodejs/node#60272) - \[[`26b01bf170`](nodejs/node@26b01bf170)] - **test**: skip sea tests on x64 macOS (Joyee Cheung) [#​60250](nodejs/node#60250) - \[[`8caae1a05b`](nodejs/node@8caae1a05b)] - **test**: move sea tests into test/sea (Joyee Cheung) [#​60250](nodejs/node#60250) - \[[`3d183e3e9f`](nodejs/node@3d183e3e9f)] - **test,crypto**: fix conditional SHA3-\* skip on BoringSSL (Filip Skokan) [#​60379](nodejs/node#60379) - \[[`e83dbcba94`](nodejs/node@e83dbcba94)] - **test,crypto**: sha3 algorithms aren't supported with BoringSSL (Shelley Vohr) [#​60374](nodejs/node#60374) - \[[`3d89331496`](nodejs/node@3d89331496)] - **test\_runner**: use module.registerHooks in module mocks (Joyee Cheung) [#​60326](nodejs/node#60326) - \[[`377e8ce85a`](nodejs/node@377e8ce85a)] - **tls**: avoid external memory leak on invalid protocol versions (Shelley Vohr) [#​60390](nodejs/node#60390) - \[[`ae4858c1f6`](nodejs/node@ae4858c1f6)] - **tools**: add an option to generate lighter archives (Antoine du Hamel) [#​60294](nodejs/node#60294) - \[[`cb615b1a2e`](nodejs/node@cb615b1a2e)] - **tools**: skip test-shared workflow for draft MRs (Michaël Zasso) [#​60365](nodejs/node#60365) - \[[`03b034731e`](nodejs/node@03b034731e)] - **tools**: disable inspector on macOS-shared to reduce flakiness (Antoine du Hamel) [#​60320](nodejs/node#60320) - \[[`f402b4e1d1`](nodejs/node@f402b4e1d1)] - **tools**: show diff alongside the error in Nix linter (Antoine du Hamel) [#​60301](nodejs/node#60301) - \[[`5d5c8483fb`](nodejs/node@5d5c8483fb)] - **tools**: run CI with shared libs on GHA (Antoine du Hamel) [#​60121](nodejs/node#60121) - \[[`e8fdd8d2e8`](nodejs/node@e8fdd8d2e8)] - **tools**: update gyp-next to 0.20.5 (Node.js GitHub Bot) [#​60313](nodejs/node#60313) - \[[`6e8b029a21`](nodejs/node@6e8b029a21)] - **tools**: limit inspector protocol MR title length (Chengzhong Wu) [#​60324](nodejs/node#60324) - \[[`a5073086c6`](nodejs/node@a5073086c6)] - **tools**: fix inspector\_protocol updater (Chengzhong Wu) [#​60277](nodejs/node#60277) - \[[`47fa765bff`](nodejs/node@47fa765bff)] - **tools**: optimize wildcard execution in tools/test.py (Joyee Cheung) [#​60266](nodejs/node#60266) - \[[`11ebb0447d`](nodejs/node@11ebb0447d)] - **tools**: add C++ lint rule to avoid using `String::Utf8Value` (Anna Henningsen) [#​60244](nodejs/node#60244) - \[[`14f3189670`](nodejs/node@14f3189670)] - **tools**: add inspector\_protocol updater (Chengzhong Wu) [#​60245](nodejs/node#60245) - \[[`ef4c596fc6`](nodejs/node@ef4c596fc6)] - **typings**: add missing properties and method in Worker (Woohyun Sung) [#​60257](nodejs/node#60257) - \[[`09ae6fc065`](nodejs/node@09ae6fc065)] - **typings**: add missing properties in HTTPParser (Woohyun Sung) [#​60257](nodejs/node#60257) - \[[`9ecaf41f8e`](nodejs/node@9ecaf41f8e)] - **typings**: delete undefined property in ConfigBinding (Woohyun Sung) [#​60257](nodejs/node#60257) - \[[`4a86016e86`](nodejs/node@4a86016e86)] - **util**: use more defensive code when inspecting error objects (Antoine du Hamel) [#​60139](nodejs/node#60139) - \[[`9e6d6cec59`](nodejs/node@9e6d6cec59)] - **util**: mark special properties when inspecting them (Ruben Bridgewater) [#​60131](nodejs/node#60131) - \[[`79b2387fd9`](nodejs/node@79b2387fd9)] - **vm**: make vm.Module.evaluate() conditionally synchronous (Joyee Cheung) [#​60205](nodejs/node#60205) - \[[`e5559f3be3`](nodejs/node@e5559f3be3)] - **win**: upgrade Visual Studio workload from 2019 to 2022 (Jiawen Geng) [#​60318](nodejs/node#60318) </details> --- ### 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 MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
src: add COUNT_GENERIC_USAGE utility for tests
src: fix timing of snapshot serialize callback
Previously the addAfterUserSerailizeCallback() wasn't
ready to be used for building the built-in snapshot.
This patch initializes the callbacks at the time
lib/internal/v8/start_snapshot.js is loaded, so that
these callbacks get run correctly when building the
built-in snapshot.
Currently when building the built-in snapshot,
addAfterUserSerializeCallback() is only used by createUnsafeBuffer(),
other usages can only come from user-land snapshots,
which is covered by tests, but what gets run by the
built-in snapshot building process is less visible, and the
path used by createUnsafeBuffer() isn't reliably visible in user
land either. This adds an internal usage counter in debug builds
to verify this path when building the built-in snapshot.
Fixes: #60423