GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — src: initial enablement of IsolateGroups by jasnell · Pull Request #60254 · nodejs/node

Conversation

@jasnell

@jasnell jasnell commented Oct 14, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Enable IsolateGroups!

Every isolate in V8 is created within a group. When pointer compression is enabled, all isolates within a single group are limited to a 4 GB shared pointer cage. By default, all isolates in the process share the same group, which means that when running with pointer compression, the entire process would be limited to a single 4 GB shared pointer cage. But, we can create as many IsolateGroups as we want, limited only by the amount of virtual memory available on the machine.

In the default node.js build, this is disabled. When only pointer compression is turned on, isolate groups are used.

/cc @erikcorry @nodejs/v8

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

trivikr reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
@jasnell
jasnell requested a review from mcollina October 14, 2025 14:47
@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run. labels Oct 14, 2025
@jasnell
jasnell requested review from joyeecheung and targos October 14, 2025 14:47
@jasnell

This comment was marked as resolved.

Sign in to view
@targos

This comment was marked as resolved.

Sign in to view
@jasnell
jasnell force-pushed the jasnell/enable-isolate-groups branch from 6e01998 to 426bbea Compare October 14, 2025 20:08
@jasnell

This comment was marked as resolved.

Sign in to view
@jasnell

This comment was marked as resolved.

Sign in to view
@jasnell
jasnell force-pushed the jasnell/enable-isolate-groups branch 4 times, most recently from bf8d6c9 to 4c346fa Compare October 15, 2025 18:34
@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
@jasnell
jasnell marked this pull request as ready for review October 15, 2025 19:54
@jasnell

jasnell commented Oct 15, 2025

Copy link
Copy Markdown
Member Author

This is ready for review!

I'm not yet convinced that it's (pointer compression in general) is safe to enable by default as it may be too breaking for some workloads but with isolate groups at least we have the option now of using multiple worker threads and don't have the process-wide 4 GB limit. I'm going to experiment next the v8 option to allow for an 8 GB heap limit.

There should be no real noticeable difference in performance but overall apps should be using significantly less memory with pointer compression enabled. To give a rough idea, here's two comparisons of the memory just starting the node.js repl.. first is existing node 24, the second with main with pointer compression enabled:

Welcome to Node.js v24.8.0.
Type ".help" for more information.
> process.memoryUsage()
{
  rss: 59670528,
  heapTotal: 11632640,
  heapUsed: 6980872,
  external: 2465990,
  arrayBuffers: 10541
}
> .exit
jasnell@FF4V42X6YN mine % ./node   
Welcome to Node.js v25.0.0-pre.
Type ".help" for more information.
> process.memoryUsage()
{
  rss: 50642944,
  heapTotal: 5242880,
  heapUsed: 3777440,
  external: 2503911,
  arrayBuffers: 35716
}

Note that heapUsed is cut in half.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@codecov

This comment was marked as outdated.

Sign in to view
mcollina
mcollina approved these changes Oct 15, 2025
View reviewed changes

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

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.

I've tested and it works pretty well.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@jasnell jasnell added the author ready PRs with CI started, the required approvals, and no outstanding review comments. label Oct 15, 2025
@jasnell

jasnell commented Oct 15, 2025

Copy link
Copy Markdown
Member Author

Marking this author ready as it has one sign off and has passed CI... however, before landing I'd like to see if we can get signoffs from @targos and or @joyeecheung and or @addaleax .

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell
jasnell requested a review from addaleax October 15, 2025 21:11
joyeecheung
joyeecheung approved these changes Oct 15, 2025
View reviewed changes

@joyeecheung joyeecheung left a comment

Copy link
Copy Markdown
Member

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.

LGTM % nits

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/util.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/node_options.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

joyeecheung
joyeecheung reviewed Oct 15, 2025
View reviewed changes
Comment thread common.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

jasnell
jasnell commented Oct 16, 2025
View reviewed changes
Comment thread src/util.h Resolved

Uh oh!

There was an error while loading. Please reload this page.

jasnell
jasnell commented Oct 16, 2025
View reviewed changes
Comment thread src/util.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

@jasnell
jasnell force-pushed the jasnell/enable-isolate-groups branch from 9580be9 to ca0b57f Compare October 16, 2025 02:15
targos
targos reviewed Oct 16, 2025
View reviewed changes
Comment thread tools/v8_gypfiles/features.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

joyeecheung
joyeecheung reviewed Oct 16, 2025
View reviewed changes
Comment thread common.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread common.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread common.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread common.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread common.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread configure.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tools/v8_gypfiles/features.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tools/v8_gypfiles/features.gypi Resolved

Uh oh!

There was an error while loading. Please reload this page.

@jasnell

This comment was marked as outdated.

Sign in to view
@jasnell
jasnell force-pushed the jasnell/enable-isolate-groups branch from 14723a7 to ec710da Compare October 16, 2025 23:27
@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
@nodejs-github-bot

This comment was marked as outdated.

Sign in to view
Qard
Qard approved these changes Oct 17, 2025
View reviewed changes

@Qard Qard left a comment

Copy link
Copy Markdown
Member

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.

Mostly LGTM, but with a safety question.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/node_options.cc Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread test/parallel/test-max-old-space-size-percentage.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

@deepak1556

deepak1556 commented Oct 17, 2025

Copy link
Copy Markdown
Contributor

you'll just need to add --experimental-pointer-compression-shared-cage to your ./configure in addition to the existing --experimental-enable-pointer-compression flag and you'll have the single cage back.

Perfect, thank you!

jasnell reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell
src: initial enablement of IsolateGroups
c135312
This lays the initial groundwork for enabling the
use of IsolateGroups.

Every isolate in V8 is created within a group. When pointer
compression is enabled, all isolates within a single group
are limited to a 4 GB shared pointer cage. By default, all
isolates in the process share the same group, which means
that when running with pointer compression, the entire
process would be limited to a single 4 GB shared pointer
cage. But, we can create as many IsolateGroups as we want,
limited only by the amount of virtual memory available on
the machine.
@jasnell
jasnell force-pushed the jasnell/enable-isolate-groups branch from ec710da to c135312 Compare October 17, 2025 02:55
@nodejs-github-bot

nodejs-github-bot commented Oct 17, 2025

Copy link
Copy Markdown
Collaborator

CI: https://ci.nodejs.org/job/node-test-pull-request/69771/

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

targos
targos approved these changes Oct 17, 2025
View reviewed changes
@jasnell jasnell added the commit-queue PRs queued for automated landing through the Commit Queue. label Oct 17, 2025
@nodejs-github-bot nodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Oct 17, 2025
@nodejs-github-bot
nodejs-github-bot merged commit c2f3c21 into nodejs:main Oct 17, 2025
32 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot

nodejs-github-bot commented Oct 17, 2025

Copy link
Copy Markdown
Collaborator

Landed in c2f3c21

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@verwaest

verwaest commented Oct 17, 2025

Copy link
Copy Markdown
Contributor

(8gib heaps aren't currently supported by v8, the flag is simply very early WIP without much progress.)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@jasnell

jasnell commented Oct 18, 2025

Copy link
Copy Markdown
Member Author

Yeah, I got confirmation on that yesterday. It's unfortunate. Maybe someday. Still, this is a massive improvement over what we had before!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

aduh95 pushed a commit that referenced this pull request Oct 23, 2025
@jasnell @aduh95
src: initial enablement of IsolateGroups
5dd670b
This lays the initial groundwork for enabling the
use of IsolateGroups.

Every isolate in V8 is created within a group. When pointer
compression is enabled, all isolates within a single group
are limited to a 4 GB shared pointer cage. By default, all
isolates in the process share the same group, which means
that when running with pointer compression, the entire
process would be limited to a single 4 GB shared pointer
cage. But, we can create as many IsolateGroups as we want,
limited only by the amount of virtual memory available on
the machine.

PR-URL: #60254
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
@github-actions github-actions Bot mentioned this pull request Oct 27, 2025
2025-10-28, Version 25.1.0 (Current) #60436
Merged
aduh95 pushed a commit that referenced this pull request Oct 31, 2025
@jasnell @aduh95
src: initial enablement of IsolateGroups
ec53d9f
This lays the initial groundwork for enabling the
use of IsolateGroups.

Every isolate in V8 is created within a group. When pointer
compression is enabled, all isolates within a single group
are limited to a 4 GB shared pointer cage. By default, all
isolates in the process share the same group, which means
that when running with pointer compression, the entire
process would be limited to a single 4 GB shared pointer
cage. But, we can create as many IsolateGroups as we want,
limited only by the amount of virtual memory available on
the machine.

PR-URL: #60254
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Nov 3, 2025
ECG Bot @tmeijn
build(deps): update node to v25.1.0
17d8af9
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=-->
@github-actions github-actions Bot mentioned this pull request Nov 7, 2025
2025-11-11, Version 24.12.0 'Krypton' (LTS) #60615
Closed
aduh95 pushed a commit that referenced this pull request Nov 7, 2025
@jasnell @aduh95
src: initial enablement of IsolateGroups
eb8a049
This lays the initial groundwork for enabling the
use of IsolateGroups.

Every isolate in V8 is created within a group. When pointer
compression is enabled, all isolates within a single group
are limited to a 4 GB shared pointer cage. By default, all
isolates in the process share the same group, which means
that when running with pointer compression, the entire
process would be limited to a single 4 GB shared pointer
cage. But, we can create as many IsolateGroups as we want,
limited only by the amount of virtual memory available on
the machine.

PR-URL: #60254
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
@github-actions github-actions Bot mentioned this pull request Nov 7, 2025
2025-11-11, Version 24.11.1 'Krypton' (LTS) #60622
Merged
@RobinBol RobinBol mentioned this pull request Jun 3, 2026
Tracking issue for official Node.js build with pointer compression enabled nodejs/build#4352
Open
@codebytere codebytere mentioned this pull request Aug 21, 2026
build: define V8_CONTIGUOUS_COMPRESSED_RO_SPACE for shared cage #65464
Merged
nodejs-github-bot pushed a commit that referenced this pull request Aug 29, 2026
@codebytere
build: define V8_CONTIGUOUS_COMPRESSED_RO_SPACE for shared cage
c5eb9de
Since the V8 14.2 update, `globals.h` sizes the read-only space
reservation in the shared pointer compression cage from
`V8_CONTIGUOUS_COMPRESSED_RO_SPACE_SIZE_MB`, which BUILD.gn defines
together with `V8_CONTIGUOUS_COMPRESSED_RO_SPACE` whenever
`v8_enable_pointer_compression_shared_cage` is set. features.gypi
defines neither, so builds configured with
`--experimental-pointer-compression-shared-cage` fail to compile V8.
Define both the way BUILD.gn does, with the same 16 MB default.

Refs: #60254
Signed-off-by: Shelley Vohr <[email protected]>
PR-URL: #65464
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
aduh95 pushed a commit that referenced this pull request Sep 3, 2026
@codebytere @aduh95
build: define V8_CONTIGUOUS_COMPRESSED_RO_SPACE for shared cage
7e7e3fb
Since the V8 14.2 update, `globals.h` sizes the read-only space
reservation in the shared pointer compression cage from
`V8_CONTIGUOUS_COMPRESSED_RO_SPACE_SIZE_MB`, which BUILD.gn defines
together with `V8_CONTIGUOUS_COMPRESSED_RO_SPACE` whenever
`v8_enable_pointer_compression_shared_cage` is set. features.gypi
defines neither, so builds configured with
`--experimental-pointer-compression-shared-cage` fail to compile V8.
Define both the way BUILD.gn does, with the same 16 MB default.

Refs: #60254
Signed-off-by: Shelley Vohr <[email protected]>
PR-URL: #65464
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
aduh95 pushed a commit that referenced this pull request Sep 15, 2026
@codebytere @aduh95
build: define V8_CONTIGUOUS_COMPRESSED_RO_SPACE for shared cage
431c2bf
Since the V8 14.2 update, `globals.h` sizes the read-only space
reservation in the shared pointer compression cage from
`V8_CONTIGUOUS_COMPRESSED_RO_SPACE_SIZE_MB`, which BUILD.gn defines
together with `V8_CONTIGUOUS_COMPRESSED_RO_SPACE` whenever
`v8_enable_pointer_compression_shared_cage` is set. features.gypi
defines neither, so builds configured with
`--experimental-pointer-compression-shared-cage` fail to compile V8.
Define both the way BUILD.gn does, with the same 16 MB default.

Refs: #60254
Signed-off-by: Shelley Vohr <[email protected]>
PR-URL: #65464
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
aduh95 pushed a commit that referenced this pull request Sep 19, 2026
@codebytere @aduh95
build: define V8_CONTIGUOUS_COMPRESSED_RO_SPACE for shared cage
676e15c
Since the V8 14.2 update, `globals.h` sizes the read-only space
reservation in the shared pointer compression cage from
`V8_CONTIGUOUS_COMPRESSED_RO_SPACE_SIZE_MB`, which BUILD.gn defines
together with `V8_CONTIGUOUS_COMPRESSED_RO_SPACE` whenever
`v8_enable_pointer_compression_shared_cage` is set. features.gypi
defines neither, so builds configured with
`--experimental-pointer-compression-shared-cage` fail to compile V8.
Define both the way BUILD.gn does, with the same 16 MB default.

Refs: #60254
Signed-off-by: Shelley Vohr <[email protected]>
PR-URL: #65464
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@mcollina mcollina mcollina approved these changes
@Qard Qard Qard approved these changes
@joyeecheung joyeecheung joyeecheung approved these changes
@addaleax addaleax Awaiting requested review from addaleax
+1 more reviewer
@targos targos targos approved these changes
Reviewers whose approvals may not affect merge requirements

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

8 participants

@jasnell @targos @nodejs-github-bot @mcollina @joyeecheung @deepak1556 @verwaest @Qard
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.