Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plans for npm 10 #884

Closed
lukekarrys opened this issue Jul 14, 2023 · 30 comments
Closed

Plans for npm 10 #884

lukekarrys opened this issue Jul 14, 2023 · 30 comments

Comments

@lukekarrys
Copy link
Member

lukekarrys commented Jul 14, 2023

The npm team is working on npm 10, and we are currently in the planning and early development phase. In opening this issue our goal is to facilitate discussion about our planned breaking changes in npm 10 and work towards our goal of landing npm 10 in Node.js 20 and 18.

Breaking Changes

During the discussion about npm 9 we landed on a list of guidelines on integrating new major versions of npm with Node. We plan on following these guidelines again, and we consider all breaking changes listed below to fall within those guidelines.

  • Update engines to >=16.14 ^18.17.0 || >=20.5.0
  • Remove implicit if-present logic from run-script in workspace mode
    • Currently when calling npm run-script on workspaces if any of the scripts are missing it is treated as a silently ignored error, making there an implicit "if-present" config in this mode. Users who want this behavior will need to include this config.
  • Remove the following deprecated or unused configs: tmp, ci-name, hashAlgorithm, metrics-registry
    • All these configs are either deprecated or are entirely unused in the npm CLI. We see these changes as low impact, but we always treat the removal of a config item as a breaking change.
  • Use @npmcli/agent
    • The existing http agent and proxy libraries we use do not have very good timeout configurations and also diverge from the spec in odd ways. The new agent is intended to be identical to the existing way of doing things, but because of the scope of the change we are waiting on a semver major before cutting over.
  • Remove "strict mode" from npm-package-arg
    • npm-package-arg can be set to run in a RFC 8909 compliant "strict mode" by setting the environment variable NPM_PACKAGE_ARG_8909_STRICT=1. We don't have any real plan with making that mode permanent so we are removing this functionality. Too many existing packages rely on our technically spec divergent behavior and it is not worth breaking so many people to force compliance. Anyone currently using this mode will need to find a third party way to strictly enforce the package specs in their package.json.
  • Don't retry 409 errors during npm publish
    • Currently if the npm CLI gets a 409 from the registry during publish it attempts a single retry by re-fetching the manifest and attempting to apply a new patch on what's being published. This is not the safest approach, especially as the code used to patch is not the same code that is used to build the original manifest. It is much safer to simply have the user re-run the publish command.

Note: the following changes were originally planned but are not a part of npm@10

  • Expand the list of default ignored files obeyed during pack and publish
  • Implement the "obey user specifier" RFC
    • RFC issue: add "obey user specifier" RFC npm/rfcs#547
    • The npm CLI will now save the same specifier used to install a package to package.json, eg npm install eslint@=8.8.0 will save "8.8.0" as the specifier for eslint instead of "^8.8.0" as it does now. This will only affect installs run with an argument, and bare npm install commands will not churn the lockfile or package.json.

Testing

citgm was very helpful during the release of npm 9 in finding unintended consequences of our breaking changes. One new thing we will be doing during this release cycle is running our own modified version of citgm in GitHub Actions during all prereleases candidates of npm 10 to ensure we find breaking change bugs as early as possible.

Testing will also happen in CI during each pull request that is opened by the npm team.

Timeline

Our goals with this timeline are to ensure that npm 10 changes can be tested within Node as early as possible. We want to open PRs to main so that CI can be run against each prerelease of npm 10. The initial PRs will be labeled to only request-ci and not ready to be merged.

Once npm 10 is stable (Task 4) we will open a new PR that will be ready for review and to land on main. Once that PR is merged we will open PRs for both Node 20 and Node 18 backports. Our goal with these PRs is again to allow testing to happen as early as possible.

For Node 20 our goal is that npm 10 could be included in the tentative 2023-09-12 v20.10.0 release. For Node 18, assuming that npm 10 has shipped to users and we've fixed any bugs that have been raised, our goal is that npm 10 could be included in the tentative 2023-10-xx v18.20.0 release.

Status Task Date
1 First prerelease (npm@10.0.0-pre.0) 2023-07-19 2023-07-26
2 Open initial PR* to Node.js main branch for CI only nodejs/node#48934 2023-07-19 2023-07-26
3 Second prerelease 2023-08-02 2023-08-31
4 Major release (npm@10.0.0) 2023-08-16 2023-08-31
5 Open PR to Node.js main branch for review nodejs/node#49423 2023-08-16 2023-08-31
6 Land npm 10 on Node.js main branch On or before 2023-08-23 2023-08-31
7 Promote npm@10.0.0 to latest 2023-08-30 2023-09-08
8 Open PR to backport to Node.js 20 After npm 10 lands on main (Task 6)
9 Open PR requesting backport to Node.js 18 nodejs/node#49611 After npm 10 lands on main (Task 6) 2023-09-11
10 Release npm 10 in Node.js 20 2023-09-12** v20.7.0
11 Release npm 10 in Node.js 18 2023-10-xx** v18.20.0

* Unmerged pull requests will be closed and a new one opened for each (pre)release. Any new PR will contain all the changes from all previous unmerged PRs.

** Tentative Node.js release date

@mcollina
Copy link
Member

mcollina commented Jul 15, 2023

The plan looks solid and I don’t think there would be issue in shipping npm v10 in Node 20. However, I feel that shipping such an update to Node v18 might be too risky for two reasons:

  1. Node.js v16 is out of LTS at the end of September
  2. Node.js v18 enters maintenance soon after
  3. Node.js v20 goes LTS end of October

I don’t think there is much time to iron out possible bugs with thr given timeline.

Lastly, I recommend the npm team to stop treating the LTS release as their target and align their releases to Node.js. We could have avoided this discussion entirely if you released npm v10 in March or April.

@ruyadorno
Copy link
Member

Expand the list of default ignored files obeyed during pack and publish

From the list of breaking changes I believe this is the most likely to have a potential to be disruptive to the community, if the goal is to land on LTS I would advise the team to be very defensive about expanding that list. It might be worth holding on to the next major which hopefully aligns better with our release calendar.

@wraithgar
Copy link

from the list of breaking changes I believe this is the most likely to have a potential to be disruptive to the community, if the goal is to land on LTS I would advise the team to be very defensive about expanding that list. It might be worth holding on to the next major which hopefully aligns better with our release calendar.

I agree and this is really the suggestion that moved the needle back to "let's not do this". We were already on the fence on this one and the cost/benefit is not anywhere near the level that we would want on a breaking change.

@lukekarrys
Copy link
Member Author

npm@10 has been released and promoted to latest. I updated my original comment which some changes as to what breaking changes actually landed in npm@10 as well as updating the dates to when those events happened.

The PR to land npm@10 in nodejs/node#main has been opened here and is ready for review: nodejs/node#49423

@lukekarrys
Copy link
Member Author

lukekarrys commented Sep 11, 2023

I have opened a PR requesting to backport npm@10 to Node 18 here: nodejs/node#49611. This PR is just to run CI and facilitate discussion, since I expect opening the PR to generate more 👀 from contributors. npm@10 should be landing in Node 20 soon and we can continue to get and respond to user feedback.

We've already triaged and fixed one regression (npm/cli#6760) from npm 9 to 10 and are continuing to monitor new issues coming in for npm 10. At this time we have no new npm P0 or P1 bugs in npm@10.

Based on the list of breaking changes that ended up in npm@10 (2 of the more potentially disruptive changes were dropped from the release), we think it makes sense to land npm@10 in Node 18 before LTS. The smaller set of ubreaking changes means the potential surface area for user disruption is smaller than then the process of updating npm 8 to 9.

Lastly, I recommend the npm team to stop treating the LTS release as their target and align their releases to Node.js. We could have avoided this discussion entirely if you released npm v10 in March or April.

Addressing this point directly, our future plans will take this into account. Going forward we want to align more closely with Node around major versions to make this process much smoother. But we think in the case an exception for npm 10 should be discussed.

@mcollina
Copy link
Member

It would be best to avoid shipping npm 10 in a release, given that glob now depends on BlueOak-1.0.0 licensed software, which is against the IP policy of the foundation. I've already asked an opinion to the Foundation legal staff.

I'm acting out of caution here.

@bricss
Copy link

bricss commented Sep 12, 2023

It looks like BlueOak-1.0.0 is very much state-of-the-art permissive license, that is shipped within npm v9 in Node already.
And here is good article about it.

N.B.: Trying a new permissive software license

@mcollina
Copy link
Member

Ref nodejs/node#49625.

@lukekarrys
Copy link
Member Author

lukekarrys commented Oct 6, 2023

We've opened a new PR to backport npm@10 to v18: nodejs/node#50030. The npm team considers this PR ready to land in v18 now that npm@10.1.0 has shipped with v20.8.0. I will be checking the requested CI runs once they complete to ensure the same coverage as the previous draft PR (nodejs/node#49611).

The latest version npm@10.2.0 fixes one more P1 regression we found from npm@9. We've been triaging the same list of issues I linked previously and we have no new npm P0 or P1 bugs in npm@10 currently.

Based on the list of breaking changes that ended up in npm@10 (2 of the more potentially disruptive changes were dropped from the release), we think it makes sense to land npm@10 in Node 18 before LTS maintenance. The smaller set of ubreaking changes means the potential surface area for user disruption is smaller than then the process of updating npm 8 to 9.

I am tagging @nodejs/releasers @mcollina @ruyadorno in this comment since we would like to come to a resolution quickly before the final release of v18 later this month.

@richardlau
Copy link
Member

Based on the list of breaking changes that ended up in npm@10 (2 of the more potentially disruptive changes were dropped from the release), we think it makes sense to land npm@10 in Node 18 before LTS. The smaller set of ubreaking changes means the potential surface area for user disruption is smaller than then the process of updating npm 8 to 9.

Node.js 18 is already LTS. Do you mean before it enters maintenance?

FWIW I'm preparing a Node.js 18 release for Tuesday but I'm intending it to be a revert release to undo the libuv updates in Node.js 18.18.0 -- I will not have time to do a full Node.js 18 release. Node.js 18.17.0, 18.17.1 and 18.18.0 all contained regressions which I would like to sort out before landing anything else in Node.js 18.

@lukekarrys
Copy link
Member Author

Node.js 18 is already LTS. Do you mean before it enters maintenance?

Yes, that is what I meant and corrected my previous comment.

@wraithgar
Copy link

Now that Node.js v18.18.1 has shipped, do we have a better idea of whether or not we can land this?

@mark-wiemer
Copy link

Hi, very new to this issue, and a bit confused. npm 10 is out now and able to be installed without any pre-release flags. It doesn't come bundled with Node 18 yet, is that why this issue is still open? When should we expect a more formal "announcement" or summary of finalized changes with npm 10? Ref the GitHub blog for npm 9

@Apollon77
Copy link

Apollon77 commented Nov 7, 2023

please consider using npm@10.2.2 at least because of the current fixed node-gyp issues with Python 3.12 ... see nodejs/node-gyp#2869 ... because this already hits some users (and GitHub has alreayd started to update their runners to Python 3.12 - actions/runner#2972). The same 8also if off topic here) would be cool to see ot too late in node.js 20.

PS: I personally would love a "fix node.js 16 version" with also npm 10, but that might not going to happen because formally EOL ;-) ... it will just be forseeable that isues arise when Python 3.12 spreads on the users systems

@lukekarrys
Copy link
Member Author

npm@10.2.3 has landed in main (nodejs/node#50531) and should be included in the next Node 20 and 18 releases.

I've been keeping this issue open until Node 18 officially ships with npm 10.

@placaze
Copy link

placaze commented Nov 13, 2023

npm@10.2.3 has landed in main (nodejs/node#50531) and should be included in the next Node 20 and 18 releases.

npm@10.2.3 doesn't seem to be backported into the v20.10.0 release proposal (nodejs/node#50682).

@lukekarrys
Copy link
Member Author

Thanks for the heads up @placaze. I've added a comment to the release proposal for v20.10.0 asking npm@10.2.3 to be included.

mprins added a commit to Tailormap/tailormap-viewer that referenced this issue Dec 4, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [node](https://github.com/nodejs/node) | stage | minor | `18.18.2`
-> `18.19.0` |

---

### Release Notes

<details>
<summary>nodejs/node (node)</summary>

###
[`v18.19.0`](https://github.com/nodejs/node/releases/tag/v18.19.0):
2023-11-29, Version 18.19.0 &#x27;Hydrogen&#x27; (LTS), @&#8203;targos

[Compare
Source](https://github.com/nodejs/node/compare/v18.18.2...v18.19.0)

##### Notable Changes

##### npm updated to v10

After two months of baking time in Node.js 20, npm 10 is backported, so
that all
release lines include a supported version of npm. This release includes
npm v10.2.3.

Refer to
[nodejs/Release#884](https://github.com/nodejs/Release/issues/884) for
the plan to land npm 10.

##### ESM and customization hook changes

##### Leverage loaders when resolving subsequent loaders

Loaders now apply to subsequent loaders, for example:
`--experimental-loader ts-node --experimental-loader
loader-written-in-typescript`.

Contributed by Maël Nison in
[#&#8203;43772](https://github.com/nodejs/node/pull/43772).

##### New `node:module` API `register` for module customization hooks;
new `initialize` hook

There is a new API `register` available on `node:module` to specify a
file that exports module customization hooks, and pass data to the
hooks, and establish communication channels with them. The “define the
file with the hooks” part was previously handled by a flag
`--experimental-loader`, but when the hooks moved into a dedicated
thread in 20.0.0 there was a need to provide a way to communicate
between the main (application) thread and the hooks thread. This can now
be done by calling `register` from the main thread and passing data,
including `MessageChannel` instances.

We encourage users to migrate to an approach that uses
[`--import`](https://nodejs.org/api/cli.html#--importmodule) with
`register`, such as:

```bash
node --import ./file-that-calls-register.js ./app.js
```

Using `--import` ensures that the customization hooks are registered
before any application code runs, even the entry point.

Contributed by João Lenon and Jacob Smith in
[#&#8203;46826](https://github.com/nodejs/node/pull/46826), Izaak
Schroeder and Jacob Smith in
[#&#8203;48842](https://github.com/nodejs/node/pull/48842) and
[#&#8203;48559](https://github.com/nodejs/node/pull/48559).

##### `import.meta.resolve` unflagged

In ES modules,
[`import.meta.resolve(specifier)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve)
can be used to get an absolute URL string to which `specifier` resolves,
similar
to `require.resolve` in CommonJS. This aligns Node.js with browsers and
other server-side runtimes.

Contributed by Guy Bedford in
[#&#8203;49028](https://github.com/nodejs/node/pull/49028).

##### `--experimental-default-type` flag to flip module defaults

The new flag `--experimental-default-type` can be used to flip the
default
module system used by Node.js. Input that is already explicitly defined
as ES
modules or CommonJS, such as by a `package.json` `"type"` field or
`.mjs`/`.cjs`
file extension or the `--input-type` flag, is unaffected. What is
currently
implicitly CommonJS would instead be interpreted as ES modules under
`--experimental-default-type=module`:

- String input provided via `--eval` or STDIN, if `--input-type` is
unspecified.

- Files ending in `.js` or with no extension, if there is no
`package.json` file
    present in the same folder or any parent folder.

-   Files ending in `.js` or with no extension, if the nearest parent
`package.json` field lacks a `type` field; unless the folder is inside a
    `node_modules` folder.

In addition, extensionless files are interpreted as Wasm if
`--experimental-wasm-modules` is passed and the file contains the "magic
bytes"
Wasm header.

Contributed by Geoffrey Booth in
[#&#8203;49869](https://github.com/nodejs/node/pull/49869).

##### Other ESM-related changes

- \[[`ed2d46f4cc`](https://github.com/nodejs/node/commit/ed2d46f4cc)]
- **doc**: move and rename loaders section (Geoffrey Booth)
[#&#8203;49261](https://github.com/nodejs/node/pull/49261)
- \[[`92734d4480`](https://github.com/nodejs/node/commit/92734d4480)]
- **esm**: use import attributes instead of import assertions (Antoine
du Hamel) [#&#8203;50140](https://github.com/nodejs/node/pull/50140)
- \[[`e96f7ef881`](https://github.com/nodejs/node/commit/e96f7ef881)]
- **(SEMVER-MINOR)** **vm**: use import attributes instead of import
assertions (Antoine du Hamel)
[#&#8203;50141](https://github.com/nodejs/node/pull/50141)

##### Test runner changes

Many changes to the built-in test runner have been backported. This
includes
the following additions:

- \[[`b283ae4238`](https://github.com/nodejs/node/commit/b283ae4238)]
- **(SEMVER-MINOR)** **test_runner**: accept `testOnly` in `run` (Moshe
Atlow) [#&#8203;49753](https://github.com/nodejs/node/pull/49753)
- \[[`059b1945d8`](https://github.com/nodejs/node/commit/059b1945d8)]
- **(SEMVER-MINOR)** **test_runner**: add junit reporter (Moshe Atlow)
[#&#8203;49614](https://github.com/nodejs/node/pull/49614)
- \[[`d61a505546`](https://github.com/nodejs/node/commit/d61a505546)]
- **(SEMVER-MINOR)** **test_runner**: expose location of tests (Colin
Ihrig) [#&#8203;48975](https://github.com/nodejs/node/pull/48975)
- \[[`b55eb2a8d1`](https://github.com/nodejs/node/commit/b55eb2a8d1)]
- **(SEMVER-MINOR)** **test_runner**: add shards support (Raz Luvaton)
[#&#8203;48639](https://github.com/nodejs/node/pull/48639)
- \[[`05e7f28b40`](https://github.com/nodejs/node/commit/05e7f28b40)]
- **(SEMVER-MINOR)** **test_runner**: add initial draft for fakeTimers
(Erick Wendel)
[#&#8203;47775](https://github.com/nodejs/node/pull/47775)
- \[[`428301ad27`](https://github.com/nodejs/node/commit/428301ad27)]
- **(SEMVER-MINOR)** **test_runner, cli**: add --test-concurrency flag
(Colin Ihrig)
[#&#8203;49996](https://github.com/nodejs/node/pull/49996)

##### Other notable changes

- \[[`0c4a84e8e9`](https://github.com/nodejs/node/commit/0c4a84e8e9)]
- **(SEMVER-MINOR)** **deps**: update uvwasi to 0.0.19 (Node.js GitHub
Bot) [#&#8203;49908](https://github.com/nodejs/node/pull/49908)
- \[[`fae60c5841`](https://github.com/nodejs/node/commit/fae60c5841)]
- **stream**: use bitmap in readable state (Benjamin Gruenbaum)
[#&#8203;49745](https://github.com/nodejs/node/pull/49745)
- \[[`17246be158`](https://github.com/nodejs/node/commit/17246be158)]
- **(SEMVER-MINOR)** **lib**: add api to detect whether source-maps are
enabled (翠 / green)
[#&#8203;46391](https://github.com/nodejs/node/pull/46391)
- \[[`2e9f7284a1`](https://github.com/nodejs/node/commit/2e9f7284a1)]
- **(SEMVER-MINOR)** **lib**: add tracing channel to diagnostics_channel
(Stephen Belanger)
[#&#8203;44943](https://github.com/nodejs/node/pull/44943)
- \[[`cc7bf1f641`](https://github.com/nodejs/node/commit/cc7bf1f641)]
- **(SEMVER-MINOR)** **src**: add cjs_module_lexer_version
base64\_version (Jithil P Ponnan)
[#&#8203;45629](https://github.com/nodejs/node/pull/45629)
- \[[`b5d16cd8f0`](https://github.com/nodejs/node/commit/b5d16cd8f0)]
- **(SEMVER-MINOR)** **tls**: add ALPNCallback server option for dynamic
ALPN negotiation (Tim Perry)
[#&#8203;45190](https://github.com/nodejs/node/pull/45190)

##### Commits

- \[[`0d0eb47e2a`](https://github.com/nodejs/node/commit/0d0eb47e2a)]
- **benchmark**: add benchmarks for the test_runner (Raz Luvaton)
[#&#8203;48931](https://github.com/nodejs/node/pull/48931)
- \[[`8bb03d10f4`](https://github.com/nodejs/node/commit/8bb03d10f4)]
- **benchmark**: differentiate whatwg and legacy url (Yagiz Nizipli)
[#&#8203;47377](https://github.com/nodejs/node/pull/47377)
- \[[`3d7734cbe3`](https://github.com/nodejs/node/commit/3d7734cbe3)]
- **benchmark**: lower URL.canParse runs (Khafra)
[#&#8203;47351](https://github.com/nodejs/node/pull/47351)
- \[[`24d3fcf415`](https://github.com/nodejs/node/commit/24d3fcf415)]
- **benchmark**: stablize encode benchmark (Joyee Cheung)
[#&#8203;46658](https://github.com/nodejs/node/pull/46658)
- \[[`e08fd98bcc`](https://github.com/nodejs/node/commit/e08fd98bcc)]
- **bootstrap**: use correct descriptor for
Symbol.{dispose,asyncDispose} (Jordan Harband)
[#&#8203;48703](https://github.com/nodejs/node/pull/48703)
- \[[`cf9ddcd6c8`](https://github.com/nodejs/node/commit/cf9ddcd6c8)]
- **bootstrap**: simplify initialization of source map handlers (Joyee
Cheung) [#&#8203;48304](https://github.com/nodejs/node/pull/48304)
- \[[`12d731e431`](https://github.com/nodejs/node/commit/12d731e431)]
- **bootstrap**: log isolate data info in mksnapshot debug logs (Joyee
Cheung) [#&#8203;47768](https://github.com/nodejs/node/pull/47768)
- \[[`d66873871a`](https://github.com/nodejs/node/commit/d66873871a)]
- **bootstrap**: store internal loaders in C++ via a binding (Joyee
Cheung) [#&#8203;47215](https://github.com/nodejs/node/pull/47215)
- \[[`1a499c5082`](https://github.com/nodejs/node/commit/1a499c5082)]
- **bootstrap**: optimize modules loaded in the built-in snapshot (Joyee
Cheung) [#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`e0e09caafe`](https://github.com/nodejs/node/commit/e0e09caafe)]
- **bootstrap**: make CJS loader snapshotable (Joyee Cheung)
[#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`5f37decd56`](https://github.com/nodejs/node/commit/5f37decd56)]
- **bootstrap**: include event_target into the built-in snapshot (Joyee
Cheung) [#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`c3f56a3dee`](https://github.com/nodejs/node/commit/c3f56a3dee)]
- **bootstrap**: support module_wrap binding in snapshot (Joyee Cheung)
[#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`6466acbc89`](https://github.com/nodejs/node/commit/6466acbc89)]
- **bootstrap**: lazy load non-essential modules (Joyee Cheung)
[#&#8203;45659](https://github.com/nodejs/node/pull/45659)
- \[[`a0d4b69df4`](https://github.com/nodejs/node/commit/a0d4b69df4)]
- **bootstrap**: lazy-load Performance.prototype.timeOrigin (Joyee
Cheung) [#&#8203;46425](https://github.com/nodejs/node/pull/46425)
- \[[`c1bc8118e3`](https://github.com/nodejs/node/commit/c1bc8118e3)]
- **bootstrap**: generate bootstrapper arguments in BuiltinLoader (Joyee
Cheung) [#&#8203;44488](https://github.com/nodejs/node/pull/44488)
- \[[`075c57e88b`](https://github.com/nodejs/node/commit/075c57e88b)]
- **build**: add symlink to `compile_commands.json` file if needed (Juan
José) [#&#8203;49260](https://github.com/nodejs/node/pull/49260)
- \[[`9e1c531b8d`](https://github.com/nodejs/node/commit/9e1c531b8d)]
- **build**: expand when we run internet tests (Michael Dawson)
[#&#8203;49218](https://github.com/nodejs/node/pull/49218)
- \[[`a781d24624`](https://github.com/nodejs/node/commit/a781d24624)]
- **build**: fix typo `libray` -> `library` (configure.py)
(michalbiesek)
[#&#8203;49106](https://github.com/nodejs/node/pull/49106)
- \[[`f2eccb7a04`](https://github.com/nodejs/node/commit/f2eccb7a04)]
- **build**: fix `configure --link-module` (Richard Lau)
[#&#8203;48522](https://github.com/nodejs/node/pull/48522)
- \[[`a44d555494`](https://github.com/nodejs/node/commit/a44d555494)]
- **build**: fix IBM i build with Python 3.9 (Richard Lau)
[#&#8203;48056](https://github.com/nodejs/node/pull/48056)
- \[[`7f68e14ea2`](https://github.com/nodejs/node/commit/7f68e14ea2)]
- **child_process**: improve spawn performance on Linux (Keyhan Vakil)
[#&#8203;48523](https://github.com/nodejs/node/pull/48523)
- \[[`76e4d4117c`](https://github.com/nodejs/node/commit/76e4d4117c)]
- **crypto**: ensure valid point on elliptic curve in
SubtleCrypto.importKey (Filip Skokan)
[#&#8203;50234](https://github.com/nodejs/node/pull/50234)
- \[[`7af54279b5`](https://github.com/nodejs/node/commit/7af54279b5)]
- **deps**: V8: cherry-pick
[`70caf33`](https://github.com/nodejs/node/commit/70caf337c3f6) (kxxt)
[#&#8203;50506](https://github.com/nodejs/node/pull/50506)
- \[[`49c5495339`](https://github.com/nodejs/node/commit/49c5495339)]
- **deps**: update zlib to 1.2.13.1-motley-fef5869 (Node.js GitHub Bot)
[#&#8203;50085](https://github.com/nodejs/node/pull/50085)
- \[[`e0fd52bf07`](https://github.com/nodejs/node/commit/e0fd52bf07)]
- **deps**: update googletest to
[`2dd1c13`](https://github.com/nodejs/node/commit/2dd1c13) (Node.js
GitHub Bot) [#&#8203;50081](https://github.com/nodejs/node/pull/50081)
- \[[`1b103cc567`](https://github.com/nodejs/node/commit/1b103cc567)]
- **deps**: update googletest to
[`e47544a`](https://github.com/nodejs/node/commit/e47544a) (Node.js
GitHub Bot) [#&#8203;49982](https://github.com/nodejs/node/pull/49982)
- \[[`736c869eeb`](https://github.com/nodejs/node/commit/736c869eeb)]
- **deps**: update googletest to
[`d1467f5`](https://github.com/nodejs/node/commit/d1467f5) (Node.js
GitHub Bot) [#&#8203;49676](https://github.com/nodejs/node/pull/49676)
- \[[`cd99ee1f35`](https://github.com/nodejs/node/commit/cd99ee1f35)]
- **deps**: update googletest to
[`8a6feab`](https://github.com/nodejs/node/commit/8a6feab) (Node.js
GitHub Bot) [#&#8203;49463](https://github.com/nodejs/node/pull/49463)
- \[[`5c338573ff`](https://github.com/nodejs/node/commit/5c338573ff)]
- **deps**: update zlib to 1.2.13.1-motley-f5fd0ad (Node.js GitHub Bot)
[#&#8203;49252](https://github.com/nodejs/node/pull/49252)
- \[[`374ec3d623`](https://github.com/nodejs/node/commit/374ec3d623)]
- **deps**: update googletest to
[`7e33b6a`](https://github.com/nodejs/node/commit/7e33b6a) (Node.js
GitHub Bot) [#&#8203;49034](https://github.com/nodejs/node/pull/49034)
- \[[`c15dd6679b`](https://github.com/nodejs/node/commit/c15dd6679b)]
- **deps**: update zlib to 1.2.13.1-motley-526382e (Node.js GitHub Bot)
[#&#8203;49033](https://github.com/nodejs/node/pull/49033)
- \[[`588bd5e524`](https://github.com/nodejs/node/commit/588bd5e524)]
- **deps**: update googletest to
[`c875c4e`](https://github.com/nodejs/node/commit/c875c4e) (Node.js
GitHub Bot) [#&#8203;48964](https://github.com/nodejs/node/pull/48964)
- \[[`6059b59018`](https://github.com/nodejs/node/commit/6059b59018)]
- **deps**: update zlib to 1.2.13.1-motley-61dc0bd (Node.js GitHub Bot)
[#&#8203;48788](https://github.com/nodejs/node/pull/48788)
- \[[`e455dd4003`](https://github.com/nodejs/node/commit/e455dd4003)]
- **deps**: update googletest to
[`cc36671`](https://github.com/nodejs/node/commit/cc36671) (Node.js
GitHub Bot) [#&#8203;48789](https://github.com/nodejs/node/pull/48789)
- \[[`747fbb49ca`](https://github.com/nodejs/node/commit/747fbb49ca)]
- **deps**: V8: cherry-pick
[`1a782f6`](https://github.com/nodejs/node/commit/1a782f6543ae)
(Keyhan Vakil)
[#&#8203;48523](https://github.com/nodejs/node/pull/48523)
- \[[`272e55c66f`](https://github.com/nodejs/node/commit/272e55c66f)]
- **deps**: upgrade npm to 10.2.3 (npm team)
[#&#8203;50531](https://github.com/nodejs/node/pull/50531)
- \[[`3f6dcc62e5`](https://github.com/nodejs/node/commit/3f6dcc62e5)]
- **deps**: update archs files for openssl-3.0.12+quic1 (Node.js GitHub
Bot) [#&#8203;50411](https://github.com/nodejs/node/pull/50411)
- \[[`da26cdbe84`](https://github.com/nodejs/node/commit/da26cdbe84)]
- **deps**: upgrade openssl sources to quictls/openssl-3.0.12+quic1
(Node.js GitHub Bot)
[#&#8203;50411](https://github.com/nodejs/node/pull/50411)
- \[[`23069c34b2`](https://github.com/nodejs/node/commit/23069c34b2)]
- **deps**: V8: cherry-pick
[`d69c793`](https://github.com/nodejs/node/commit/d69c7937c99d)
(Michaël Zasso)
[#&#8203;46425](https://github.com/nodejs/node/pull/46425)
- \[[`5f852cc9fe`](https://github.com/nodejs/node/commit/5f852cc9fe)]
- **deps**: V8: cherry-pick
[`f7d000a`](https://github.com/nodejs/node/commit/f7d000a7ae7b) (Luke
Albao) [#&#8203;50344](https://github.com/nodejs/node/pull/50344)
- \[[`0c4a84e8e9`](https://github.com/nodejs/node/commit/0c4a84e8e9)]
- **(SEMVER-MINOR)** **deps**: update uvwasi to 0.0.19 (Node.js GitHub
Bot) [#&#8203;49908](https://github.com/nodejs/node/pull/49908)
- \[[`8682b90d02`](https://github.com/nodejs/node/commit/8682b90d02)]
- **deps**: update simdutf to 3.2.18 (Node.js GitHub Bot)
[#&#8203;50091](https://github.com/nodejs/node/pull/50091)
- \[[`11ecd06aeb`](https://github.com/nodejs/node/commit/11ecd06aeb)]
- **deps**: update simdutf to 3.2.17 (Node.js GitHub Bot)
[#&#8203;49019](https://github.com/nodejs/node/pull/49019)
- \[[`43bfe5f020`](https://github.com/nodejs/node/commit/43bfe5f020)]
- **deps**: upgrade npm to 10.2.0 (npm team)
[#&#8203;50027](https://github.com/nodejs/node/pull/50027)
- \[[`a140bc284b`](https://github.com/nodejs/node/commit/a140bc284b)]
- **deps**: upgrade npm to 10.1.0 (npm team)
[#&#8203;49570](https://github.com/nodejs/node/pull/49570)
- \[[`65ca41c276`](https://github.com/nodejs/node/commit/65ca41c276)]
- **(SEMVER-MINOR)** **deps**: upgrade npm to 10.0.0 (npm team)
[#&#8203;49423](https://github.com/nodejs/node/pull/49423)
- \[[`df1ff8e3da`](https://github.com/nodejs/node/commit/df1ff8e3da)]
- **deps**: fix call to undeclared functions 'ntohl' and 'htons'
(MatteoBax) [#&#8203;49979](https://github.com/nodejs/node/pull/49979)
- \[[`f228dc7955`](https://github.com/nodejs/node/commit/f228dc7955)]
- **deps**: update corepack to 0.22.0 (Node.js GitHub Bot)
[#&#8203;50325](https://github.com/nodejs/node/pull/50325)
- \[[`4324ebab67`](https://github.com/nodejs/node/commit/4324ebab67)]
- **deps**: update corepack to 0.21.0 (Node.js GitHub Bot)
[#&#8203;50088](https://github.com/nodejs/node/pull/50088)
- \[[`1cabb77659`](https://github.com/nodejs/node/commit/1cabb77659)]
- **deps**: update corepack to 0.20.0 (Node.js GitHub Bot)
[#&#8203;49464](https://github.com/nodejs/node/pull/49464)
- \[[`04227b287e`](https://github.com/nodejs/node/commit/04227b287e)]
- **deps**: update c-ares to 1.20.1 (Node.js GitHub Bot)
[#&#8203;50082](https://github.com/nodejs/node/pull/50082)
- \[[`13e69ee11c`](https://github.com/nodejs/node/commit/13e69ee11c)]
- **deps**: update c-ares to 1.20.0 (Node.js GitHub Bot)
[#&#8203;50082](https://github.com/nodejs/node/pull/50082)
- \[[`ac717df17e`](https://github.com/nodejs/node/commit/ac717df17e)]
- **deps**: update ada to 2.7.2 (Node.js GitHub Bot)
[#&#8203;50338](https://github.com/nodejs/node/pull/50338)
- \[[`6885fc9386`](https://github.com/nodejs/node/commit/6885fc9386)]
- **deps**: update ada to 2.6.10 (Node.js GitHub Bot)
[#&#8203;49984](https://github.com/nodejs/node/pull/49984)
- \[[`76c5f4039f`](https://github.com/nodejs/node/commit/76c5f4039f)]
- **deps**: update ada to 2.6.9 (Node.js GitHub Bot)
[#&#8203;49340](https://github.com/nodejs/node/pull/49340)
- \[[`597ea77422`](https://github.com/nodejs/node/commit/597ea77422)]
- **deps**: update ada to 2.6.8 (Node.js GitHub Bot)
[#&#8203;49340](https://github.com/nodejs/node/pull/49340)
- \[[`8e7dcba553`](https://github.com/nodejs/node/commit/8e7dcba553)]
- **deps**: update ada to 2.6.7 (Node.js GitHub Bot)
[#&#8203;49340](https://github.com/nodejs/node/pull/49340)
- \[[`9f2037e8ee`](https://github.com/nodejs/node/commit/9f2037e8ee)]
- **deps**: update ada to 2.6.5 (Node.js GitHub Bot)
[#&#8203;49340](https://github.com/nodejs/node/pull/49340)
- \[[`4723976703`](https://github.com/nodejs/node/commit/4723976703)]
- **deps**: update ada to 2.6.3 (Node.js GitHub Bot)
[#&#8203;49340](https://github.com/nodejs/node/pull/49340)
- \[[`7ccb478664`](https://github.com/nodejs/node/commit/7ccb478664)]
- **deps**: update undici to 5.26.4 (Node.js GitHub Bot)
[#&#8203;50274](https://github.com/nodejs/node/pull/50274)
- \[[`88f9ebb770`](https://github.com/nodejs/node/commit/88f9ebb770)]
- **diagnostics_channel**: fix ref counting bug when reaching zero
subscribers (Stephen Belanger)
[#&#8203;47520](https://github.com/nodejs/node/pull/47520)
- \[[`284a869540`](https://github.com/nodejs/node/commit/284a869540)]
- **dns**: call `ada::idna::to_ascii` directly from c++ (Yagiz Nizipli)
[#&#8203;47920](https://github.com/nodejs/node/pull/47920)
- \[[`10968370b5`](https://github.com/nodejs/node/commit/10968370b5)]
- **doc**: drop github actions check in sec release process (Rafael
Gonzaga) [#&#8203;48978](https://github.com/nodejs/node/pull/48978)
- \[[`07c3b88c74`](https://github.com/nodejs/node/commit/07c3b88c74)]
- **doc**: remove `@anonrig` from performance initiative (Yagiz Nizipli)
[#&#8203;49641](https://github.com/nodejs/node/pull/49641)
- \[[`e26b89e8be`](https://github.com/nodejs/node/commit/e26b89e8be)]
- **doc**: fix node-api call example (Chengzhong Wu)
[#&#8203;49395](https://github.com/nodejs/node/pull/49395)
- \[[`4c93905f6c`](https://github.com/nodejs/node/commit/4c93905f6c)]
- **doc**: add news issue for Diagnostics WG (Michael Dawson)
[#&#8203;49306](https://github.com/nodejs/node/pull/49306)
- \[[`3f1a237a8f`](https://github.com/nodejs/node/commit/3f1a237a8f)]
- **doc**: add print results for examples in `StringDecoder` (Jungku
Lee) [#&#8203;49326](https://github.com/nodejs/node/pull/49326)
- \[[`45caad82bb`](https://github.com/nodejs/node/commit/45caad82bb)]
- **doc**: update outdated reference to NIST SP 800-131A (Tobias Nießen)
[#&#8203;49316](https://github.com/nodejs/node/pull/49316)
- \[[`62f823d5a2`](https://github.com/nodejs/node/commit/62f823d5a2)]
- **doc**: use `cjs` as block code's type in `MockTimers` (Deokjin Kim)
[#&#8203;49309](https://github.com/nodejs/node/pull/49309)
- \[[`0dda724d3f`](https://github.com/nodejs/node/commit/0dda724d3f)]
- **doc**: update `options.filter` description for `fs.cp` (Shubham
Pandey) [#&#8203;49289](https://github.com/nodejs/node/pull/49289)
- \[[`4ba11e352b`](https://github.com/nodejs/node/commit/4ba11e352b)]
- **doc**: avoid "not currently recommended" (Tobias Nießen)
[#&#8203;49300](https://github.com/nodejs/node/pull/49300)
- \[[`9ca85b58b3`](https://github.com/nodejs/node/commit/9ca85b58b3)]
- **doc**: modify param description for end(),write() in `StringDecoder`
(Jungku Lee)
[#&#8203;49285](https://github.com/nodejs/node/pull/49285)
- \[[`3f771cab67`](https://github.com/nodejs/node/commit/3f771cab67)]
- **doc**: use NODE_API_SUPPORTED_VERSION_MAX in release doc (Cheng
Zhao) [#&#8203;49268](https://github.com/nodejs/node/pull/49268)
- \[[`f181c37e75`](https://github.com/nodejs/node/commit/f181c37e75)]
- **doc**: fix typo in `stream.finished` documentation (Antoine du
Hamel) [#&#8203;49271](https://github.com/nodejs/node/pull/49271)
- \[[`c70945ddc2`](https://github.com/nodejs/node/commit/c70945ddc2)]
- **doc**: update description for `percent_encode` sets in `WHATWG API`
(Jungku Lee)
[#&#8203;49258](https://github.com/nodejs/node/pull/49258)
- \[[`f9c2a3fb3e`](https://github.com/nodejs/node/commit/f9c2a3fb3e)]
- **doc**: clarify use of Uint8Array for n-api (Fedor Indutny)
[#&#8203;48742](https://github.com/nodejs/node/pull/48742)
- \[[`bf22a5f66e`](https://github.com/nodejs/node/commit/bf22a5f66e)]
- **doc**: use same name in the doc as in the code (Hyunjin Kim)
[#&#8203;49216](https://github.com/nodejs/node/pull/49216)
- \[[`72bd527fb6`](https://github.com/nodejs/node/commit/72bd527fb6)]
- **doc**: add notable-change label mention to PR template (Rafael
Gonzaga) [#&#8203;49188](https://github.com/nodejs/node/pull/49188)
- \[[`2247e52fe0`](https://github.com/nodejs/node/commit/2247e52fe0)]
- **doc**: add h1 summary to security release process (Rafael Gonzaga)
[#&#8203;49112](https://github.com/nodejs/node/pull/49112)
- \[[`3b82e9aed1`](https://github.com/nodejs/node/commit/3b82e9aed1)]
- **doc**: fix wording in napi_async_init (Tobias Nießen)
[#&#8203;49180](https://github.com/nodejs/node/pull/49180)
- \[[`55171d88a0`](https://github.com/nodejs/node/commit/55171d88a0)]
- **doc**: fix `Type` notation in webstreams (Deokjin Kim)
[#&#8203;49121](https://github.com/nodejs/node/pull/49121)
- \[[`79c0497398`](https://github.com/nodejs/node/commit/79c0497398)]
- **doc**: make the NODE_VERSION_IS_RELEASE revert clear (Rafael
Gonzaga) [#&#8203;49114](https://github.com/nodejs/node/pull/49114)
- \[[`7ee26fb8df`](https://github.com/nodejs/node/commit/7ee26fb8df)]
- **doc**: update with latest security release (Rafael Gonzaga)
[#&#8203;49085](https://github.com/nodejs/node/pull/49085)
- \[[`9ce73964be`](https://github.com/nodejs/node/commit/9ce73964be)]
- **doc**: add description for `--port` flag of `node inspect` (Michael
Bianco) [#&#8203;48785](https://github.com/nodejs/node/pull/48785)
- \[[`633b8cd181`](https://github.com/nodejs/node/commit/633b8cd181)]
- **doc**: add missing period (Rich Trott)
[#&#8203;49094](https://github.com/nodejs/node/pull/49094)
- \[[`6daa9ec2a4`](https://github.com/nodejs/node/commit/6daa9ec2a4)]
- **doc**: add ESM examples in http.md (btea)
[#&#8203;47763](https://github.com/nodejs/node/pull/47763)
- \[[`12b83e81b9`](https://github.com/nodejs/node/commit/12b83e81b9)]
- **doc**: detailed description of keystrokes Ctrl-Y and Meta-Y (Ray)
[#&#8203;43529](https://github.com/nodejs/node/pull/43529)
- \[[`ead654f976`](https://github.com/nodejs/node/commit/ead654f976)]
- **doc**: clarify use of process.env in worker threads on Windows
(Daeyeon Jeong)
[#&#8203;49008](https://github.com/nodejs/node/pull/49008)
- \[[`4047947838`](https://github.com/nodejs/node/commit/4047947838)]
- **doc**: remove v14 mention (Rafael Gonzaga)
[#&#8203;49005](https://github.com/nodejs/node/pull/49005)
- \[[`833c643eb4`](https://github.com/nodejs/node/commit/833c643eb4)]
- **doc**: run license-builder (github-actions\[bot])
[#&#8203;48898](https://github.com/nodejs/node/pull/48898)
- \[[`cb43717c97`](https://github.com/nodejs/node/commit/cb43717c97)]
- **doc**: add ver of 18.x where Node-api 9 is supported (Michael
Dawson) [#&#8203;48876](https://github.com/nodejs/node/pull/48876)
- \[[`a8d5c16a2a`](https://github.com/nodejs/node/commit/a8d5c16a2a)]
- **doc**: include experimental features assessment (Rafael Gonzaga)
[#&#8203;48824](https://github.com/nodejs/node/pull/48824)
- \[[`e6d8735e2b`](https://github.com/nodejs/node/commit/e6d8735e2b)]
- **doc**: add new TSC members (Michael Dawson)
[#&#8203;48841](https://github.com/nodejs/node/pull/48841)
- \[[`d4fe00d0c7`](https://github.com/nodejs/node/commit/d4fe00d0c7)]
- **doc**: refactor node-api support matrix (Michael Dawson)
[#&#8203;48774](https://github.com/nodejs/node/pull/48774)
- \[[`629132d84c`](https://github.com/nodejs/node/commit/629132d84c)]
- **doc**: declare `path` on example of `async_hooks.executionAsyncId()`
(Deokjin Kim)
[#&#8203;48556](https://github.com/nodejs/node/pull/48556)
- \[[`dfd368ac9f`](https://github.com/nodejs/node/commit/dfd368ac9f)]
- **doc**: remove the . in the end to reduce confusing (Jason)
[#&#8203;48719](https://github.com/nodejs/node/pull/48719)
- \[[`74d8f96413`](https://github.com/nodejs/node/commit/74d8f96413)]
- **doc**: nodejs-social over nodejs/tweet (Rafael Gonzaga)
[#&#8203;48769](https://github.com/nodejs/node/pull/48769)
- \[[`73a7e00d06`](https://github.com/nodejs/node/commit/73a7e00d06)]
- **doc**: add missing history info for `import.meta.resolve` (Antoine
du Hamel) [#&#8203;49700](https://github.com/nodejs/node/pull/49700)
- \[[`c20fdb4e52`](https://github.com/nodejs/node/commit/c20fdb4e52)]
- **doc**: edit `import.meta.resolve` documentation (Antoine du Hamel)
[#&#8203;49247](https://github.com/nodejs/node/pull/49247)
- \[[`1ac389ecef`](https://github.com/nodejs/node/commit/1ac389ecef)]
- **doc**: update module hooks docs (Geoffrey Booth)
[#&#8203;49265](https://github.com/nodejs/node/pull/49265)
- \[[`ed2d46f4cc`](https://github.com/nodejs/node/commit/ed2d46f4cc)]
- **doc**: move and rename loaders section (Geoffrey Booth)
[#&#8203;49261](https://github.com/nodejs/node/pull/49261)
- \[[`258df0e72d`](https://github.com/nodejs/node/commit/258df0e72d)]
- **doc**: add signature for `module.register` (Geoffrey Booth)
[#&#8203;49251](https://github.com/nodejs/node/pull/49251)
- \[[`58eaf3f6ae`](https://github.com/nodejs/node/commit/58eaf3f6ae)]
- **doc**: caveat unavailability of `import.meta.resolve` in custom
loaders (Jacob Smith)
[#&#8203;49242](https://github.com/nodejs/node/pull/49242)
- \[[`2fef28b2b9`](https://github.com/nodejs/node/commit/2fef28b2b9)]
- **doc**: fix name of the flag in `initialize()` docs (Antoine du
Hamel) [#&#8203;49158](https://github.com/nodejs/node/pull/49158)
- \[[`15280fb42c`](https://github.com/nodejs/node/commit/15280fb42c)]
- **doc**: add steps about signing the binary in single-executable docs
(Darshan Sen)
[#&#8203;46764](https://github.com/nodejs/node/pull/46764)
- \[[`e374ba296c`](https://github.com/nodejs/node/commit/e374ba296c)]
- **doc**: add "type" to test runner event details (Phil Nash)
[#&#8203;49014](https://github.com/nodejs/node/pull/49014)
- \[[`ec0a6c1f1b`](https://github.com/nodejs/node/commit/ec0a6c1f1b)]
- **doc**: add new reporter events to custom reporter examples (Chemi
Atlow) [#&#8203;48903](https://github.com/nodejs/node/pull/48903)
- \[[`e8a32fb49b`](https://github.com/nodejs/node/commit/e8a32fb49b)]
- **doc**: change duration to duration_ms on test documentation
(Ardi_Nugraha)
[#&#8203;48892](https://github.com/nodejs/node/pull/48892)
- \[[`2b30c8b8a3`](https://github.com/nodejs/node/commit/2b30c8b8a3)]
- **doc**: fix `globalPreload` example (bmacnaughton)
[#&#8203;50300](https://github.com/nodejs/node/pull/50300)
- \[[`8a57182769`](https://github.com/nodejs/node/commit/8a57182769)]
- **doc,test**: extend the list of platforms supported by
single-executables (Darshan Sen)
[#&#8203;47026](https://github.com/nodejs/node/pull/47026)
- \[[`92734d4480`](https://github.com/nodejs/node/commit/92734d4480)]
- **esm**: use import attributes instead of import assertions (Antoine
du Hamel) [#&#8203;50140](https://github.com/nodejs/node/pull/50140)
- \[[`c3c945e654`](https://github.com/nodejs/node/commit/c3c945e654)]
- **esm**: bypass CommonJS loader under --default-type (Geoffrey Booth)
[#&#8203;49986](https://github.com/nodejs/node/pull/49986)
- \[[`fe691984b2`](https://github.com/nodejs/node/commit/fe691984b2)]
- **esm**: unflag extensionless javascript and wasm in module scope
(Geoffrey Booth)
[#&#8203;49974](https://github.com/nodejs/node/pull/49974)
- \[[`56bd9a88ac`](https://github.com/nodejs/node/commit/56bd9a88ac)]
- **esm**: --experimental-default-type flag to flip module defaults
(Geoffrey Booth)
[#&#8203;49869](https://github.com/nodejs/node/pull/49869)
- \[[`72644d62e7`](https://github.com/nodejs/node/commit/72644d62e7)]
- **esm**: improve JSDoc annotation of internal functions (Antoine du
Hamel) [#&#8203;49959](https://github.com/nodejs/node/pull/49959)
- \[[`957725f601`](https://github.com/nodejs/node/commit/957725f601)]
- **esm**: require braces for modules code (Geoffrey Booth)
[#&#8203;49657](https://github.com/nodejs/node/pull/49657)
- \[[`c12685f82d`](https://github.com/nodejs/node/commit/c12685f82d)]
- **esm**: fix cache collision on JSON files using file: URL (Antoine du
Hamel) [#&#8203;49887](https://github.com/nodejs/node/pull/49887)
- \[[`ed8dd33493`](https://github.com/nodejs/node/commit/ed8dd33493)]
- **esm**: identify parent importing a url with invalid host (Jacob
Smith) [#&#8203;49736](https://github.com/nodejs/node/pull/49736)
- \[[`46d730ab75`](https://github.com/nodejs/node/commit/46d730ab75)]
- **esm**: fix return type of `import.meta.resolve` (Antoine du Hamel)
[#&#8203;49698](https://github.com/nodejs/node/pull/49698)
- \[[`12cb700478`](https://github.com/nodejs/node/commit/12cb700478)]
- **esm**: update loaders warning (Geoffrey Booth)
[#&#8203;49633](https://github.com/nodejs/node/pull/49633)
- \[[`47193a347e`](https://github.com/nodejs/node/commit/47193a347e)]
- **esm**: fix support for `URL` instances in `register` (Antoine du
Hamel) [#&#8203;49655](https://github.com/nodejs/node/pull/49655)
- \[[`51ced0f1a1`](https://github.com/nodejs/node/commit/51ced0f1a1)]
- **esm**: clarify ERR_REQUIRE_ESM errors (Daniel Compton)
[#&#8203;49521](https://github.com/nodejs/node/pull/49521)
- \[[`4be5612bae`](https://github.com/nodejs/node/commit/4be5612bae)]
- **esm**: remove return value for `Module.register` (Antoine du Hamel)
[#&#8203;49529](https://github.com/nodejs/node/pull/49529)
- \[[`0875867e27`](https://github.com/nodejs/node/commit/0875867e27)]
- **esm**: refactor test-esm-loader-resolve-type (Geoffrey Booth)
[#&#8203;49493](https://github.com/nodejs/node/pull/49493)
- \[[`9b7c9d93e9`](https://github.com/nodejs/node/commit/9b7c9d93e9)]
- **esm**: refactor test-esm-named-exports (Geoffrey Booth)
[#&#8203;49493](https://github.com/nodejs/node/pull/49493)
- \[[`d1f5514917`](https://github.com/nodejs/node/commit/d1f5514917)]
- **esm**: refactor mocking test (Geoffrey Booth)
[#&#8203;49465](https://github.com/nodejs/node/pull/49465)
- \[[`01ca6d277d`](https://github.com/nodejs/node/commit/01ca6d277d)]
- **esm**: fix `globalPreload` warning (Antoine du Hamel)
[#&#8203;49069](https://github.com/nodejs/node/pull/49069)
- \[[`c1a84398b4`](https://github.com/nodejs/node/commit/c1a84398b4)]
- **esm**: unflag import.meta.resolve (Guy Bedford)
[#&#8203;49028](https://github.com/nodejs/node/pull/49028)
- \[[`ef43f084e9`](https://github.com/nodejs/node/commit/ef43f084e9)]
- **esm**: import.meta.resolve exact module not found errors should
return (Guy Bedford)
[#&#8203;49038](https://github.com/nodejs/node/pull/49038)
- \[[`385f24c9cc`](https://github.com/nodejs/node/commit/385f24c9cc)]
- **esm**: protect `ERR_UNSUPPORTED_DIR_IMPORT` against prototype
pollution (Antoine du Hamel)
[#&#8203;49060](https://github.com/nodejs/node/pull/49060)
- \[[`10e7c3a376`](https://github.com/nodejs/node/commit/10e7c3a376)]
- **esm**: add `initialize` hook, integrate with `register` (Izaak
Schroeder) [#&#8203;48842](https://github.com/nodejs/node/pull/48842)
- \[[`f96b610268`](https://github.com/nodejs/node/commit/f96b610268)]
- **esm**: fix typo `parentUrl` -> `parentURL` (Antoine du Hamel)
[#&#8203;48999](https://github.com/nodejs/node/pull/48999)
- \[[`03c1b5e647`](https://github.com/nodejs/node/commit/03c1b5e647)]
- **esm**: unflag `Module.register` and allow nested loader `import()`
(Izaak Schroeder)
[#&#8203;48559](https://github.com/nodejs/node/pull/48559)
- \[[`63aa5d7270`](https://github.com/nodejs/node/commit/63aa5d7270)]
- **esm**: add back `globalPreload` tests and fix failing ones (Antoine
du Hamel) [#&#8203;48779](https://github.com/nodejs/node/pull/48779)
- \[[`1c7be606f1`](https://github.com/nodejs/node/commit/1c7be606f1)]
- **esm**: remove support for arrays in `import` internal method
(Antoine du Hamel)
[#&#8203;48296](https://github.com/nodejs/node/pull/48296)
- \[[`655111fa00`](https://github.com/nodejs/node/commit/655111fa00)]
- **esm**: handle `globalPreload` hook returning a nullish value
(Antoine du Hamel)
[#&#8203;48249](https://github.com/nodejs/node/pull/48249)
- \[[`9938a8bf13`](https://github.com/nodejs/node/commit/9938a8bf13)]
- **esm**: handle more error types thrown from the loader thread
(Antoine du Hamel)
[#&#8203;48247](https://github.com/nodejs/node/pull/48247)
- \[[`8cab32a5d1`](https://github.com/nodejs/node/commit/8cab32a5d1)]
- **esm**: do not use `'beforeExit'` on the main thread (Antoine du
Hamel) [#&#8203;47964](https://github.com/nodejs/node/pull/47964)
- \[[`b61efcce95`](https://github.com/nodejs/node/commit/b61efcce95)]
- **esm**: rename `URLCanParse` to be consistent (Antoine du Hamel)
[#&#8203;47668](https://github.com/nodejs/node/pull/47668)
- \[[`ca20f5931d`](https://github.com/nodejs/node/commit/ca20f5931d)]
- **esm**: remove support for deprecated hooks (Antoine du Hamel)
[#&#8203;47580](https://github.com/nodejs/node/pull/47580)
- \[[`5de37a1e37`](https://github.com/nodejs/node/commit/5de37a1e37)]
- **esm**: initialize `import.meta` on eval (Antoine du Hamel)
[#&#8203;47551](https://github.com/nodejs/node/pull/47551)
- \[[`39fbce7313`](https://github.com/nodejs/node/commit/39fbce7313)]
- **esm**: propagate `process.exit` from the loader thread to the main
thread (Antoine du Hamel)
[#&#8203;47548](https://github.com/nodejs/node/pull/47548)
- \[[`2a528b76e6`](https://github.com/nodejs/node/commit/2a528b76e6)]
- **esm**: avoid try/catch when validating urls (Yagiz Nizipli)
[#&#8203;47541](https://github.com/nodejs/node/pull/47541)
- \[[`bac9b1758f`](https://github.com/nodejs/node/commit/bac9b1758f)]
- **esm**: move hook execution to separate thread (Jacob Smith)
[#&#8203;44710](https://github.com/nodejs/node/pull/44710)
- \[[`dfa444477a`](https://github.com/nodejs/node/commit/dfa444477a)]
- **esm**: skip file: URL conversion to path when possible (Antoine du
Hamel) [#&#8203;46305](https://github.com/nodejs/node/pull/46305)
- \[[`45de8d1bd7`](https://github.com/nodejs/node/commit/45de8d1bd7)]
- **esm**: allow resolve to return import assertions (Geoffrey Booth)
[#&#8203;46153](https://github.com/nodejs/node/pull/46153)
- \[[`5ffc90a06b`](https://github.com/nodejs/node/commit/5ffc90a06b)]
- **esm**: move hooks handling into separate class (Geoffrey Booth)
[#&#8203;45869](https://github.com/nodejs/node/pull/45869)
- \[[`490b598dbf`](https://github.com/nodejs/node/commit/490b598dbf)]
- **esm**: leverage loaders when resolving subsequent loaders (Maël
Nison) [#&#8203;43772](https://github.com/nodejs/node/pull/43772)
- \[[`acd987287c`](https://github.com/nodejs/node/commit/acd987287c)]
- **events**: remove weak listener for event target (Raz Luvaton)
[#&#8203;48952](https://github.com/nodejs/node/pull/48952)
- \[[`69b7f91a92`](https://github.com/nodejs/node/commit/69b7f91a92)]
- **fs**: remove redundant code in readableWebStream() (Deokjin Kim)
[#&#8203;49298](https://github.com/nodejs/node/pull/49298)
- \[[`ae8bb162b4`](https://github.com/nodejs/node/commit/ae8bb162b4)]
- **fs**: remove redundant `nullCheck` (Livia Medeiros)
[#&#8203;48826](https://github.com/nodejs/node/pull/48826)
- \[[`48c25b154b`](https://github.com/nodejs/node/commit/48c25b154b)]
- **fs**: make `mkdtemp` accept buffers and URL (LiviaMedeiros)
[#&#8203;48828](https://github.com/nodejs/node/pull/48828)
- \[[`edf46c1b59`](https://github.com/nodejs/node/commit/edf46c1b59)]
- **fs**: move fs_use_promises_symbol to per-isolate symbols (Joyee
Cheung) [#&#8203;47768](https://github.com/nodejs/node/pull/47768)
- \[[`fe41d22afc`](https://github.com/nodejs/node/commit/fe41d22afc)]
- **fs**: use kResistStopPropagation (Chemi Atlow)
[#&#8203;48521](https://github.com/nodejs/node/pull/48521)
- \[[`7c758f60ab`](https://github.com/nodejs/node/commit/7c758f60ab)]
- **fs**: fix readdir recursive sync & callback (Ethan Arrowood)
[#&#8203;48698](https://github.com/nodejs/node/pull/48698)
- \[[`8874b2e11d`](https://github.com/nodejs/node/commit/8874b2e11d)]
- **http**: start connections checking interval on listen (Paolo
Insogna) [#&#8203;48611](https://github.com/nodejs/node/pull/48611)
- \[[`29697229b6`](https://github.com/nodejs/node/commit/29697229b6)]
- **https**: fix connection checking interval not clearing on server
close (Nitzan Uziely)
[#&#8203;48383](https://github.com/nodejs/node/pull/48383)
- \[[`981aa7866d`](https://github.com/nodejs/node/commit/981aa7866d)]
- **lib**: fix MIME overmatch in data URLs (André Alves)
[#&#8203;49104](https://github.com/nodejs/node/pull/49104)
- \[[`fe26f8a860`](https://github.com/nodejs/node/commit/fe26f8a860)]
- **lib**: merge cjs and esm package json reader caches (Yagiz Nizipli)
[#&#8203;48477](https://github.com/nodejs/node/pull/48477)
- \[[`17246be158`](https://github.com/nodejs/node/commit/17246be158)]
- **(SEMVER-MINOR)** **lib**: add api to detect whether source-maps are
enabled (翠 / green)
[#&#8203;46391](https://github.com/nodejs/node/pull/46391)
- \[[`2e9f7284a1`](https://github.com/nodejs/node/commit/2e9f7284a1)]
- **(SEMVER-MINOR)** **lib**: add tracing channel to diagnostics_channel
(Stephen Belanger)
[#&#8203;44943](https://github.com/nodejs/node/pull/44943)
- \[[`04dad9c2f6`](https://github.com/nodejs/node/commit/04dad9c2f6)]
- **lib**: fix BroadcastChannel initialization location (Shelley Vohr)
[#&#8203;46864](https://github.com/nodejs/node/pull/46864)
- \[[`671d2c0067`](https://github.com/nodejs/node/commit/671d2c0067)]
- **lib**: fix DOMException property descriptors after being lazy loaded
(Filip Skokan)
[#&#8203;46799](https://github.com/nodejs/node/pull/46799)
- \[[`9a4b57d6d4`](https://github.com/nodejs/node/commit/9a4b57d6d4)]
- **lib**: improve esm resolve performance (Yagiz Nizipli)
[#&#8203;46652](https://github.com/nodejs/node/pull/46652)
- \[[`c6b2f56723`](https://github.com/nodejs/node/commit/c6b2f56723)]
- **lib**: lazy-load deps in modules/run_main.js (Joyee Cheung)
[#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`baa280a4f6`](https://github.com/nodejs/node/commit/baa280a4f6)]
- **lib**: lazy-load deps in source_map_cache.js (Joyee Cheung)
[#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`00bdb72b6e`](https://github.com/nodejs/node/commit/00bdb72b6e)]
- **lib**: add getLazy() method to internal/util (Joyee Cheung)
[#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`b77a6b2376`](https://github.com/nodejs/node/commit/b77a6b2376)]
- **loader**: use default loader as cascaded loader in the in loader
worker (Joyee Cheung)
[#&#8203;47620](https://github.com/nodejs/node/pull/47620)
- \[[`7778e190b0`](https://github.com/nodejs/node/commit/7778e190b0)]
- **meta**: move Trott to TSC regular member (Rich Trott)
[#&#8203;50297](https://github.com/nodejs/node/pull/50297)
- \[[`5b9575dd30`](https://github.com/nodejs/node/commit/5b9575dd30)]
- **meta**: ping TSC for offboarding (Tobias Nießen)
[#&#8203;50147](https://github.com/nodejs/node/pull/50147)
- \[[`d24c3a0692`](https://github.com/nodejs/node/commit/d24c3a0692)]
- **meta**: update website team with new name (Rich Trott)
[#&#8203;49883](https://github.com/nodejs/node/pull/49883)
- \[[`332d2aedb4`](https://github.com/nodejs/node/commit/332d2aedb4)]
- **meta**: fix linter error (Antoine du Hamel)
[#&#8203;49755](https://github.com/nodejs/node/pull/49755)
- \[[`dc70c444f4`](https://github.com/nodejs/node/commit/dc70c444f4)]
- **meta**: add primordials strategic initiative (Benjamin Gruenbaum)
[#&#8203;49706](https://github.com/nodejs/node/pull/49706)
- \[[`213a9f8a4b`](https://github.com/nodejs/node/commit/213a9f8a4b)]
- **meta**: bump rtCamp/action-slack-notify from 2.2.0 to 2.2.1
(dependabot\[bot])
[#&#8203;49437](https://github.com/nodejs/node/pull/49437)
- \[[`2827779faa`](https://github.com/nodejs/node/commit/2827779faa)]
- **meta**: remove modules team from CODEOWNERS (Benjamin Gruenbaum)
[#&#8203;49412](https://github.com/nodejs/node/pull/49412)
- \[[`5d6daf0d01`](https://github.com/nodejs/node/commit/5d6daf0d01)]
- **meta**: add test/reporters to codeowners (Chemi Atlow)
[#&#8203;49186](https://github.com/nodejs/node/pull/49186)
- \[[`dee7dc5d54`](https://github.com/nodejs/node/commit/dee7dc5d54)]
- **meta**: bump actions/upload-artifact from 3.1.2 to 3.1.3
(dependabot\[bot])
[#&#8203;50000](https://github.com/nodejs/node/pull/50000)
- \[[`98294fdeee`](https://github.com/nodejs/node/commit/98294fdeee)]
- **meta**: bump actions/cache from 3.3.1 to 3.3.2 (dependabot\[bot])
[#&#8203;50003](https://github.com/nodejs/node/pull/50003)
- \[[`79270327d0`](https://github.com/nodejs/node/commit/79270327d0)]
- **meta**: bump github/codeql-action from 2.21.5 to 2.21.9
(dependabot\[bot])
[#&#8203;50002](https://github.com/nodejs/node/pull/50002)
- \[[`6591a03c89`](https://github.com/nodejs/node/commit/6591a03c89)]
- **meta**: bump github/codeql-action from 2.21.2 to 2.21.5
(dependabot\[bot])
[#&#8203;49438](https://github.com/nodejs/node/pull/49438)
- \[[`3a107f80bc`](https://github.com/nodejs/node/commit/3a107f80bc)]
- **meta**: bump actions/checkout from 3.6.0 to 4.1.0 (dependabot\[bot])
[#&#8203;50001](https://github.com/nodejs/node/pull/50001)
- \[[`26c5c3c4a2`](https://github.com/nodejs/node/commit/26c5c3c4a2)]
- **meta**: bump actions/checkout from 3.5.3 to 3.6.0 (dependabot\[bot])
[#&#8203;49436](https://github.com/nodejs/node/pull/49436)
- \[[`0fc0b88d97`](https://github.com/nodejs/node/commit/0fc0b88d97)]
- **meta**: bump step-security/harden-runner from 2.5.0 to 2.5.1
(dependabot\[bot])
[#&#8203;49435](https://github.com/nodejs/node/pull/49435)
- \[[`dad5785d5d`](https://github.com/nodejs/node/commit/dad5785d5d)]
- **meta**: bump actions/setup-node from 3.7.0 to 3.8.1
(dependabot\[bot])
[#&#8203;49434](https://github.com/nodejs/node/pull/49434)
- \[[`155a275acb`](https://github.com/nodejs/node/commit/155a275acb)]
- **meta**: move one or more collaborators to emeritus (Node.js GitHub
Bot) [#&#8203;49264](https://github.com/nodejs/node/pull/49264)
- \[[`bd17f0b992`](https://github.com/nodejs/node/commit/bd17f0b992)]
- **meta**: mention nodejs/tsc when changing GH templates (Rafael
Gonzaga) [#&#8203;49189](https://github.com/nodejs/node/pull/49189)
- \[[`f6e68a0238`](https://github.com/nodejs/node/commit/f6e68a0238)]
- **meta**: bump github/codeql-action from 2.20.1 to 2.21.2
(dependabot\[bot])
[#&#8203;48986](https://github.com/nodejs/node/pull/48986)
- \[[`5c352eeecb`](https://github.com/nodejs/node/commit/5c352eeecb)]
- **meta**: bump step-security/harden-runner from 2.4.1 to 2.5.0
(dependabot\[bot])
[#&#8203;48985](https://github.com/nodejs/node/pull/48985)
- \[[`42ac5a6e5f`](https://github.com/nodejs/node/commit/42ac5a6e5f)]
- **meta**: bump actions/setup-node from 3.6.0 to 3.7.0
(dependabot\[bot])
[#&#8203;48984](https://github.com/nodejs/node/pull/48984)
- \[[`b0d769fe7c`](https://github.com/nodejs/node/commit/b0d769fe7c)]
- **meta**: bump actions/setup-python from 4.6.1 to 4.7.0
(dependabot\[bot])
[#&#8203;48983](https://github.com/nodejs/node/pull/48983)
- \[[`f62b24276c`](https://github.com/nodejs/node/commit/f62b24276c)]
- **meta**: add mailmap entry for atlowChemi (Chemi Atlow)
[#&#8203;48810](https://github.com/nodejs/node/pull/48810)
- \[[`8c55f317a3`](https://github.com/nodejs/node/commit/8c55f317a3)]
- **module**: move helpers out of cjs loader (Geoffrey Booth)
[#&#8203;49912](https://github.com/nodejs/node/pull/49912)
- \[[`14e148ee6c`](https://github.com/nodejs/node/commit/14e148ee6c)]
- **module**: ensure successful import returns the same result (Antoine
du Hamel) [#&#8203;46662](https://github.com/nodejs/node/pull/46662)
- \[[`65dfe85f03`](https://github.com/nodejs/node/commit/65dfe85f03)]
- **module**: implement `register` utility (João Lenon)
[#&#8203;46826](https://github.com/nodejs/node/pull/46826)
- \[[`6f0458d0a6`](https://github.com/nodejs/node/commit/6f0458d0a6)]
- **module**: refactor to use `normalizeRequirableId` in the CJS module
loader (Darshan Sen)
[#&#8203;47896](https://github.com/nodejs/node/pull/47896)
- \[[`89ed24b94a`](https://github.com/nodejs/node/commit/89ed24b94a)]
- **module**: do less CJS module loader initialization at run time
(Joyee Cheung)
[#&#8203;47194](https://github.com/nodejs/node/pull/47194)
- \[[`939c8764b8`](https://github.com/nodejs/node/commit/939c8764b8)]
- **module**: move callbacks and conditions into modules/esm/utils.js
(Joyee Cheung)
[#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`a3b0f4cf55`](https://github.com/nodejs/node/commit/a3b0f4cf55)]
- **module**: move modules/cjs/helpers.js to modules/helpers.js (Joyee
Cheung) [#&#8203;45849](https://github.com/nodejs/node/pull/45849)
- \[[`97579895f2`](https://github.com/nodejs/node/commit/97579895f2)]
- **module, esm**: jsdoc for modules files (Geoffrey Booth)
[#&#8203;49523](https://github.com/nodejs/node/pull/49523)
- \[[`daca87bbef`](https://github.com/nodejs/node/commit/daca87bbef)]
- **net**: use asserts in JS Socket Stream to catch races in future (Tim
Perry) [#&#8203;49400](https://github.com/nodejs/node/pull/49400)
- \[[`03063bd022`](https://github.com/nodejs/node/commit/03063bd022)]
- **net**: fix crash due to simultaneous close/shutdown on JS Stream
Sockets (Tim Perry)
[#&#8203;49400](https://github.com/nodejs/node/pull/49400)
- \[[`67fe7d8822`](https://github.com/nodejs/node/commit/67fe7d8822)]
- **net**: fix setting of value in
'setDefaultAutoSelectFamilyAttemptTimeout' (Deokjin Kim)
[#&#8203;47012](https://github.com/nodejs/node/pull/47012)
- \[[`f449b222fd`](https://github.com/nodejs/node/commit/f449b222fd)]
- **node-api**: update headers for better wasm support (Toyo Li)
[#&#8203;49037](https://github.com/nodejs/node/pull/49037)
- \[[`5148f030b8`](https://github.com/nodejs/node/commit/5148f030b8)]
- **node-api**: run finalizers directly from GC (Vladimir Morozov)
[#&#8203;42651](https://github.com/nodejs/node/pull/42651)
- \[[`edef4fa668`](https://github.com/nodejs/node/commit/edef4fa668)]
- **node-api**: enable uncaught exceptions policy by default (Chengzhong
Wu) [#&#8203;49313](https://github.com/nodejs/node/pull/49313)
- \[[`48a1b9336b`](https://github.com/nodejs/node/commit/48a1b9336b)]
- **node-api**: fix compiler warning in node_api.h (Michael Graeb)
[#&#8203;49103](https://github.com/nodejs/node/pull/49103)
- \[[`57966318fe`](https://github.com/nodejs/node/commit/57966318fe)]
- **node-api**: avoid macro redefinition (Tobias Nießen)
[#&#8203;48879](https://github.com/nodejs/node/pull/48879)
- \[[`d4f26f4651`](https://github.com/nodejs/node/commit/d4f26f4651)]
- **policy**: fix path to URL conversion (Antoine du Hamel)
[#&#8203;49133](https://github.com/nodejs/node/pull/49133)
- \[[`a625f22acb`](https://github.com/nodejs/node/commit/a625f22acb)]
- **readline**: add paste bracket mode (Jakub Jankiewicz)
[#&#8203;47150](https://github.com/nodejs/node/pull/47150)
- \[[`bbafd42d75`](https://github.com/nodejs/node/commit/bbafd42d75)]
- **repl**: display dynamic import variant in static import error
messages (Hemanth HM)
[#&#8203;48129](https://github.com/nodejs/node/pull/48129)
- \[[`b8634eeb16`](https://github.com/nodejs/node/commit/b8634eeb16)]
- **sea**: allow requiring core modules with the "node:" prefix (Darshan
Sen) [#&#8203;47779](https://github.com/nodejs/node/pull/47779)
- \[[`066d9d4492`](https://github.com/nodejs/node/commit/066d9d4492)]
- **src**: remove unused function `GetName()` in node_perf (Jungku Lee)
[#&#8203;49244](https://github.com/nodejs/node/pull/49244)
- \[[`158c91a38a`](https://github.com/nodejs/node/commit/158c91a38a)]
- **src**: use ARES_SUCCESS instead of 0 (Jungku Lee)
[#&#8203;49048](https://github.com/nodejs/node/pull/49048)
- \[[`8c33731ac6`](https://github.com/nodejs/node/commit/8c33731ac6)]
- **src**: add a condition if the argument of `DomainToUnicode` is empty
(Jungku Lee)
[#&#8203;49097](https://github.com/nodejs/node/pull/49097)
- \[[`67dba57d77`](https://github.com/nodejs/node/commit/67dba57d77)]
- **src**: use ARES_SUCCESS instead of 0 (Hyunjin Kim)
[#&#8203;48834](https://github.com/nodejs/node/pull/48834)
- \[[`97d87495c7`](https://github.com/nodejs/node/commit/97d87495c7)]
- **src**: remove unnecessary temporary creation (Jason)
[#&#8203;48734](https://github.com/nodejs/node/pull/48734)
- \[[`f5384c3262`](https://github.com/nodejs/node/commit/f5384c3262)]
- **src**: fix nullptr access on realm (Jan Olaf Krems)
[#&#8203;48802](https://github.com/nodejs/node/pull/48802)
- \[[`358273d77f`](https://github.com/nodejs/node/commit/358273d77f)]
- **src**: remove OnScopeLeaveImpl's move assignment overload (Jason)
[#&#8203;48732](https://github.com/nodejs/node/pull/48732)
- \[[`cc7bf1f641`](https://github.com/nodejs/node/commit/cc7bf1f641)]
- **(SEMVER-MINOR)** **src**: add cjs_module_lexer_version
base64\_version (Jithil P Ponnan)
[#&#8203;45629](https://github.com/nodejs/node/pull/45629)
- \[[`0a950c3752`](https://github.com/nodejs/node/commit/0a950c3752)]
- **src**: add missing to_ascii method in dns queries (Daniel Lemire)
[#&#8203;48354](https://github.com/nodejs/node/pull/48354)
- \[[`3552afb904`](https://github.com/nodejs/node/commit/3552afb904)]
- **src**: fix duplication of externalized builtin code (Keyhan Vakil)
[#&#8203;47079](https://github.com/nodejs/node/pull/47079)
- \[[`66e4ba5062`](https://github.com/nodejs/node/commit/66e4ba5062)]
- **src**: fix AliasedBuffer memory attribution in heap snapshots (Joyee
Cheung) [#&#8203;46817](https://github.com/nodejs/node/pull/46817)
- \[[`946f19b5e3`](https://github.com/nodejs/node/commit/946f19b5e3)]
- **src**: move AliasedBuffer implementation to -inl.h (Joyee Cheung)
[#&#8203;46817](https://github.com/nodejs/node/pull/46817)
- \[[`d35f8702c9`](https://github.com/nodejs/node/commit/d35f8702c9)]
- **src**: bootstrap prepare stack trace callback in shadow realm
(Chengzhong Wu)
[#&#8203;47107](https://github.com/nodejs/node/pull/47107)
- \[[`3551a19205`](https://github.com/nodejs/node/commit/3551a19205)]
- **src**: make BuiltinLoader threadsafe and non-global (Anna
Henningsen) [#&#8203;45942](https://github.com/nodejs/node/pull/45942)
- \[[`92311a0801`](https://github.com/nodejs/node/commit/92311a0801)]
- **src**: define per-isolate internal bindings registration callback
(Chengzhong Wu)
[#&#8203;45547](https://github.com/nodejs/node/pull/45547)
- \[[`629fc774ca`](https://github.com/nodejs/node/commit/629fc774ca)]
- **src**: use an array for faster binding data lookup (Joyee Cheung)
[#&#8203;46620](https://github.com/nodejs/node/pull/46620)
- \[[`62e2e590fc`](https://github.com/nodejs/node/commit/62e2e590fc)]
- **src**: fix TLSWrap lifetime bug in ALPN callback (Ben Noordhuis)
[#&#8203;49635](https://github.com/nodejs/node/pull/49635)
- \[[`fae60c5841`](https://github.com/nodejs/node/commit/fae60c5841)]
- **stream**: use bitmap in readable state (Benjamin Gruenbaum)
[#&#8203;49745](https://github.com/nodejs/node/pull/49745)
- \[[`ee4fc7d78c`](https://github.com/nodejs/node/commit/ee4fc7d78c)]
- **stream**: use Buffer.from when constructor is a Buffer (Matthew
Aitken) [#&#8203;49250](https://github.com/nodejs/node/pull/49250)
- \[[`651e4504ce`](https://github.com/nodejs/node/commit/651e4504ce)]
- **stream**: add `highWaterMark` for the map operator (Raz Luvaton)
[#&#8203;49249](https://github.com/nodejs/node/pull/49249)
- \[[`d585d13127`](https://github.com/nodejs/node/commit/d585d13127)]
- **stream**: improve WebStreams performance (Raz Luvaton)
[#&#8203;49089](https://github.com/nodejs/node/pull/49089)
- \[[`7f39f8e805`](https://github.com/nodejs/node/commit/7f39f8e805)]
- **test**: replace forEach with for..of in test-http-perf_hooks.js
(Niya Shiyas)
[#&#8203;49818](https://github.com/nodejs/node/pull/49818)
- \[[`2f0ffde842`](https://github.com/nodejs/node/commit/2f0ffde842)]
- **test**: replace forEach with for..of in test-net-isipv4.js (Niya
Shiyas) [#&#8203;49822](https://github.com/nodejs/node/pull/49822)
- \[[`bbd302b5ab`](https://github.com/nodejs/node/commit/bbd302b5ab)]
- **test**: replace forEach with for..of in test-http2-server (Niya
Shiyas) [#&#8203;49819](https://github.com/nodejs/node/pull/49819)
- \[[`128ca3e213`](https://github.com/nodejs/node/commit/128ca3e213)]
- **test**: replace forEach with for..of in test-http2-client-destroy.js
(Niya Shiyas)
[#&#8203;49820](https://github.com/nodejs/node/pull/49820)
- \[[`a2ca1a605f`](https://github.com/nodejs/node/commit/a2ca1a605f)]
- **test**: print instruction for creating missing snapshot in
assertSnapshot (Raz Luvaton)
[#&#8203;48914](https://github.com/nodejs/node/pull/48914)
- \[[`a0bb30cdca`](https://github.com/nodejs/node/commit/a0bb30cdca)]
- **test**: set `test-watch-mode-inspect` as flaky (Yagiz Nizipli)
[#&#8203;50259](https://github.com/nodejs/node/pull/50259)
- \[[`1047d95698`](https://github.com/nodejs/node/commit/1047d95698)]
- **test**: set `test-emit-after-on-destroyed` as flaky (Yagiz Nizipli)
[#&#8203;50246](https://github.com/nodejs/node/pull/50246)
- \[[`91a3b57962`](https://github.com/nodejs/node/commit/91a3b57962)]
- **test**: set inspector async stack test as flaky (Yagiz Nizipli)
[#&#8203;50244](https://github.com/nodejs/node/pull/50244)
- \[[`b41aa7b82a`](https://github.com/nodejs/node/commit/b41aa7b82a)]
- **test**: set test-worker-nearheaplimit-deadlock flaky
(StefanStojanovic)
[#&#8203;50277](https://github.com/nodejs/node/pull/50277)
- \[[`e81b066fb1`](https://github.com/nodejs/node/commit/e81b066fb1)]
- **test**: set `test-cli-node-options` as flaky (Yagiz Nizipli)
[#&#8203;50296](https://github.com/nodejs/node/pull/50296)
- \[[`0c05c25c4e`](https://github.com/nodejs/node/commit/0c05c25c4e)]
- **test**: set crypto-timing test as flaky (Yagiz Nizipli)
[#&#8203;50232](https://github.com/nodejs/node/pull/50232)
- \[[`83e339dbba`](https://github.com/nodejs/node/commit/83e339dbba)]
- **test**: set `test-structuredclone-*` as flaky (Yagiz Nizipli)
[#&#8203;50261](https://github.com/nodejs/node/pull/50261)
- \[[`866a399488`](https://github.com/nodejs/node/commit/866a399488)]
- **test**: set inspector async hook test as flaky (Yagiz Nizipli)
[#&#8203;50252](https://github.com/nodejs/node/pull/50252)
- \[[`cb0bd2116b`](https://github.com/nodejs/node/commit/cb0bd2116b)]
- **test**: set parallel http server test as flaky (Yagiz Nizipli)
[#&#8203;50227](https://github.com/nodejs/node/pull/50227)
- \[[`54f3d877ae`](https://github.com/nodejs/node/commit/54f3d877ae)]
- **test**: set test-worker-nearheaplimit-deadlock flaky (Stefan
Stojanovic) [#&#8203;50238](https://github.com/nodejs/node/pull/50238)
- \[[`5953a255b6`](https://github.com/nodejs/node/commit/5953a255b6)]
- **test**: set `test-runner-watch-mode` as flaky (Yagiz Nizipli)
[#&#8203;50221](https://github.com/nodejs/node/pull/50221)
- \[[`5820d7e14d`](https://github.com/nodejs/node/commit/5820d7e14d)]
- **test**: deflake test-runner-output (Moshe Atlow)
[#&#8203;49878](https://github.com/nodejs/node/pull/49878)
-   \[[`1d75da43f2`](https://github.com/nodejs/nod

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" in timezone
Europe/Brussels, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/B3Partners/tailormap-viewer).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy44MS4zIiwidXBkYXRlZEluVmVyIjoiMzcuODEuMyIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Mark Prins <1165786+mprins@users.noreply.github.com>
@fudom
Copy link

fudom commented Dec 13, 2023

Any reasons why NPM 10 is suddenly included in Node 18? Expected NPM 9. It was a surprise for the CI that installed Node wildcard major 18.x. I thought Node LTS was tied to a major release including NPM. I never faced this problem before. Is this the first case of upgrading major NPM in the same major Node? A special exception? Any notes for migration 9 to 10? I see NPM 10 was merged into Node 18.19. So the last version with NPM 9 is Node 18.18 where we have to stick to the minor version now or test NPM 10.

npm ERR! notsup Required: {"node":"^18","npm":"^9"}
npm ERR! notsup Actual:   {"node":"v18.19.0","npm":"10.2.3"}

@mariusGundersen
Copy link

Didn't you promise in #825 not to make breaking changes (major update of npm) in minor releases of node? Why is it so important to update npm in node v18?

@Apollon77
Copy link

The main reason in my eyes is that node-gyp had compatibility issues with python 3.12 which means that all node-gyp binary package builds would fail. The fix was in npm 10.2.3 or such ... It seems that the npm team decided to do not do a backporting of inclusion of new node-gyp intp an older npm major version ...

So in fact the issue was really big (and with Node.js 18 being LTS sinsce aprio 2025 thats a long timeframe to risk this. But agreed ... backporting would also have had been an dea, but I assume too late now

@theJC
Copy link

theJC commented Jan 31, 2024

We are very interested in getting 10.3.0 of npm or higher pulled in, due to the fix/revert that restores SIGTERM/SIGINT signal forwarding to child processes - npm/run-script#188

Any chance guidance can be provided as to what Node release we can get an npm version that comes with that has this fix in place? This issue has significant ramifications on the behavior of our services runtime and allowing Node services launched by npm to honor kubernetes shutdown process and the signals it sends to provide time for draining/etc.

@richardlau
Copy link
Member

@theJC I've volunteered to do a Node.js 20 release in February for exactly this reason (to include npm 10.3.0). Our usual policy is that changes should first go out in a current release (i.e. Node.js 21) for two weeks so the exact timing depends on when we get a Node.js 21 release out with that version of npm.

@theJC
Copy link

theJC commented Jan 31, 2024

Sorry @richardlau , I didn't indicate, but we are specifically looking for a node 18 release to contain 10.3.0 or higher (Node18 is the only version our company supports at this time) to address the repair of the SIGNAL propagation breakage on that version line.

@theJC
Copy link

theJC commented Jan 31, 2024

Can anyone provide details on how best to provide input/encouragement or learn about the process that would be required to consider getting npm 10.3.0+ be the version distributed in a soonish/upcoming Node 18.X release?

@bricss
Copy link

bricss commented Jan 31, 2024

It will get into next release of v21, coz it already landed in da main 3 weeks ago, and anyone can pull it up for backport in da v18 in any moment 🤷

@richardlau
Copy link
Member

It won't need a manual backport but will need to go out in a Node.js 21 release first.

@theJC
Copy link

theJC commented Feb 9, 2024

How do we get the next version of Node 21 (21.6.2) to be bumped to having the 10.3.0 or higher version of npm?

@mhdawson
Copy link
Member

mhdawson commented Mar 7, 2024

@lukekarrys this may be a case of changes in npm10 versus 9 causing Node.js problems when upgrading in the 18.x line -npm/cli#7272

@lukekarrys
Copy link
Member Author

Thanks for the ping @mhdawson. I've collected that issue along with a few others (that I don't have links to right now) that are all around network requests and the http agent we use.

As an aside, the original purpose of this issue was tracking inclusion of npm 10 across Node.js versions which has been completed. I'm going to close this now and will track these bugs in npm/cli as they get fixed.

@NewEraCracker
Copy link

Note: npm 10.8.3 can run on Node.js 16.20.2, although it's not officially supported.

Later versions of npm (e.g. 10.9+) have breaking changes in their dependencies and are not compatible with Node.js 16.

Running npm 10.8.3 is a more stable option compared to npm 9, which has known bugs.

To install npm 10.8.3 on Node.js 16.20.2, use the following command, at your own risk: npm i -g npm@10.8.3 --force

My two cents.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests