Skip to content

Conversation

theanarkh
Copy link
Contributor

  1. Support getting worker CPU profile in main thread. We need use worker inspector protocol achieve this goal currently.
  2. Main thread can get the CPU usage of worker then take CPU profile when load is high.
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • documentation is changed or added
  • commit message follows commit guidelines

@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 related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Aug 10, 2025
@theanarkh theanarkh force-pushed the get_worker_cpu_profile_in_main_thread branch from d6dc08e to 81bafa2 Compare August 10, 2025 07:26
@theanarkh theanarkh added the worker Issues and PRs related to Worker support. label Aug 10, 2025
@theanarkh theanarkh force-pushed the get_worker_cpu_profile_in_main_thread branch 12 times, most recently from dae724d to 035d19e Compare August 11, 2025 01:04
@addaleax
Copy link
Member

Should this be blocked on #59429?

@theanarkh
Copy link
Contributor Author

Should this be blocked on #59429?

#59429 is blocked on this PR. This PR is ready for review.

@addaleax
Copy link
Member

Should this be blocked on #59429?

#59429 is blocked on this PR. This PR is ready for review.

I'd say the comments on #59429 apply here too, then 🙂 And in the future, I'd recommend making those relationships clear explicitly, since right now neither of the two PRs is clearly built on top of the other (typically the easiest way to do this is to add the commits of one PR to the other)

@addaleax addaleax added the semver-minor PRs that contain new features and should be released in the next minor version. label Aug 11, 2025
@theanarkh
Copy link
Contributor Author

Thank you for your suggestion !

@theanarkh theanarkh force-pushed the get_worker_cpu_profile_in_main_thread branch 2 times, most recently from b505102 to 02fa27d Compare August 11, 2025 18:31
Copy link

codecov bot commented Aug 11, 2025

Codecov Report

❌ Patch coverage is 80.11364% with 35 lines in your changes missing coverage. Please review.
✅ Project coverage is 89.75%. Comparing base (bdcab71) to head (4797934).
⚠️ Report is 72 commits behind head on main.

Files with missing lines Patch % Lines
src/node_worker.cc 75.47% 11 Missing and 15 partials ⚠️
lib/internal/worker.js 86.11% 5 Missing ⚠️
src/env.cc 85.18% 2 Missing and 2 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #59428      +/-   ##
==========================================
- Coverage   89.86%   89.75%   -0.11%     
==========================================
  Files         664      662       -2     
  Lines      194944   194685     -259     
  Branches    38285    38176     -109     
==========================================
- Hits       175180   174736     -444     
- Misses      12229    12467     +238     
+ Partials     7535     7482      -53     
Files with missing lines Coverage Δ
src/env.h 98.14% <ø> (ø)
src/node_errors.h 87.50% <ø> (ø)
src/node_worker.h 91.66% <ø> (ø)
src/util.h 91.80% <100.00%> (+0.49%) ⬆️
src/env.cc 80.80% <85.18%> (-0.07%) ⬇️
lib/internal/worker.js 98.11% <86.11%> (-0.72%) ⬇️
src/node_worker.cc 82.83% <75.47%> (-1.50%) ⬇️

... 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.

@theanarkh theanarkh force-pushed the get_worker_cpu_profile_in_main_thread branch from 02fa27d to 3494c26 Compare August 12, 2025 01:13
Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

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

lgtm

@mcollina mcollina added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 29, 2025
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 29, 2025
@nodejs-github-bot
Copy link
Collaborator

Copy link
Member

@Qard Qard left a comment

Choose a reason for hiding this comment

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

Excellent work!

I have a few suggestions, but none that I think should block landing--just forward-thinking and usability ideas.

Comment on lines +538 to +540
async [SymbolAsyncDispose]() {
await stop();
},
Copy link
Member

Choose a reason for hiding this comment

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

Wouldn't this just discard the profile then? What use is there in starting a profile only to discard the result? 🤔

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It makes sure stop the profile in some scenarios. Like this:

const { Worker } = require('worker_threads');

const w = new Worker(`setTimeout(() => {
  console.log("hello world");
}, 1000);`, { eval: true });

w.on("online", async () => {
  // call handle.stop() automatically when return
  await using handle = await w.startCpuProfile("profile");
  // unexpected return here
  if (true) { 
    return // or throw an error
  }
  await handle.stop();
});

process.on('uncaughtException', (err) => {
  console.log('uncaughtException', err);
});

Infinity,
].forEach((name) => {
try {
worker.startCpuProfile(name);
Copy link
Member

Choose a reason for hiding this comment

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

A function that both throws and rejects seems like a bit of a footgun.

It's also not even clear why the start would return a promise--I know why, but an average user might not. I wonder if it would make sense to actually defer the async part to the stop? The start would just store a promise for the ready state and the stop would await that before applying its own logic. Makes the API a bit more intuitive to the end user and also separates the throw aspects of the start from all the reject aspects of waiting on the worker thread.

Copy link
Contributor Author

@theanarkh theanarkh Aug 29, 2025

Choose a reason for hiding this comment

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

A function that both throws and rejects seems like a bit of a footgun.

I will (try to) remove the name parameter in another PR. However, I found that some Promise APIs in Node.js also throw errors synchronously such as dns promise APIs.

It's also not even clear why the start would return a promise--I know why, but an average user might not. I wonder if it would make sense to actually defer the async part to the stop? The start would just store a promise for the ready state and the stop would await that before applying its own logic. Makes the API a bit more intuitive to the end user and also separates the throw aspects of the start from all the reject aspects of waiting on the worker thread.

I think both are fine. Here, we'll keep the return Promise for now. If necessary, we can modify it later.

* Returns: {Promise}
Starting a CPU profile with the given `name`, then return a Promise that fulfills
with an error or an object which has a `stop` method. Calling the `stop` method will
Copy link
Member

@Qard Qard Aug 29, 2025

Choose a reason for hiding this comment

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

Might want to document an actual object for that with its own methods and such. That way if we decide to add more methods or method parameters in the future we would have somewhere to document those additional things. For example, I would like to add support for outputting pprof data in a buffer, or possibly the OTel profiling format (which is heavily based on pprof) in the future if/when that stabilizes at some point.

To that end, and thinking toward the future, it may also make sense for the stop() method to return a container object with a json() method on it instead, similar to fetch, so other format methods could be added in the future. This could probably also help with code-sharing with #59429 too as you could have a container that just receives the profile data object from wherever and then does the serialization logic internally.

@theanarkh theanarkh added the commit-queue Add this label to land a pull request using GitHub Actions. label Aug 29, 2025
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Aug 29, 2025
@nodejs-github-bot nodejs-github-bot merged commit ac92c92 into nodejs:main Aug 29, 2025
60 of 61 checks passed
@nodejs-github-bot
Copy link
Collaborator

Landed in ac92c92

targos pushed a commit that referenced this pull request Sep 4, 2025
PR-URL: #59428
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
@theanarkh theanarkh mentioned this pull request Sep 8, 2025
4 tasks
nodejs-github-bot added a commit that referenced this pull request Sep 9, 2025
Notable changes:

crypto:
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) #59570
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) #59570
  * (SEMVER-MINOR) add KMAC Web Cryptography algorithms (Filip Skokan) #59647
  * (SEMVER-MINOR) add Argon2 Web Cryptography algorithms (Filip Skokan) #59544
  * (SEMVER-MINOR) support SLH-DSA KeyObject, sign, and verify (Filip Skokan) #59537
inspector:
  * add http2 tracking support (Darshan Sen) #59611
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59816
targos pushed a commit that referenced this pull request Sep 10, 2025
Notable changes:

crypto:
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) #59570
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) #59570
  * (SEMVER-MINOR) add KMAC Web Cryptography algorithms (Filip Skokan) #59647
  * (SEMVER-MINOR) add Argon2 Web Cryptography algorithms (Filip Skokan) #59544
  * (SEMVER-MINOR) support SLH-DSA KeyObject, sign, and verify (Filip Skokan) #59537
inspector:
  * add http2 tracking support (Darshan Sen) #59611
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59816
targos pushed a commit that referenced this pull request Sep 10, 2025
Notable changes:

crypto:
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) #59570
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) #59570
  * (SEMVER-MINOR) add KMAC Web Cryptography algorithms (Filip Skokan) #59647
  * (SEMVER-MINOR) add Argon2 Web Cryptography algorithms (Filip Skokan) #59544
  * (SEMVER-MINOR) support SLH-DSA KeyObject, sign, and verify (Filip Skokan) #59537
inspector:
  * add http2 tracking support (Darshan Sen) #59611
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59816
targos pushed a commit that referenced this pull request Sep 10, 2025
Notable changes:

crypto:
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) #59570
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) #59570
  * (SEMVER-MINOR) add KMAC Web Cryptography algorithms (Filip Skokan) #59647
  * (SEMVER-MINOR) add Argon2 Web Cryptography algorithms (Filip Skokan) #59544
  * (SEMVER-MINOR) support SLH-DSA KeyObject, sign, and verify (Filip Skokan) #59537
inspector:
  * add http2 tracking support (Darshan Sen) #59611
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59816
targos pushed a commit that referenced this pull request Sep 10, 2025
Notable changes:

crypto:
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) #59570
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) #59570
  * (SEMVER-MINOR) add KMAC Web Cryptography algorithms (Filip Skokan) #59647
  * (SEMVER-MINOR) add Argon2 Web Cryptography algorithms (Filip Skokan) #59544
  * (SEMVER-MINOR) support SLH-DSA KeyObject, sign, and verify (Filip Skokan) #59537
inspector:
  * add http2 tracking support (Darshan Sen) #59611
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59816
targos pushed a commit that referenced this pull request Sep 10, 2025
Notable changes:

crypto:
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) #59570
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) #59570
  * (SEMVER-MINOR) add KMAC Web Cryptography algorithms (Filip Skokan) #59647
  * (SEMVER-MINOR) add Argon2 Web Cryptography algorithms (Filip Skokan) #59544
  * (SEMVER-MINOR) support SLH-DSA KeyObject, sign, and verify (Filip Skokan) #59537
inspector:
  * add http2 tracking support (Darshan Sen) #59611
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59816
@theanarkh theanarkh mentioned this pull request Sep 10, 2025
4 tasks
targos pushed a commit that referenced this pull request Sep 10, 2025
Notable changes:

crypto:
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) #59570
  * (SEMVER-MINOR) support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) #59570
  * (SEMVER-MINOR) add KMAC Web Cryptography algorithms (Filip Skokan) #59647
  * (SEMVER-MINOR) add Argon2 Web Cryptography algorithms (Filip Skokan) #59544
  * (SEMVER-MINOR) support SLH-DSA KeyObject, sign, and verify (Filip Skokan) #59537
inspector:
  * add http2 tracking support (Darshan Sen) #59611
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59816
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Sep 12, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `24.7.0` -> `24.8.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>

### [`v24.8.0`](https://github.com/nodejs/node/releases/tag/v24.8.0): 2025-09-10, Version 24.8.0 (Current), @&#8203;targos

[Compare Source](nodejs/node@v24.7.0...v24.8.0)

##### Notable Changes

##### HTTP/2 Network Inspection Support in Node.js

Node.js now supports inspection of HTTP/2 network calls in Chrome DevTools for Node.js.

##### Usage

Write a `test.js` script that makes HTTP/2 requests.

```js
const http2 = require('node:http2');

const client = http2.connect('https://nghttp2.org');

const req = client.request([
  ':path', '/',
  ':method', 'GET',
]);
```

Run it with these options:

```bash
node --inspect-wait --experimental-network-inspection test.js
```

Open `about:inspect` on Google Chrome and click on `Open dedicated DevTools for Node`.
The `Network` tab will let you track your HTTP/2 calls.

Contributed by Darshan Sen in [#&#8203;59611](nodejs/node#59611).

##### Other Notable Changes

- \[[`7a8e2c251d`](nodejs/node@7a8e2c251d)] - **(SEMVER-MINOR)** **crypto**: support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) [#&#8203;59570](nodejs/node#59570)
- \[[`4b631be0b0`](nodejs/node@4b631be0b0)] - **(SEMVER-MINOR)** **crypto**: support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) [#&#8203;59570](nodejs/node#59570)
- \[[`3e4b1e732c`](nodejs/node@3e4b1e732c)] - **(SEMVER-MINOR)** **crypto**: add KMAC Web Cryptography algorithms (Filip Skokan) [#&#8203;59647](nodejs/node#59647)
- \[[`b1d28785b2`](nodejs/node@b1d28785b2)] - **(SEMVER-MINOR)** **crypto**: add Argon2 Web Cryptography algorithms (Filip Skokan) [#&#8203;59544](nodejs/node#59544)
- \[[`430691d1af`](nodejs/node@430691d1af)] - **(SEMVER-MINOR)** **crypto**: support SLH-DSA KeyObject, sign, and verify (Filip Skokan) [#&#8203;59537](nodejs/node#59537)
- \[[`d6d05ba397`](nodejs/node@d6d05ba397)] - **(SEMVER-MINOR)** **worker**: add cpu profile APIs for worker (theanarkh) [#&#8203;59428](nodejs/node#59428)

##### Commits

- \[[`d913872369`](nodejs/node@d913872369)] - **assert**: cap input size in myersDiff to avoid Int32Array overflow (Haram Jeong) [#&#8203;59578](nodejs/node#59578)
- \[[`7bbbcf6666`](nodejs/node@7bbbcf6666)] - **benchmark**: sqlite prevent create both tables on prepare selects (Bruno Rodrigues) [#&#8203;59709](nodejs/node#59709)
- \[[`44d7b92271`](nodejs/node@44d7b92271)] - **benchmark**: calibrate config array-vs-concat (Rafael Gonzaga) [#&#8203;59587](nodejs/node#59587)
- \[[`7f347fc551`](nodejs/node@7f347fc551)] - **build**: fix getting OpenSSL version on Windows (Michaël Zasso) [#&#8203;59609](nodejs/node#59609)
- \[[`4a317150d5`](nodejs/node@4a317150d5)] - **build**: fix 'implicit-function-declaration' on OpenHarmony platform (hqzing) [#&#8203;59547](nodejs/node#59547)
- \[[`bda32af587`](nodejs/node@bda32af587)] - **build**: use `windows-2025` runner (Michaël Zasso) [#&#8203;59673](nodejs/node#59673)
- \[[`a4a8ed8f6e`](nodejs/node@a4a8ed8f6e)] - **build**: compile bundled uvwasi conditionally (Carlo Cabrera) [#&#8203;59622](nodejs/node#59622)
- \[[`d944a87761`](nodejs/node@d944a87761)] - **crypto**: refactor subtle methods to use synchronous import (Filip Skokan) [#&#8203;59771](nodejs/node#59771)
- \[[`7a8e2c251d`](nodejs/node@7a8e2c251d)] - **(SEMVER-MINOR)** **crypto**: support Ed448 and ML-DSA context parameter in node:crypto (Filip Skokan) [#&#8203;59570](nodejs/node#59570)
- \[[`4b631be0b0`](nodejs/node@4b631be0b0)] - **(SEMVER-MINOR)** **crypto**: support Ed448 and ML-DSA context parameter in Web Cryptography (Filip Skokan) [#&#8203;59570](nodejs/node#59570)
- \[[`3e4b1e732c`](nodejs/node@3e4b1e732c)] - **(SEMVER-MINOR)** **crypto**: add KMAC Web Cryptography algorithms (Filip Skokan) [#&#8203;59647](nodejs/node#59647)
- \[[`b1d28785b2`](nodejs/node@b1d28785b2)] - **(SEMVER-MINOR)** **crypto**: add Argon2 Web Cryptography algorithms (Filip Skokan) [#&#8203;59544](nodejs/node#59544)
- \[[`430691d1af`](nodejs/node@430691d1af)] - **(SEMVER-MINOR)** **crypto**: support SLH-DSA KeyObject, sign, and verify (Filip Skokan) [#&#8203;59537](nodejs/node#59537)
- \[[`0d1e53d935`](nodejs/node@0d1e53d935)] - **deps**: update uvwasi to 0.0.23 (Node.js GitHub Bot) [#&#8203;59791](nodejs/node#59791)
- \[[`68732cf426`](nodejs/node@68732cf426)] - **deps**: update histogram to 0.11.9 (Node.js GitHub Bot) [#&#8203;59689](nodejs/node#59689)
- \[[`f12c1ad961`](nodejs/node@f12c1ad961)] - **deps**: update googletest to [`eb2d85e`](nodejs/node@eb2d85e) (Node.js GitHub Bot) [#&#8203;59335](nodejs/node#59335)
- \[[`45af6966ae`](nodejs/node@45af6966ae)] - **deps**: upgrade npm to 11.6.0 (npm team) [#&#8203;59750](nodejs/node#59750)
- \[[`57617244a4`](nodejs/node@57617244a4)] - **deps**: V8: cherry-pick [`6b1b9bc`](nodejs/node@6b1b9bca2a8) (Xiao-Tao) [#&#8203;59283](nodejs/node#59283)
- \[[`2e6225a747`](nodejs/node@2e6225a747)] - **deps**: update amaro to 1.1.2 (Node.js GitHub Bot) [#&#8203;59616](nodejs/node#59616)
- \[[`1f7f6dfae6`](nodejs/node@1f7f6dfae6)] - **diagnostics\_channel**: revoke DEP0163 (René) [#&#8203;59758](nodejs/node#59758)
- \[[`8671a6cdb3`](nodejs/node@8671a6cdb3)] - **doc**: stabilize --disable-sigusr1 (Rafael Gonzaga) [#&#8203;59707](nodejs/node#59707)
- \[[`583b1b255d`](nodejs/node@583b1b255d)] - **doc**: update OpenSSL default security level to 2 (Jeetu Suthar) [#&#8203;59723](nodejs/node#59723)
- \[[`9b5eb6eb50`](nodejs/node@9b5eb6eb50)] - **doc**: fix missing links in the `errors` page (Nam Yooseong) [#&#8203;59427](nodejs/node#59427)
- \[[`e7bf712c57`](nodejs/node@e7bf712c57)] - **doc**: update "Type stripping in dependencies" section (Josh Kelley) [#&#8203;59652](nodejs/node#59652)
- \[[`96db47f91e`](nodejs/node@96db47f91e)] - **doc**: add Miles Guicent as triager (Miles Guicent) [#&#8203;59562](nodejs/node#59562)
- \[[`87f829bd0c`](nodejs/node@87f829bd0c)] - **doc**: mark `path.matchesGlob` as stable (Aviv Keller) [#&#8203;59572](nodejs/node#59572)
- \[[`062b2f705e`](nodejs/node@062b2f705e)] - **doc**: improve documentation for raw headers in HTTP/2 APIs (Tim Perry) [#&#8203;59633](nodejs/node#59633)
- \[[`6ab9306370`](nodejs/node@6ab9306370)] - **doc**: update install\_tools.bat free disk space (Stefan Stojanovic) [#&#8203;59579](nodejs/node#59579)
- \[[`c8d6b60da6`](nodejs/node@c8d6b60da6)] - **doc**: fix quic session instance typo (jakecastelli) [#&#8203;59642](nodejs/node#59642)
- \[[`61d0a2d1ba`](nodejs/node@61d0a2d1ba)] - **doc**: fix filehandle.read typo (Ruy Adorno) [#&#8203;59635](nodejs/node#59635)
- \[[`3276bfa0d0`](nodejs/node@3276bfa0d0)] - **doc**: update migration recomendations for `util.is**()` deprecations (Augustin Mauroy) [#&#8203;59269](nodejs/node#59269)
- \[[`11de6c7ebb`](nodejs/node@11de6c7ebb)] - **doc**: fix missing link to the Error documentation in the `http` page (Alexander Makarenko) [#&#8203;59080](nodejs/node#59080)
- \[[`f5b6829bba`](nodejs/node@f5b6829bba)] - **doc,crypto**: add description to the KEM and supports() methods (Filip Skokan) [#&#8203;59644](nodejs/node#59644)
- \[[`5bfdc7ee74`](nodejs/node@5bfdc7ee74)] - **doc,crypto**: cleanup unlinked and self method references webcrypto.md (Filip Skokan) [#&#8203;59608](nodejs/node#59608)
- \[[`010458d061`](nodejs/node@010458d061)] - **esm**: populate separate cache for require(esm) in imported CJS (Joyee Cheung) [#&#8203;59679](nodejs/node#59679)
- \[[`dbe6e63baf`](nodejs/node@dbe6e63baf)] - **esm**: fix missed renaming in ModuleJob.runSync (Joyee Cheung) [#&#8203;59724](nodejs/node#59724)
- \[[`8eb0d9d834`](nodejs/node@8eb0d9d834)] - **fs**: fix wrong order of file names in cpSync error message (Nicholas Paun) [#&#8203;59775](nodejs/node#59775)
- \[[`e69be5611f`](nodejs/node@e69be5611f)] - **fs**: fix dereference: false on cpSync (Nicholas Paun) [#&#8203;59681](nodejs/node#59681)
- \[[`2865d2ac20`](nodejs/node@2865d2ac20)] - **http**: unbreak keepAliveTimeoutBuffer (Robert Nagy) [#&#8203;59784](nodejs/node#59784)
- \[[`ade1175475`](nodejs/node@ade1175475)] - **http**: use cached '1.1' http version string (Robert Nagy) [#&#8203;59717](nodejs/node#59717)
- \[[`74a09482de`](nodejs/node@74a09482de)] - **inspector**: undici as shared-library should pass tests (Aras Abbasi) [#&#8203;59837](nodejs/node#59837)
- \[[`772f8f415a`](nodejs/node@772f8f415a)] - **inspector**: add http2 tracking support (Darshan Sen) [#&#8203;59611](nodejs/node#59611)
- \[[`3d225572d7`](nodejs/node@3d225572d7)] - ***Revert*** "**lib**: optimize writable stream buffer clearing" (Yoo) [#&#8203;59743](nodejs/node#59743)
- \[[`4fd213ce73`](nodejs/node@4fd213ce73)] - **lib**: fix isReadable and isWritable return type value (Gabriel Quaresma) [#&#8203;59089](nodejs/node#59089)
- \[[`39befddb87`](nodejs/node@39befddb87)] - **lib**: prefer TypedArrayPrototype primordials (Filip Skokan) [#&#8203;59766](nodejs/node#59766)
- \[[`0748160d2e`](nodejs/node@0748160d2e)] - **lib**: fix DOMException subclass support (Chengzhong Wu) [#&#8203;59680](nodejs/node#59680)
- \[[`1a93df808c`](nodejs/node@1a93df808c)] - **lib**: revert to using default derived class constructors (René) [#&#8203;59650](nodejs/node#59650)
- \[[`bb0755df37`](nodejs/node@bb0755df37)] - **meta**: bump `codecov/codecov-action` (dependabot\[bot]) [#&#8203;59726](nodejs/node#59726)
- \[[`45d148d9be`](nodejs/node@45d148d9be)] - **meta**: bump actions/download-artifact from 4.3.0 to 5.0.0 (dependabot\[bot]) [#&#8203;59729](nodejs/node#59729)
- \[[`01b66b122e`](nodejs/node@01b66b122e)] - **meta**: bump github/codeql-action from 3.29.2 to 3.30.0 (dependabot\[bot]) [#&#8203;59728](nodejs/node#59728)
- \[[`34f7ab5502`](nodejs/node@34f7ab5502)] - **meta**: bump actions/cache from 4.2.3 to 4.2.4 (dependabot\[bot]) [#&#8203;59727](nodejs/node#59727)
- \[[`5806ea02af`](nodejs/node@5806ea02af)] - **meta**: bump actions/checkout from 4.2.2 to 5.0.0 (dependabot\[bot]) [#&#8203;59725](nodejs/node#59725)
- \[[`f667215583`](nodejs/node@f667215583)] - **path**: refactor path joining logic for clarity and performance (Lee Jiho) [#&#8203;59781](nodejs/node#59781)
- \[[`0340fe92a6`](nodejs/node@0340fe92a6)] - **repl**: do not cause side effects in tab completion (Anna Henningsen) [#&#8203;59774](nodejs/node#59774)
- \[[`a414c1eb51`](nodejs/node@a414c1eb51)] - **repl**: fix REPL completion under unary expressions (Kingsword) [#&#8203;59744](nodejs/node#59744)
- \[[`c206f8dd87`](nodejs/node@c206f8dd87)] - **repl**: add isValidParentheses check before wrap input (Xuguang Mei) [#&#8203;59607](nodejs/node#59607)
- \[[`0bf9775ee2`](nodejs/node@0bf9775ee2)] - **sea**: implement sea.getAssetKeys() (Joyee Cheung) [#&#8203;59661](nodejs/node#59661)
- \[[`bf26b478d8`](nodejs/node@bf26b478d8)] - **sea**: allow using inspector command line flags with SEA (Joyee Cheung) [#&#8203;59568](nodejs/node#59568)
- \[[`92128a8fe2`](nodejs/node@92128a8fe2)] - **src**: use DictionaryTemplate for node\_url\_pattern (James M Snell) [#&#8203;59802](nodejs/node#59802)
- \[[`bcb29fb84f`](nodejs/node@bcb29fb84f)] - **src**: correctly report memory changes to V8 (Yaksh Bariya) [#&#8203;59623](nodejs/node#59623)
- \[[`44c24657d3`](nodejs/node@44c24657d3)] - **src**: fixup node\_messaging error handling (James M Snell) [#&#8203;59792](nodejs/node#59792)
- \[[`2cd6a3b7ec`](nodejs/node@2cd6a3b7ec)] - **src**: track async resources via pointers to stack-allocated handles (Anna Henningsen) [#&#8203;59704](nodejs/node#59704)
- \[[`34d752586f`](nodejs/node@34d752586f)] - **src**: fix build on NetBSD (Thomas Klausner) [#&#8203;59718](nodejs/node#59718)
- \[[`15fa779ac5`](nodejs/node@15fa779ac5)] - **src**: fix race on process exit and off thread CA loading (Chengzhong Wu) [#&#8203;59632](nodejs/node#59632)
- \[[`15cbd3966a`](nodejs/node@15cbd3966a)] - **src**: separate module.hasAsyncGraph and module.hasTopLevelAwait (Joyee Cheung) [#&#8203;59675](nodejs/node#59675)
- \[[`88d1ca8990`](nodejs/node@88d1ca8990)] - **src**: use non-deprecated Get/SetPrototype methods (Michaël Zasso) [#&#8203;59671](nodejs/node#59671)
- \[[`56ac9a2d46`](nodejs/node@56ac9a2d46)] - **src**: migrate WriteOneByte to WriteOneByteV2 (Chengzhong Wu) [#&#8203;59634](nodejs/node#59634)
- \[[`3d88aa9f2f`](nodejs/node@3d88aa9f2f)] - **src**: remove duplicate code (theanarkh) [#&#8203;59649](nodejs/node#59649)
- \[[`0718a70b2a`](nodejs/node@0718a70b2a)] - **src**: add name for more threads (theanarkh) [#&#8203;59601](nodejs/node#59601)
- \[[`0379a8b254`](nodejs/node@0379a8b254)] - **src**: remove JSONParser (Joyee Cheung) [#&#8203;59619](nodejs/node#59619)
- \[[`90d0a1b2e9`](nodejs/node@90d0a1b2e9)] - **src,sqlite**: refactor value conversion (Edy Silva) [#&#8203;59659](nodejs/node#59659)
- \[[`5e025c7ca7`](nodejs/node@5e025c7ca7)] - **stream**: replace manual function validation with validateFunction (방진혁) [#&#8203;59529](nodejs/node#59529)
- \[[`155a999bed`](nodejs/node@155a999bed)] - **test**: skip tests failing when run under root (Livia Medeiros) [#&#8203;59779](nodejs/node#59779)
- \[[`6313706c69`](nodejs/node@6313706c69)] - **test**: update WPT for urlpattern to [`cff1ac1`](nodejs/node@cff1ac1123) (Node.js GitHub Bot) [#&#8203;59602](nodejs/node#59602)
- \[[`41245ad4c7`](nodejs/node@41245ad4c7)] - **test**: skip more sea tests on Linux ppc64le (Richard Lau) [#&#8203;59755](nodejs/node#59755)
- \[[`df63d37ec4`](nodejs/node@df63d37ec4)] - **test**: fix internet/test-dns (Michaël Zasso) [#&#8203;59660](nodejs/node#59660)
- \[[`1f6c335e82`](nodejs/node@1f6c335e82)] - **test**: mark test-inspector-network-fetch as flaky again (Joyee Cheung) [#&#8203;59640](nodejs/node#59640)
- \[[`1798683df1`](nodejs/node@1798683df1)] - **test**: skip test-fs-cp\* tests that are constantly failing on Windows (Joyee Cheung) [#&#8203;59637](nodejs/node#59637)
- \[[`4c48ec09e5`](nodejs/node@4c48ec09e5)] - **test**: deflake test-http-keep-alive-empty-line (Luigi Pinca) [#&#8203;59595](nodejs/node#59595)
- \[[`dcdb259e85`](nodejs/node@dcdb259e85)] - **test\_runner**: fix todo inheritance (Moshe Atlow) [#&#8203;59721](nodejs/node#59721)
- \[[`24177973a2`](nodejs/node@24177973a2)] - **test\_runner**: set mock timer's interval undefined (hotpineapple) [#&#8203;59479](nodejs/node#59479)
- \[[`83d11f8a7a`](nodejs/node@83d11f8a7a)] - **tools**: print appropriate output when test aborted (hotpineapple) [#&#8203;59794](nodejs/node#59794)
- \[[`1eca2cc548`](nodejs/node@1eca2cc548)] - **tools**: use sparse checkout in `build-tarball.yml` (Antoine du Hamel) [#&#8203;59788](nodejs/node#59788)
- \[[`89fa1a929d`](nodejs/node@89fa1a929d)] - **tools**: remove unused actions from `build-tarball.yml` (Antoine du Hamel) [#&#8203;59787](nodejs/node#59787)
- \[[`794ca3511d`](nodejs/node@794ca3511d)] - **tools**: do not attempt to compress tgz archive (Antoine du Hamel) [#&#8203;59785](nodejs/node#59785)
- \[[`377bdb9b7e`](nodejs/node@377bdb9b7e)] - **tools**: add v8windbg target (Chengzhong Wu) [#&#8203;59767](nodejs/node#59767)
- \[[`6696d1d6c9`](nodejs/node@6696d1d6c9)] - **tools**: improve error handling in node\_mksnapshot (James M Snell) [#&#8203;59437](nodejs/node#59437)
- \[[`8dbd0f13e8`](nodejs/node@8dbd0f13e8)] - **tools**: add sccache to `test-internet` workflow (Antoine du Hamel) [#&#8203;59720](nodejs/node#59720)
- \[[`6523c2d7d9`](nodejs/node@6523c2d7d9)] - **tools**: update gyp-next to 0.20.4 (Node.js GitHub Bot) [#&#8203;59690](nodejs/node#59690)
- \[[`19d633f40c`](nodejs/node@19d633f40c)] - **tools**: add script to make reviewing backport MRs easier (Antoine du Hamel) [#&#8203;59161](nodejs/node#59161)
- \[[`15e547b3a4`](nodejs/node@15e547b3a4)] - **typings**: add typing for 'uv' (방진혁) [#&#8203;59606](nodejs/node#59606)
- \[[`ad5cfcc901`](nodejs/node@ad5cfcc901)] - **typings**: add missing properties in ConfigBinding (Lee Jiho) [#&#8203;59585](nodejs/node#59585)
- \[[`70d2d6d479`](nodejs/node@70d2d6d479)] - **url**: add err.input to ERR\_INVALID\_FILE\_URL\_PATH (Joyee Cheung) [#&#8203;59730](nodejs/node#59730)
- \[[`e476e43c17`](nodejs/node@e476e43c17)] - **util**: fix numericSeparator with negative fractional numbers (sangwook) [#&#8203;59379](nodejs/node#59379)
- \[[`b2e8f40d15`](nodejs/node@b2e8f40d15)] - **util**: remove unnecessary template strings (btea) [#&#8203;59201](nodejs/node#59201)
- \[[`6f79450ea2`](nodejs/node@6f79450ea2)] - **util**: remove outdated TODO comment (haramjeong) [#&#8203;59760](nodejs/node#59760)
- \[[`32731432ef`](nodejs/node@32731432ef)] - **util**: use getOptionValue('--no-deprecation') in deprecated() (haramjeong) [#&#8203;59760](nodejs/node#59760)
- \[[`65e4e68c90`](nodejs/node@65e4e68c90)] - **util**: hide duplicated stack frames when using util.inspect (Ruben Bridgewater) [#&#8203;59447](nodejs/node#59447)
- \[[`2086f3365f`](nodejs/node@2086f3365f)] - **vm**: sync-ify SourceTextModule linkage (Chengzhong Wu) [#&#8203;59000](nodejs/node#59000)
- \[[`c16163511d`](nodejs/node@c16163511d)] - **wasi**: fix `clean` target in `test/wasi/Makefile` (Antoine du Hamel) [#&#8203;59576](nodejs/node#59576)
- \[[`2e54411cb6`](nodejs/node@2e54411cb6)] - **worker**: optimize cpu profile implement (theanarkh) [#&#8203;59683](nodejs/node#59683)
- \[[`d6d05ba397`](nodejs/node@d6d05ba397)] - **(SEMVER-MINOR)** **worker**: add cpu profile APIs for worker (theanarkh) [#&#8203;59428](nodejs/node#59428)

</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:eyJjcmVhdGVkSW5WZXIiOiI0MS45OS45IiwidXBkYXRlZEluVmVyIjoiNDEuOTkuOSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
richardlau pushed a commit that referenced this pull request Sep 20, 2025
PR-URL: #59428
Reviewed-By: Anna Henningsen <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
nodejs-github-bot added a commit that referenced this pull request Sep 22, 2025
Notable changes:

crypto:
  * update root certificates to NSS 3.114 (Node.js GitHub Bot) #59571
deps:
  * update archs files for openssl-3.5.1 (Node.js GitHub Bot) #59234
  * upgrade openssl sources to openssl-3.5.1 (Node.js GitHub Bot) #59234
http:
  * (SEMVER-MINOR) add Agent.agentKeepAliveTimeoutBuffer option (Haram Jeong) #59315
http2:
  * (SEMVER-MINOR) add support for raw header arrays in h2Stream.respond() (Tim Perry) #59455
inspector:
  * add http2 tracking support (Darshan Sen) #59611
sea:
  * (SEMVER-MINOR) implement execArgvExtension (Joyee Cheung) #59560
  * (SEMVER-MINOR) support execArgv in sea config (Joyee Cheung) #59314
stream:
  * (SEMVER-MINOR) add brotli support to CompressionStream and DecompressionStream (Matthew Aitken) #59464
test_runner:
  * (SEMVER-MINOR) support object property mocking (Idan Goshen) #58438
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59973
richardlau pushed a commit that referenced this pull request Sep 22, 2025
Notable changes:

crypto:
  * update root certificates to NSS 3.114 (Node.js GitHub Bot) #59571
deps:
  * fix OpenSSL security level at 1 (Richard Lau) #59859
  * upgrade openssl sources to openssl-3.5.2 (Node.js GitHub Bot) #59371
doc:
  * stabilize --disable-sigusr1 (Rafael Gonzaga) #59707
  * mark `path.matchesGlob` as stable (Aviv Keller) #59572
http:
  * (SEMVER-MINOR) add Agent.agentKeepAliveTimeoutBuffer option (Haram Jeong) #59315
http2:
  * (SEMVER-MINOR) add support for raw header arrays in h2Stream.respond() (Tim Perry) #59455
inspector:
  * add http2 tracking support (Darshan Sen) #59611
sea:
  * (SEMVER-MINOR) implement execArgvExtension (Joyee Cheung) #59560
  * (SEMVER-MINOR) support execArgv in sea config (Joyee Cheung) #59314
stream:
  * (SEMVER-MINOR) add brotli support to CompressionStream and DecompressionStream (Matthew Aitken) #59464
test_runner:
  * (SEMVER-MINOR) support object property mocking (Idan Goshen) #58438
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59973
nodejs-github-bot pushed a commit that referenced this pull request Sep 23, 2025
PR-URL: #59846
Refs: #59428
Reviewed-By: James M Snell <[email protected]>
targos pushed a commit that referenced this pull request Sep 24, 2025
PR-URL: #59846
Refs: #59428
Reviewed-By: James M Snell <[email protected]>
targos pushed a commit that referenced this pull request Sep 24, 2025
PR-URL: #59846
Refs: #59428
Reviewed-By: James M Snell <[email protected]>
richardlau pushed a commit that referenced this pull request Sep 24, 2025
Notable changes:

crypto:
  * update root certificates to NSS 3.114 (Node.js GitHub Bot) #59571
deps:
  * fix OpenSSL security level at 1 (Richard Lau) #59859
  * upgrade openssl sources to openssl-3.5.2 (Node.js GitHub Bot) #59371
doc:
  * stabilize --disable-sigusr1 (Rafael Gonzaga) #59707
  * mark `path.matchesGlob` as stable (Aviv Keller) #59572
http:
  * (SEMVER-MINOR) add Agent.agentKeepAliveTimeoutBuffer option (Haram Jeong) #59315
http2:
  * (SEMVER-MINOR) add support for raw header arrays in h2Stream.respond() (Tim Perry) #59455
inspector:
  * add http2 tracking support (Darshan Sen) #59611
sea:
  * (SEMVER-MINOR) implement execArgvExtension (Joyee Cheung) #59560
  * (SEMVER-MINOR) support execArgv in sea config (Joyee Cheung) #59314
stream:
  * (SEMVER-MINOR) add brotli support to CompressionStream and DecompressionStream (Matthew Aitken) #59464
test_runner:
  * (SEMVER-MINOR) support object property mocking (Idan Goshen) #58438
worker:
  * (SEMVER-MINOR) add cpu profile APIs for worker (theanarkh) #59428

PR-URL: #59973
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. semver-minor PRs that contain new features and should be released in the next minor version. worker Issues and PRs related to Worker support.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants