Skip to content

Conversation

@joyeecheung
Copy link
Member

This makes use of a new module resolution V8 API that passes in
an index to the module request array to identify the module
request, which eliminates the need of hashing on the module
request for lookup on our end.

Refs: https://chromium-review.googlesource.com/c/v8/v8/+/6804466

@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/gyp
  • @nodejs/loaders
  • @nodejs/security-wg
  • @nodejs/v8-update
  • @nodejs/vm

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Aug 7, 2025
hubot pushed a commit to v8/v8 that referenced this pull request Sep 18, 2025
Add new InstantiateModule() overload that allows embedders to identify
modules requests by index in the module requests array rather than
using specifier and import attributes. When embedders want to fetch
all the modules using information from module->GetModuleRequests()
before calling InstantiateModule() instead of having to do the fetching
inside the InstantiateModule() callback, they could just maintain a simple array of modules indexed by module request positions and
look up the fetched the module by index in the new callback.
Previously this has to be done by mapping from specifier and import
attributes to module objects cached on the embedder side, leading to an overhead to hash the specifier and import attributes for each module request.

Refs: nodejs/node#59396
Bug: 435317398
Change-Id: Ie017d2f3ccc605e0f58aa423504b5fa5fdbcc633
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
Commit-Queue: Joyee Cheung <[email protected]>
Reviewed-by: Camillo Bruni <[email protected]>
Cr-Commit-Position: refs/heads/main@{#102613}
joyeecheung added a commit to joyeecheung/node that referenced this pull request Oct 9, 2025
Original commit message:

    [api] Add index-based module resolution in InstantiateModule()

    Add new InstantiateModule() overload that allows embedders to identify
    modules requests by index in the module requests array rather than
    using specifier and import attributes. When embedders want to fetch
    all the modules using information from module->GetModuleRequests()
    before calling InstantiateModule() instead of having to do the fetching
    inside the InstantiateModule() callback, they could just maintain a simple array of modules indexed by module request positions and
    look up the fetched the module by index in the new callback.
    Previously this has to be done by mapping from specifier and import
    attributes to module objects cached on the embedder side, leading to an overhead to hash the specifier and import attributes for each module request.

    Refs: nodejs#59396
    Bug: 435317398
    Change-Id: Ie017d2f3ccc605e0f58aa423504b5fa5fdbcc633
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
    Commit-Queue: Joyee Cheung <[email protected]>
    Reviewed-by: Camillo Bruni <[email protected]>
    Cr-Commit-Position: refs/heads/main@{#102613}

Refs: v8/v8@3d0f462
@joyeecheung joyeecheung force-pushed the index-resolution branch 5 times, most recently from 0330add to 02eb24d Compare October 9, 2025 14:17
@joyeecheung joyeecheung marked this pull request as ready for review October 9, 2025 14:20
@joyeecheung
Copy link
Member Author

Rebased after the V8 CL landed in the upstream

Local<Value> first_seen_module;
for (int i = 0; i < request_count; i++) {
// TODO(joyeecheung): merge this with the serializeKey() in module_map.js.
// This currently doesn't sort the import attributes.
Copy link
Member Author

@joyeecheung joyeecheung Oct 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left a TODO here since it's a bit out of scope of this PR; I think we can move this check to JS land and for the built-in loader, this check can be omitted (since it can just skip re-initiating loading for the same module request) so we can save a bit of overhead there.

code: 'ERR_MODULE_LINK_MISMATCH',
// Test that ModuleCacheKey::ToString() is used in the error message.
message: `Module request 'ModuleCacheKey("bar")' at index 0 must be linked to the same module requested at index 1`
message: `Module request 'ModuleCacheKey("bar")' at index 1 must be linked to the same module requested at index 0`
Copy link
Member Author

@joyeecheung joyeecheung Oct 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the new message is a bit more natural - "a later module request must be resolved to the same module identified by a former identical request", instead of "a former module request must be resolved to the same module identified by a later identical request".

@joyeecheung joyeecheung requested a review from legendecas October 9, 2025 14:29
@nodejs-github-bot
Copy link
Collaborator

@codecov
Copy link

codecov bot commented Oct 9, 2025

Codecov Report

❌ Patch coverage is 75.00000% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 88.56%. Comparing base (5cf3c3e) to head (076cdf6).
⚠️ Report is 13 commits behind head on main.

Files with missing lines Patch % Lines
src/module_wrap.cc 75.00% 4 Missing and 8 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #59396      +/-   ##
==========================================
- Coverage   88.56%   88.56%   -0.01%     
==========================================
  Files         704      704              
  Lines      208146   208144       -2     
  Branches    40009    40009              
==========================================
- Hits       184354   184344      -10     
- Misses      15814    15830      +16     
+ Partials     7978     7970       -8     
Files with missing lines Coverage Δ
src/module_wrap.h 52.94% <ø> (ø)
src/module_wrap.cc 75.88% <75.00%> (+0.61%) ⬆️

... and 46 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@joyeecheung joyeecheung force-pushed the index-resolution branch 3 times, most recently from 743c147 to f7abc18 Compare October 10, 2025 15:42
@joyeecheung
Copy link
Member Author

joyeecheung commented Oct 10, 2025

Added two benchmarks, there are some gains from this PR (I also noticed that SourceTextModule.evaluate() can be more efficient by returning the promise directly, will open a separate PR for that):

                                                            confidence improvement accuracy (*)   (**)  (***)
vm/source-text-module-chained.js n=1000 stage='all'                         2.19 %       ±2.34% ±3.11% ±4.05%
vm/source-text-module-chained.js n=1000 stage='evaluate'             *      5.18 %       ±4.44% ±5.92% ±7.74%
vm/source-text-module-chained.js n=1000 stage='instantiate'        ***     13.23 %       ±3.44% ±4.58% ±5.98%
vm/source-text-module-flat.js n=1000 stage='all'                            0.79 %       ±1.70% ±2.26% ±2.95%
vm/source-text-module-flat.js n=1000 stage='evaluate'                       1.34 %       ±3.41% ±4.54% ±5.91%
vm/source-text-module-flat.js n=1000 stage='instantiate'           ***     11.15 %       ±2.80% ±3.72% ±4.84%
vm/source-text-module-flat.js n=1000 stage='link'                          -1.06 %       ±4.62% ±6.18% ±8.12%

@legendecas
Copy link
Member

There is a conflict.

joyeecheung and others added 3 commits October 13, 2025 16:47
Original commit message:

    [api] Add index-based module resolution in InstantiateModule()

    Add new InstantiateModule() overload that allows embedders to identify
    modules requests by index in the module requests array rather than
    using specifier and import attributes. When embedders want to fetch
    all the modules using information from module->GetModuleRequests()
    before calling InstantiateModule() instead of having to do the fetching
    inside the InstantiateModule() callback, they could just maintain a simple array of modules indexed by module request positions and
    look up the fetched the module by index in the new callback.
    Previously this has to be done by mapping from specifier and import
    attributes to module objects cached on the embedder side, leading to an overhead to hash the specifier and import attributes for each module request.

    Refs: nodejs#59396
    Bug: 435317398
    Change-Id: Ie017d2f3ccc605e0f58aa423504b5fa5fdbcc633
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
    Commit-Queue: Joyee Cheung <[email protected]>
    Reviewed-by: Camillo Bruni <[email protected]>
    Cr-Commit-Position: refs/heads/main@{#102613}

Refs: v8/v8@3d0f462
This makes use of a new module resolution V8 API that passes in
an index to the module request array to identify the module
request, which simplifies the module linking process.
@nodejs-github-bot
Copy link
Collaborator

@aduh95
Copy link
Contributor

aduh95 commented Oct 13, 2025

Benchmark CI: https://github.com/aduh95/node/actions/runs/18475636408

                                                               confidence improvement accuracy (*)
vm/source-text-module-chained.js n=1000 stage='instantiate'           ***     50.68 %       ±8.80%
vm/source-text-module-flat.js n=1000 stage='all'                               5.03 %       ±8.76%
vm/source-text-module-flat.js n=1000 stage='evaluate'                         -1.47 %       ±7.41%
vm/source-text-module-flat.js n=1000 stage='instantiate'              ***     55.03 %       ±8.61%
vm/source-text-module-flat.js n=1000 stage='link'                     ***    -17.15 %       ±6.00%

@joyeecheung
Copy link
Member Author

joyeecheung commented Oct 13, 2025

The link regression is expected - or it's not technically a regression, we just moved the work that was done during construction to the link stage. Though I can't seem to be able to reproduce it, it might have something to do with GitHub action runners not being dedicated.

@nodejs-github-bot
Copy link
Collaborator

@joyeecheung joyeecheung added commit-queue Add this label to land a pull request using GitHub Actions. commit-queue-rebase Add this label to allow the Commit Queue to land a PR in several commits. labels Oct 15, 2025
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Oct 15, 2025
@nodejs-github-bot
Copy link
Collaborator

Landed in daf0a44...657428a

nodejs-github-bot pushed a commit that referenced this pull request Oct 15, 2025
Original commit message:

    [api] Add index-based module resolution in InstantiateModule()

    Add new InstantiateModule() overload that allows embedders to identify
    modules requests by index in the module requests array rather than
    using specifier and import attributes. When embedders want to fetch
    all the modules using information from module->GetModuleRequests()
    before calling InstantiateModule() instead of having to do the fetching
    inside the InstantiateModule() callback, they could just maintain a simple array of modules indexed by module request positions and
    look up the fetched the module by index in the new callback.
    Previously this has to be done by mapping from specifier and import
    attributes to module objects cached on the embedder side, leading to an overhead to hash the specifier and import attributes for each module request.

    Refs: #59396
    Bug: 435317398
    Change-Id: Ie017d2f3ccc605e0f58aa423504b5fa5fdbcc633
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
    Commit-Queue: Joyee Cheung <[email protected]>
    Reviewed-by: Camillo Bruni <[email protected]>
    Cr-Commit-Position: refs/heads/main@{#102613}

Refs: v8/v8@3d0f462
PR-URL: #59396
Refs: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
Reviewed-By: Chengzhong Wu <[email protected]>
nodejs-github-bot pushed a commit that referenced this pull request Oct 15, 2025
This makes use of a new module resolution V8 API that passes in
an index to the module request array to identify the module
request, which simplifies the module linking process.

PR-URL: #59396
Refs: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
Reviewed-By: Chengzhong Wu <[email protected]>
aduh95 pushed a commit that referenced this pull request Oct 23, 2025
Original commit message:

    [api] Add index-based module resolution in InstantiateModule()

    Add new InstantiateModule() overload that allows embedders to identify
    modules requests by index in the module requests array rather than
    using specifier and import attributes. When embedders want to fetch
    all the modules using information from module->GetModuleRequests()
    before calling InstantiateModule() instead of having to do the fetching
    inside the InstantiateModule() callback, they could just maintain a simple array of modules indexed by module request positions and
    look up the fetched the module by index in the new callback.
    Previously this has to be done by mapping from specifier and import
    attributes to module objects cached on the embedder side, leading to an overhead to hash the specifier and import attributes for each module request.

    Refs: #59396
    Bug: 435317398
    Change-Id: Ie017d2f3ccc605e0f58aa423504b5fa5fdbcc633
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
    Commit-Queue: Joyee Cheung <[email protected]>
    Reviewed-by: Camillo Bruni <[email protected]>
    Cr-Commit-Position: refs/heads/main@{#102613}

Refs: v8/v8@3d0f462
PR-URL: #59396
Refs: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
Reviewed-By: Chengzhong Wu <[email protected]>
aduh95 pushed a commit that referenced this pull request Oct 23, 2025
This makes use of a new module resolution V8 API that passes in
an index to the module request array to identify the module
request, which simplifies the module linking process.

PR-URL: #59396
Refs: https://chromium-review.googlesource.com/c/v8/v8/+/6804466
Reviewed-By: Chengzhong Wu <[email protected]>
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Nov 3, 2025
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), @&#8203;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) [#&#8203;59778](nodejs/node#59778)
- \[[`2e55c6ad04`](nodejs/node@2e55c6ad04)] - **(SEMVER-MINOR)** **sqlite**: allow setting defensive flag (Bart Louwers) [#&#8203;60217](nodejs/node#60217)
- \[[`f437204491`](nodejs/node@f437204491)] - **(SEMVER-MINOR)** **src**: add watch config namespace (Marco Ippolito) [#&#8203;60178](nodejs/node#60178)

##### Commits

- \[[`bb27766bd5`](nodejs/node@bb27766bd5)] - **benchmark**: improve cpu.sh for safety and usability (Nam Yooseong) [#&#8203;60162](nodejs/node#60162)
- \[[`e600711c20`](nodejs/node@e600711c20)] - **benchmark**: add benchmark for leaf source text modules (Joyee Cheung) [#&#8203;60205](nodejs/node#60205)
- \[[`1bbcdf9039`](nodejs/node@1bbcdf9039)] - **benchmark**: add vm.SourceTextModule benchmark (Joyee Cheung) [#&#8203;59396](nodejs/node#59396)
- \[[`22fa6bd28b`](nodejs/node@22fa6bd28b)] - **build**: ibmi follow aix visibility (SRAVANI GUNDEPALLI) [#&#8203;60360](nodejs/node#60360)
- \[[`931028400e`](nodejs/node@931028400e)] - **build**: use call command when calling python configure (Jacob Nichols) [#&#8203;60098](nodejs/node#60098)
- \[[`17fde3f3d1`](nodejs/node@17fde3f3d1)] - **build**: build v8 with -fvisibility=hidden -fvisibility-inlines-hidden (Joyee Cheung) [#&#8203;56290](nodejs/node#56290)
- \[[`04cc7aae5e`](nodejs/node@04cc7aae5e)] - **build**: remove V8\_COMPRESS\_POINTERS\_IN\_ISOLATE\_CAGE defs (Joyee Cheung) [#&#8203;60296](nodejs/node#60296)
- \[[`8a2053060d`](nodejs/node@8a2053060d)] - **crypto**: update root certificates to NSS 3.116 (Node.js GitHub Bot) [#&#8203;59956](nodejs/node#59956)
- \[[`fe91c0f755`](nodejs/node@fe91c0f755)] - **deps**: update simdjson to 4.0.7 (Node.js GitHub Bot) [#&#8203;59883](nodejs/node#59883)
- \[[`aacfc0d212`](nodejs/node@aacfc0d212)] - **deps**: update corepack to 0.34.1 (Node.js GitHub Bot) [#&#8203;60314](nodejs/node#60314)
- \[[`8596891a71`](nodejs/node@8596891a71)] - **deps**: update inspector\_protocol to [`af7f5a8`](nodejs/node@af7f5a8) (Node.js GitHub Bot) [#&#8203;60312](nodejs/node#60312)
- \[[`21bcd0eb2f`](nodejs/node@21bcd0eb2f)] - **deps**: V8: cherry-pick [`3d0f462`](nodejs/node@3d0f462a17ff) (Joyee Cheung) [#&#8203;59396](nodejs/node#59396)
- \[[`673558501c`](nodejs/node@673558501c)] - **deps**: update googletest to [`279f847`](nodejs/node@279f847) (Node.js GitHub Bot) [#&#8203;60219](nodejs/node#60219)
- \[[`425a1879b1`](nodejs/node@425a1879b1)] - **doc**: mention more codemods in `deprecations.md` (Augustin Mauroy) [#&#8203;60243](nodejs/node#60243)
- \[[`563e1317f3`](nodejs/node@563e1317f3)] - **doc**: remove unnecessary statement of web storage (Deokjin Kim) [#&#8203;60363](nodejs/node#60363)
- \[[`064c8c5cfd`](nodejs/node@064c8c5cfd)] - **doc**: add missing CAA type to dns.resolveAny() & dnsPromises.resolveAny() (Jimmy Leung) [#&#8203;58899](nodejs/node#58899)
- \[[`99e357af35`](nodejs/node@99e357af35)] - **doc**: use `any` for `worker_threads.Worker` 'error' event argument `err` (Jonas Geiler) [#&#8203;60300](nodejs/node#60300)
- \[[`8ccff0d934`](nodejs/node@8ccff0d934)] - **doc**: update decorator documentation to reflect actual policy (Muhammad Salman Aziz) [#&#8203;60288](nodejs/node#60288)
- \[[`bac70c6ef3`](nodejs/node@bac70c6ef3)] - **doc**: document wildcard supported by tools/test.py (Joyee Cheung) [#&#8203;60265](nodejs/node#60265)
- \[[`8492bc6a88`](nodejs/node@8492bc6a88)] - **doc**: add --heap-snapshot-on-oom to useful v8 flag (jakecastelli) [#&#8203;60260](nodejs/node#60260)
- \[[`0f0d3c0e47`](nodejs/node@0f0d3c0e47)] - **doc**: fix `blob.bytes()` heading level (XTY) [#&#8203;60252](nodejs/node#60252)
- \[[`8c8525cf93`](nodejs/node@8c8525cf93)] - **doc**: fix not working code example in vm docs (Artur Gawlik) [#&#8203;60224](nodejs/node#60224)
- \[[`8a6de3866c`](nodejs/node@8a6de3866c)] - **doc, assert**: correct order of changes entries (Gerhard Stöbich) [#&#8203;60304](nodejs/node#60304)
- \[[`6bacb6555a`](nodejs/node@6bacb6555a)] - **doc, module**: change async customization hooks to experimental (Gerhard Stöbich) [#&#8203;60302](nodejs/node#60302)
- \[[`6f3b16df16`](nodejs/node@6f3b16df16)] - **esm**: use index-based resolution callbacks (Joyee Cheung) [#&#8203;59396](nodejs/node#59396)
- \[[`95644a432c`](nodejs/node@95644a432c)] - **http**: lazy allocate cookies array (Robert Nagy) [#&#8203;59734](nodejs/node#59734)
- \[[`4395fe14b9`](nodejs/node@4395fe14b9)] - **(SEMVER-MINOR)** **http**: add optimizeEmptyRequests server option (Rafael Gonzaga) [#&#8203;59778](nodejs/node#59778)
- \[[`f1aa1eaaf5`](nodejs/node@f1aa1eaaf5)] - **inspector**: add network payload buffer size limits (Chengzhong Wu) [#&#8203;60236](nodejs/node#60236)
- \[[`64fc625bf9`](nodejs/node@64fc625bf9)] - **inspector**: support handshake response for websocket inspection (Shima Ryuhei) [#&#8203;60225](nodejs/node#60225)
- \[[`0ecbb806a8`](nodejs/node@0ecbb806a8)] - **lib**: fix typo in createBlobReaderStream (SeokHun) [#&#8203;60132](nodejs/node#60132)
- \[[`ffec5927fd`](nodejs/node@ffec5927fd)] - **meta**: fix typo in test-shared workflow name (Ronit Sabhaya) [#&#8203;60321](nodejs/node#60321)
- \[[`a02897e157`](nodejs/node@a02897e157)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#&#8203;60325](nodejs/node#60325)
- \[[`59223a7831`](nodejs/node@59223a7831)] - **meta**: loop userland-migrations in deprecations (Chengzhong Wu) [#&#8203;60299](nodejs/node#60299)
- \[[`2d48d17696`](nodejs/node@2d48d17696)] - **module**: refactor and clarify async loader hook customizations (Joyee Cheung) [#&#8203;60278](nodejs/node#60278)
- \[[`be1b84fd93`](nodejs/node@be1b84fd93)] - **module**: handle null source from async loader hooks in sync hooks (Joyee Cheung) [#&#8203;59929](nodejs/node#59929)
- \[[`063fbd87d3`](nodejs/node@063fbd87d3)] - **msi**: fix WiX warnings (Stefan Stojanovic) [#&#8203;60251](nodejs/node#60251)
- \[[`2e55c6ad04`](nodejs/node@2e55c6ad04)] - **(SEMVER-MINOR)** **sqlite**: allow setting defensive flag (Bart Louwers) [#&#8203;60217](nodejs/node#60217)
- \[[`dc93d6988a`](nodejs/node@dc93d6988a)] - **src**: fix timing of snapshot serialize callback (Joyee Cheung) [#&#8203;60434](nodejs/node#60434)
- \[[`267e1b3817`](nodejs/node@267e1b3817)] - **src**: add COUNT\_GENERIC\_USAGE utility for tests (Joyee Cheung) [#&#8203;60434](nodejs/node#60434)
- \[[`4a5d7a4c2a`](nodejs/node@4a5d7a4c2a)] - **src**: conditionally disable source phase imports by default (Shelley Vohr) [#&#8203;60364](nodejs/node#60364)
- \[[`f437204491`](nodejs/node@f437204491)] - **(SEMVER-MINOR)** **src**: add watch config namespace (Marco Ippolito) [#&#8203;60178](nodejs/node#60178)
- \[[`36837fa0f9`](nodejs/node@36837fa0f9)] - **src**: use cached primordials\_string (Sohyeon Kim) [#&#8203;60255](nodejs/node#60255)
- \[[`df8396ad37`](nodejs/node@df8396ad37)] - **src**: replace Environment::GetCurrent with args.GetIsolate (Sohyeon Kim) [#&#8203;60256](nodejs/node#60256)
- \[[`5dd670b2b9`](nodejs/node@5dd670b2b9)] - **src**: initial enablement of IsolateGroups (James M Snell) [#&#8203;60254](nodejs/node#60254)
- \[[`afdb362933`](nodejs/node@afdb362933)] - **src**: use `Utf8Value` and `TwoByteValue` instead of V8 helpers (Anna Henningsen) [#&#8203;60244](nodejs/node#60244)
- \[[`a40e533e72`](nodejs/node@a40e533e72)] - **src**: add a default branch for module phase (Chengzhong Wu) [#&#8203;60261](nodejs/node#60261)
- \[[`42729f07ee`](nodejs/node@42729f07ee)] - **src**: stop using deprecated v8::Context::GetIsolate (Michaël Zasso) [#&#8203;60223](nodejs/node#60223)
- \[[`7a6542c205`](nodejs/node@7a6542c205)] - **test**: skip failing test on macOS 15.7+ (Antoine du Hamel) [#&#8203;60419](nodejs/node#60419)
- \[[`29a5855a4f`](nodejs/node@29a5855a4f)] - **test**: ensure assertions are reachable in `test/addons` (Antoine du Hamel) [#&#8203;60142](nodejs/node#60142)
- \[[`12773d19c4`](nodejs/node@12773d19c4)] - **test**: increase debugger waitFor timeout on macOS (Chengzhong Wu) [#&#8203;60367](nodejs/node#60367)
- \[[`0b38de3e9e`](nodejs/node@0b38de3e9e)] - **test**: put helper in test-runner-output into common (Joyee Cheung) [#&#8203;60330](nodejs/node#60330)
- \[[`6de2407c44`](nodejs/node@6de2407c44)] - **test**: fix small compile warning in test\_network\_requests\_buffer.cc (xiaocainiao633) [#&#8203;60281](nodejs/node#60281)
- \[[`4b23ac8613`](nodejs/node@4b23ac8613)] - **test**: fix status when compiled without inspector (Antoine du Hamel) [#&#8203;60289](nodejs/node#60289)
- \[[`a07f32e326`](nodejs/node@a07f32e326)] - **test**: split test-runner-watch-mode-kill-signal (Joyee Cheung) [#&#8203;60298](nodejs/node#60298)
- \[[`30451d32d7`](nodejs/node@30451d32d7)] - **test**: fix incorrect calculation in test-perf-hooks.js (Joyee Cheung) [#&#8203;60271](nodejs/node#60271)
- \[[`e3c3b48f1c`](nodejs/node@e3c3b48f1c)] - **test**: ignore EPIPE errors in https proxy invalid URL test (Joyee Cheung) [#&#8203;60269](nodejs/node#60269)
- \[[`405a9c4c5f`](nodejs/node@405a9c4c5f)] - **test**: parallelize test-without-async-context-frame correctly (Joyee Cheung) [#&#8203;60273](nodejs/node#60273)
- \[[`ffeebebc71`](nodejs/node@ffeebebc71)] - **test**: make test-worker-prof more tolerant (Joyee Cheung) [#&#8203;60272](nodejs/node#60272)
- \[[`26b01bf170`](nodejs/node@26b01bf170)] - **test**: skip sea tests on x64 macOS (Joyee Cheung) [#&#8203;60250](nodejs/node#60250)
- \[[`8caae1a05b`](nodejs/node@8caae1a05b)] - **test**: move sea tests into test/sea (Joyee Cheung) [#&#8203;60250](nodejs/node#60250)
- \[[`3d183e3e9f`](nodejs/node@3d183e3e9f)] - **test,crypto**: fix conditional SHA3-\* skip on BoringSSL (Filip Skokan) [#&#8203;60379](nodejs/node#60379)
- \[[`e83dbcba94`](nodejs/node@e83dbcba94)] - **test,crypto**: sha3 algorithms aren't supported with BoringSSL (Shelley Vohr) [#&#8203;60374](nodejs/node#60374)
- \[[`3d89331496`](nodejs/node@3d89331496)] - **test\_runner**: use module.registerHooks in module mocks (Joyee Cheung) [#&#8203;60326](nodejs/node#60326)
- \[[`377e8ce85a`](nodejs/node@377e8ce85a)] - **tls**: avoid external memory leak on invalid protocol versions (Shelley Vohr) [#&#8203;60390](nodejs/node#60390)
- \[[`ae4858c1f6`](nodejs/node@ae4858c1f6)] - **tools**: add an option to generate lighter archives (Antoine du Hamel) [#&#8203;60294](nodejs/node#60294)
- \[[`cb615b1a2e`](nodejs/node@cb615b1a2e)] - **tools**: skip test-shared workflow for draft MRs (Michaël Zasso) [#&#8203;60365](nodejs/node#60365)
- \[[`03b034731e`](nodejs/node@03b034731e)] - **tools**: disable inspector on macOS-shared to reduce flakiness (Antoine du Hamel) [#&#8203;60320](nodejs/node#60320)
- \[[`f402b4e1d1`](nodejs/node@f402b4e1d1)] - **tools**: show diff alongside the error in Nix linter (Antoine du Hamel) [#&#8203;60301](nodejs/node#60301)
- \[[`5d5c8483fb`](nodejs/node@5d5c8483fb)] - **tools**: run CI with shared libs on GHA (Antoine du Hamel) [#&#8203;60121](nodejs/node#60121)
- \[[`e8fdd8d2e8`](nodejs/node@e8fdd8d2e8)] - **tools**: update gyp-next to 0.20.5 (Node.js GitHub Bot) [#&#8203;60313](nodejs/node#60313)
- \[[`6e8b029a21`](nodejs/node@6e8b029a21)] - **tools**: limit inspector protocol MR title length (Chengzhong Wu) [#&#8203;60324](nodejs/node#60324)
- \[[`a5073086c6`](nodejs/node@a5073086c6)] - **tools**: fix inspector\_protocol updater (Chengzhong Wu) [#&#8203;60277](nodejs/node#60277)
- \[[`47fa765bff`](nodejs/node@47fa765bff)] - **tools**: optimize wildcard execution in tools/test.py (Joyee Cheung) [#&#8203;60266](nodejs/node#60266)
- \[[`11ebb0447d`](nodejs/node@11ebb0447d)] - **tools**: add C++ lint rule to avoid using `String::Utf8Value` (Anna Henningsen) [#&#8203;60244](nodejs/node#60244)
- \[[`14f3189670`](nodejs/node@14f3189670)] - **tools**: add inspector\_protocol updater (Chengzhong Wu) [#&#8203;60245](nodejs/node#60245)
- \[[`ef4c596fc6`](nodejs/node@ef4c596fc6)] - **typings**: add missing properties and method in Worker (Woohyun Sung) [#&#8203;60257](nodejs/node#60257)
- \[[`09ae6fc065`](nodejs/node@09ae6fc065)] - **typings**: add missing properties in HTTPParser (Woohyun Sung) [#&#8203;60257](nodejs/node#60257)
- \[[`9ecaf41f8e`](nodejs/node@9ecaf41f8e)] - **typings**: delete undefined property in ConfigBinding (Woohyun Sung) [#&#8203;60257](nodejs/node#60257)
- \[[`4a86016e86`](nodejs/node@4a86016e86)] - **util**: use more defensive code when inspecting error objects (Antoine du Hamel) [#&#8203;60139](nodejs/node#60139)
- \[[`9e6d6cec59`](nodejs/node@9e6d6cec59)] - **util**: mark special properties when inspecting them (Ruben Bridgewater) [#&#8203;60131](nodejs/node#60131)
- \[[`79b2387fd9`](nodejs/node@79b2387fd9)] - **vm**: make vm.Module.evaluate() conditionally synchronous (Joyee Cheung) [#&#8203;60205](nodejs/node#60205)
- \[[`e5559f3be3`](nodejs/node@e5559f3be3)] - **win**: upgrade Visual Studio workload from 2019 to 2022 (Jiawen Geng) [#&#8203;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=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-rebase Add this label to allow the Commit Queue to land a PR in several commits. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants