Skip to content

test: add test for Module._stat - #44713

Merged
nodejs-github-bot merged 6 commits into
nodejs:mainfrom
RaisinTen:add-tests-for-Module._stat
Oct 25, 2022
Merged

test: add test for Module._stat#44713
nodejs-github-bot merged 6 commits into
nodejs:mainfrom
RaisinTen:add-tests-for-Module._stat

Conversation

@RaisinTen

Copy link
Copy Markdown
Member

Module._stat landed in #44537 without a test, so this change adds one.

Signed-off-by: Darshan Sen raisinten@gmail.com

@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. test Issues and PRs related to Node.js core tests and test infrastructure. labels Sep 18, 2022
@RaisinTen
RaisinTen force-pushed the add-tests-for-Module._stat branch from 18df730 to dfa0e90 Compare September 18, 2022 12:38
@nodejs-github-bot

This comment was marked as outdated.

@aduh95 aduh95 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Maybe add mustCalls to ensure it’s indeed being called?

@RaisinTen

Copy link
Copy Markdown
Member Author

@aduh95 aren't mustCalls for making sure that a callback passed to a function gets called? This one's totally synchronous, that's why I tested this completely based on the change in return values.

@nodejs-github-bot

This comment was marked as outdated.

@RaisinTen
RaisinTen force-pushed the add-tests-for-Module._stat branch from dfa0e90 to b814716 Compare September 19, 2022 06:24
@nodejs-github-bot

This comment was marked as outdated.

Comment thread test/parallel/test-vfs.js Outdated
Comment thread test/parallel/test-vfs.js Outdated
Comment on lines 60 to 75

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Wait, that's not a use case we want to support, mutating fs should not have any effect on Node.js internals, we should fix that.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

This is actually how VFSs are implemented in the ecosystem (pkg, electron, etc.) currently and fixing that would break a lot of packages and I believe the intention behind exposing Module._stat is to allow this? I don't think there is any other use case behind Module._stat or Module._readPackage. cc @arcanis

FWIW, we are also trying to find better ways of doing this without monkey-patching in nodejs/single-executable#37.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It shows that we probably also need Module._realPath and Module._readFileSync – or rather, that we need the loader hook API to stabilize. Anyway, I don't know if we want this is our tests, I think we want to break this at some point.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@aduh95 if we start exposing Module._* functions for these, we would have to do so for a lot more functions. These are the ones that Electron overrides - https://github.com/electron/electron/blob/eebf34cc6c4691e2ddca9b5a0a97566aeabd9072/lib/asar/fs-wrapper.ts#L236-L854 (quite a lot!) and there are probably additional ones in yarn's fslib implementation - https://github.com/yarnpkg/berry/tree/76ccb18b3b8cc81e28dbef5f3f867395aa31d5fb/packages/yarnpkg-fslib/sources/patchFs.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Fwiw I personally have an expectation that Node.js should abide to its own fs API (which is part of why _stat and _readPackage were so problematic, being the two places not doing so purely for optimization purposes).

It's probably never been discussed formally before though, and perhaps doing so would be a good thing (if only to get this use case formally recognized, supported, and covered by tests).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I agree that the lack of consistency is quite bad. IMHO Node.js internals should not be affected by user-land actions, however I could see that we still want to support the use case of alternative fs implementation, which could be supplied by e.g. a CLI flag and would affect the whole process, not just the few files where we forgot to use destructuring.

@ljharb

ljharb commented Sep 19, 2022

Copy link
Copy Markdown
Member

cc @nodejs/modules

@GeoffreyBooth

Copy link
Copy Markdown
Member

we need the loader hook API to stabilize

It’s pretty close. Once #44710 and #43772 land and we allow some time for baking, that’s all that’s on our list before declaring the API stable: https://github.com/nodejs/loaders#status

@RaisinTen

Copy link
Copy Markdown
Member Author

To be clear, the PR that exposed Module._stat has already landed and it has been released to v18 and v16, I'm not sure why a test for such a thing wouldn't be accepted. Do y'all have suggestions on what needs to be changed in the test for it to be accepted? I don't think it's a good idea to have untested features laying around. If y'all are not happy that the feature exists, would y'all be acceptive of a PR that reverts #44537?

@arcanis arcanis left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Fwiw I don't have real approval rights in this repo, but as far as I can tell the test looks fine to me 🙂

(As for reverting, I strongly object - I made the original PR for a reason, it shouldn't be reverted)

@GeoffreyBooth

Copy link
Copy Markdown
Member

(As for reverting, I strongly object - I made the original PR for a reason, it shouldn't be reverted)

Where's the suggestion for reverting?

Even if we eventually revert (not that I'm suggesting we do) it would be preferable to revert both the feature and its test together, I think, so we have the history.

Comment thread test/parallel/test-vfs.js Outdated
@RaisinTen

Copy link
Copy Markdown
Member Author

@GeoffreyBooth

Where's the suggestion for reverting?

I posted the comment about reverting in #44713 (comment) in case we are not comfortable with exposing Module._stat.

Even if we eventually revert (not that I'm suggesting we do) it would be preferable to revert both the feature and its test together, I think, so we have the history.

Yes but for that we would need to land the test first. If you take a look at the contents of #44537 you would see that it landed without any tests, which is why I thought of sending a PR to add some.

Comment thread test/parallel/test-vfs.js Outdated
Comment thread test/parallel/test-vfs.js Outdated
Comment thread test/parallel/test-vfs.js Outdated
Comment thread test/parallel/test-vfs.js Outdated
Comment thread test/parallel/test-vfs.js Outdated
@aduh95 aduh95 added author ready PRs with CI started, the required approvals, and no outstanding review comments. request-ci Add this label to start a Jenkins CI on a PR. labels Oct 22, 2022
@RaisinTen RaisinTen added the commit-queue-squash PRs the Commit Queue should land as one squashed commit. label Oct 22, 2022
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Oct 22, 2022
@nodejs-github-bot

This comment was marked as outdated.

@RaisinTen
RaisinTen deleted the add-tests-for-Module._stat branch October 25, 2022 11:51
RafaelGSS pushed a commit that referenced this pull request Nov 1, 2022
Module._stat landed in #44537 without
a test, so this change adds one.

Signed-off-by: Darshan Sen <raisinten@gmail.com>
PR-URL: #44713
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
@RafaelGSS RafaelGSS mentioned this pull request Nov 1, 2022
RafaelGSS pushed a commit that referenced this pull request Nov 10, 2022
Module._stat landed in #44537 without
a test, so this change adds one.

Signed-off-by: Darshan Sen <raisinten@gmail.com>
PR-URL: #44713
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
danielleadams pushed a commit that referenced this pull request Dec 30, 2022
Module._stat landed in #44537 without
a test, so this change adds one.

Signed-off-by: Darshan Sen <raisinten@gmail.com>
PR-URL: #44713
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
danielleadams pushed a commit that referenced this pull request Jan 3, 2023
Module._stat landed in #44537 without
a test, so this change adds one.

Signed-off-by: Darshan Sen <raisinten@gmail.com>
PR-URL: #44713
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
ckerr added a commit to electron/electron that referenced this pull request Aug 4, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
ckerr added a commit to electron/electron that referenced this pull request Aug 5, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
ckerr added a commit to electron/electron that referenced this pull request Aug 5, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
ckerr added a commit to electron/electron that referenced this pull request Aug 5, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
ckerr added a commit to electron/electron that referenced this pull request Aug 7, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 20, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 24, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 24, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 24, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 25, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 25, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 25, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
deepak1556 pushed a commit to electron/electron that referenced this pull request Aug 26, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 26, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
deepak1556 added a commit to electron/electron that referenced this pull request Aug 27, 2026
* chore: bump node in DEPS to v24.19.0

* chore: remove upstreamed patch

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs.

Ref: nodejs/node#64565

Ref: nodejs/node#64721

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64565: src: rename legacy trace event headers

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): sample delay per event loop iteration

Ref: nodejs/node#62935

Ref: nodejs/node#64480

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): avoid redundant std::get_if<>() call

Ref: nodejs/node#64094

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): support native IPC serialization in V8 sandbox

Ref: nodejs/node#63933

Co-Authored-By: GitHub Copilot <copilot@github.com>

* test: hide output package.json in node spec runner

Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): account for libc++ rm error on Electron Linux

Node's fs.rmSync() delegates recursive deletion to
std::filesystem::remove_all(). Electron's Linux build uses libc++, which
reports ENOTEMPTY here while Node's libstdc++ build reports EACCES.

Ref: nodejs/node#57103

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): mark worker stack-size test flaky

Ref: nodejs/node#33085

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): restore user timing trace events

Ref: #50591

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): own fallback tracing controller

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): release cppgc wrapper tracking nodes

Ref: nodejs/node#56534

Co-Authored-By: GitHub Copilot <copilot@github.com>

* test: extend cpp heap remote app timeout

The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run.

Ref: #52447

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): remove unused legacy tracing backend

Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists.

Ref: #50591

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch

* refactor: node tracing agent and track event registration (#52678)

* fix: register Node tracing in utility processes

The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate.

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>

* chore: update patches (trivial only)

* chore: update patches

* Revert "fix(patch): mark worker stack-size test flaky"

This reverts commit f2e5cb5.

* fixup! support native IPC serialization in V8 sandbox

* chore: address review feedback

* fixup! support native IPC serialization in V8 sandbox

Allocate ValueSerializer buffers as V8 backing stores and retain the
original backing store when adopting the released buffer. This preserves
the shared allocator lifetime when serialized buffers are transferred
from a worker and outlive its isolate.

* fixup! refactor: node tracing agent and track event registration

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
Co-authored-by: Robo <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
jkleinsc pushed a commit to electron/electron that referenced this pull request Aug 27, 2026
Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>
MarshallOfSound pushed a commit to electron/electron that referenced this pull request Aug 28, 2026
* chore: bump node in DEPS to v24.19.0

* chore: remove upstreamed patch

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* chore: update patches (trivial only)

* fix(patch): add perfetto trace agent

Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs.

Ref: nodejs/node#64565

Ref: nodejs/node#64721

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64565: src: rename legacy trace event headers

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): sample delay per event loop iteration

Ref: nodejs/node#62935

Ref: nodejs/node#64480

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): avoid redundant std::get_if<>() call

Ref: nodejs/node#64094

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): support native IPC serialization in V8 sandbox

Ref: nodejs/node#63933

Co-Authored-By: GitHub Copilot <copilot@github.com>

* test: hide output package.json in node spec runner

Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): account for libc++ rm error on Electron Linux

Node's fs.rmSync() delegates recursive deletion to
std::filesystem::remove_all(). Electron's Linux build uses libc++, which
reports ENOTEMPTY here while Node's libstdc++ build reports EACCES.

Ref: nodejs/node#57103

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): mark worker stack-size test flaky

Ref: nodejs/node#33085

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): restore user timing trace events

Ref: #50591

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): own fallback tracing controller

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): release cppgc wrapper tracking nodes

Ref: nodejs/node#56534

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): remove unused legacy tracing backend

Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists.

Ref: #50591

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch

* refactor: node tracing agent and track event registration (#52678)

* fix: register Node tracing in utility processes

The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate.

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>

* chore: update patches (trivial only)

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): skip unsupported WebCrypto fixtures with BoringSSL

Ref: nodejs/node#63520

Co-Authored-By: GitHub Copilot <copilot@github.com>

* Revert "fix(patch): mark worker stack-size test flaky"

This reverts commit f2e5cb5.

* chore: address review feedback

(cherry picked from commit b8f475c)

* fixup! refactor: node tracing agent and track event registration

(cherry picked from commit d898f33)

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
Co-authored-by: Robo <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
MarshallOfSound pushed a commit to electron/electron that referenced this pull request Aug 28, 2026
* chore: bump node in DEPS to v24.19.0

* chore: remove upstreamed patch

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* chore: update patches (trivial only)

* fix(patch): add perfetto trace agent

Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs.

Ref: nodejs/node#64565

Ref: nodejs/node#64721

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64565: src: rename legacy trace event headers

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): sample delay per event loop iteration

Ref: nodejs/node#62935

Ref: nodejs/node#64480

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): avoid redundant std::get_if<>() call

Ref: nodejs/node#64094

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): support native IPC serialization in V8 sandbox

Ref: nodejs/node#63933

Co-Authored-By: GitHub Copilot <copilot@github.com>

* test: hide output package.json in node spec runner

Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): account for libc++ rm error on Electron Linux

Node's fs.rmSync() delegates recursive deletion to
std::filesystem::remove_all(). Electron's Linux build uses libc++, which
reports ENOTEMPTY here while Node's libstdc++ build reports EACCES.

Ref: nodejs/node#57103

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): mark worker stack-size test flaky

Ref: nodejs/node#33085

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): restore user timing trace events

Ref: #50591

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): own fallback tracing controller

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): release cppgc wrapper tracking nodes

Ref: nodejs/node#56534

Co-Authored-By: GitHub Copilot <copilot@github.com>

* test: extend cpp heap remote app timeout

The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run.

Ref: #52447

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): remove unused legacy tracing backend

Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists.

Ref: #50591

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch

* refactor: node tracing agent and track event registration (#52678)

* fix: register Node tracing in utility processes

The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate.

Co-Authored-By: John Kleinschmidt <jkleinsc@electronjs.org>

* chore: update patches (trivial only)

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <copilot@github.com>

* Revert "fix(patch): mark worker stack-size test flaky"

This reverts commit f2e5cb5.

* fixup! support native IPC serialization in V8 sandbox

* chore: address review feedback

(cherry picked from commit b8f475c)

* fixup! support native IPC serialization in V8 sandbox

Allocate ValueSerializer buffers as V8 backing stores and retain the
original backing store when adopting the released buffer. This preserves
the shared allocator lifetime when serialized buffers are transferred
from a worker and outlive its isolate.

(cherry picked from commit f35b26d)

* fixup! refactor: node tracing agent and track event registration

(cherry picked from commit d898f33)

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
Co-authored-by: Robo <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
jkleinsc added a commit to electron/electron that referenced this pull request Aug 28, 2026
* chore: bump node in DEPS to v24.19.0

* chore: remove upstreamed patch

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs.

Ref: nodejs/node#64565

Ref: nodejs/node#64721

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64565: src: rename legacy trace event headers

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): sample delay per event loop iteration

Ref: nodejs/node#62935

Ref: nodejs/node#64480

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): avoid redundant std::get_if<>() call

Ref: nodejs/node#64094

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): support native IPC serialization in V8 sandbox

Ref: nodejs/node#63933

Co-Authored-By: GitHub Copilot <copilot@github.com>

* test: hide output package.json in node spec runner

Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): account for libc++ rm error on Electron Linux

Node's fs.rmSync() delegates recursive deletion to
std::filesystem::remove_all(). Electron's Linux build uses libc++, which
reports ENOTEMPTY here while Node's libstdc++ build reports EACCES.

Ref: nodejs/node#57103

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): mark worker stack-size test flaky

Ref: nodejs/node#33085

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): restore user timing trace events

Ref: #50591

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): own fallback tracing controller

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): release cppgc wrapper tracking nodes

Ref: nodejs/node#56534

Co-Authored-By: GitHub Copilot <copilot@github.com>

* test: extend cpp heap remote app timeout

The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run.

Ref: #52447

Co-Authored-By: GitHub Copilot <copilot@github.com>

* fix(patch): remove unused legacy tracing backend

Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists.

Ref: #50591

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <copilot@github.com>

* docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch

* refactor: node tracing agent and track event registration (#52678)

* fix: register Node tracing in utility processes

The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate.

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>

* chore: update patches (trivial only)

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <copilot@github.com>

* Revert "fix(patch): mark worker stack-size test flaky"

This reverts commit f2e5cb5.

* fixup! support native IPC serialization in V8 sandbox

* chore: update patch

* chore: address review feedback

(cherry picked from commit b8f475c)

* fixup! support native IPC serialization in V8 sandbox

Allocate ValueSerializer buffers as V8 backing stores and retain the
original backing store when adopting the released buffer. This preserves
the shared allocator lifetime when serialized buffers are transferred
from a worker and outlive its isolate.

(cherry picked from commit f35b26d)

* fixup! refactor: node tracing agent and track event registration

(cherry picked from commit d898f33)

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: GitHub Copilot <copilot@github.com>
Co-authored-by: Robo <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. commit-queue-squash PRs the Commit Queue should land as one squashed commit. needs-ci PRs that need a full CI run. test Issues and PRs related to Node.js core tests and test infrastructure.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants