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

src: add support for externally shared js builtins #44376

Closed
wants to merge 6 commits into from

Conversation

mhdawson
Copy link
Member

Refs: #44000

  • add infra to support externally shared js builtins in
    support of distos that want to externalize deps that
    include JS/WASM instead of native code
  • add support for externalizing
    • cjs_module_lexer/lexer
    • cjs_module_lexer/dist/lexer
    • undici/undici

Signed-off-by: Michael Dawson mdawson@devrus.com

@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/gyp
  • @nodejs/startup

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Aug 24, 2022
@mhdawson mhdawson changed the title src: add support for externally shared js builtins WIP src: add support for externally shared js builtins Aug 24, 2022
@mhdawson
Copy link
Member Author

mhdawson commented Aug 24, 2022

WIP in still needs docs, tests, runing linters as well as addressing some existing test failures.

@mhdawson mhdawson marked this pull request as draft August 24, 2022 15:43
@mhdawson
Copy link
Member Author

In the default configure case (ie no builtins are externalized) all tests pass

When I externalize cjs-module-lexer/lexer.js with:

./configure --shared-builtin-cjs_module_lexer/lexer-path=/home/midawson/newpull/io.js/stuff/deps/cjs-module-lexer/lexer.js

All tests pass except for 1 as follows:

=== release test-code-cache ===                                               
Path: parallel/test-code-cache
node:internal/modules/cjs/loader:797
      throw new ERR_UNKNOWN_BUILTIN_MODULE(request);
      ^

Error [ERR_UNKNOWN_BUILTIN_MODULE]: No such built-in module: node:internal/deps/cjs-module-lexer/lexer
    at new NodeError (node:internal/errors:393:5)
    at Module._load (node:internal/modules/cjs/loader:797:13)
    at Module.require (node:internal/modules/cjs/loader:1021:19)
    at require (node:internal/modules/cjs/helpers:103:18)
    at Object.<anonymous> (/home/midawson/newpull/io.js/test/parallel/test-code-cache.js:19:3)
    at Module._compile (node:internal/modules/cjs/loader:1119:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1173:10)
    at Module.load (node:internal/modules/cjs/loader:997:32)
    at Module._load (node:internal/modules/cjs/loader:838:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:86:12) {
  code: 'ERR_UNKNOWN_BUILTIN_MODULE'

That is what I'm currently looking at.

@mhdawson
Copy link
Member Author

Looking at the test failure seem like I need to do more than just read the file from disk every time it is loaded. Working on that now.

@voxik
Copy link
Contributor

voxik commented Aug 24, 2022

@mhdawson for us not intimately familiar with all Node.js details, would you mind to improve the commit message to include also what it is really good for and how to use it? Thx a lot 🙏

@mhdawson
Copy link
Member Author

@voxik will be adding docs, just have not gotten to that yet.

Pushed an update to move addition of externalized builtins to the right place to get them fully initialized as part of the builtin loader, but still have some error handling and memory management to figure out. Once I do that will work on the docs/tests/cleanup etc.

@@ -57,6 +57,11 @@
with open ('tools/icu/icu_versions.json') as f:
icu_versions = json.load(f)

sharable_builtins = {'cjs_module_lexer/lexer': 'deps/cjs-module-lexer/lexer.js',
'cjs_module_lexer/dist/lexer': 'deps/cjs-module-lexer/dist/lexer.js',
'undici/undici': 'deps/undici/undici.js'
Copy link
Member

Choose a reason for hiding this comment

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

I assume this means that distros can now provide different versions of these dependencies. Are we okay with that?

Copy link
Member Author

@mhdawson mhdawson Aug 25, 2022

Choose a reason for hiding this comment

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

I see this as very similar to supporting external shared libraries and it is motivated by a similar use case. Since it does not affect what we ship I think it's up to the distros that use it to keep the versions the same or compatible in what they ship just like they do for shared libraries.

Copy link
Member

Choose a reason for hiding this comment

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

I think we need to carefully weigh this. I see the motivation but not quite convinced yet.

Copy link
Member Author

Choose a reason for hiding this comment

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

@jasnell can you outline your concerns in a bit more detail? We have 2 distro's asking for the functionality in order to avoid having to hack in their own solutions?

icu::UnicodeString utf16 = icu::UnicodeString::fromUTF8(
icu::StringPiece(source.data(), source.length()));
auto source_utf16 = std::make_unique<icu::UnicodeString>(utf16);
Copy link
Member

Choose a reason for hiding this comment

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

This probably needs some sort of #ifdef guard for --without-intl?

Copy link
Member Author

Choose a reason for hiding this comment

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

@addaleax I was wondering about that. If we don't have intl, do you know how typically convert to utf16 if intl is not enabled ?

Copy link
Member

Choose a reason for hiding this comment

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

#37954 (comment) has some prior discussion on that (tl;dr: we don’t, we can use V8 in cases in which an Isolate is available but not here)

Copy link
Member Author

Choose a reason for hiding this comment

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

Thanks for the pointer to the discussion, I can see that is trying to the code where I'd grabbed using icu for the conversion from :)

Copy link
Member Author

Choose a reason for hiding this comment

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

I ended up making it so that the --without-intl reports an error if you try to configure it along with an externally shared js builtin and then guarding the code so that if --without-intl is used without the new options it is excluded.

My take is that it is acceptable for the new options to not be availble when --without-intl. My reasoning is both that people using --without-intl is a small set of people at this point in time and that those that do are unlikely to be interested in externalizing builtins and that rolling our own icu convertion for this unlikely case is not worth the work/additional code in Node.js. If that's wrong or we add native conversion helpers at some later time we can always do the work to remove that restriction.

Copy link
Member Author

Choose a reason for hiding this comment

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

I also did confirm as Anna mentioned that an isolate is not available in the method where we do the coversions so using V8 is not possible in this case.

Refs: nodejs#44000

- add infra to support externally shared js builtins in
  support of distos that want to externalize deps that
  include JS/WASM instead of native code
- add support for externalizing
  - cjs_module_lexer/lexer
  - cjs_module_lexer/dist/lexer
  - undici/undici

Signed-off-by: Michael Dawson <mdawson@devrus.com>
@mhdawson
Copy link
Member Author

@voxik, @kapouer, @khardix, @kasicka I've add the doc in BUILDING.md in terms of how to use the new options. Let me know if you have questions/it's not clear. The doc in maintining_dependencies.md also has some text that you 4 reviewing (for example why distros used externalized dependencies etc).

The new options as seen from the help output (./configure --help) are:

Shared builtins:
  Flags that allows you to control whether you want to build against
  internal builtins or shared files.

  --shared-builtin-cjs_module_lexer/lexer-path NODE_SHARED_BUILTIN_CJS_MODULE_LEXER_LEXER_PATH
                        Path to shared file for cjs_module_lexer/lexer
                        builtin. Will be used instead of bundled version at
                        runtime
  --shared-builtin-cjs_module_lexer/dist/lexer-path NODE_SHARED_BUILTIN_CJS_MODULE_LEXER_DIST_LEXER_PATH
                        Path to shared file for cjs_module_lexer/dist/lexer
                        builtin. Will be used instead of bundled version at
                        runtime
  --shared-builtin-undici/undici-path NODE_SHARED_BUILTIN_UNDICI_UNDICI_PATH
                        Path to shared file for undici/undici builtin. Will be
                        used instead of bundled version at runtime

The will let you build with the lexer files and the undici files externalized so that they are loaded at runtime. The issue in #44000 of trying to use one copy of llhttp is a bit different and not covered in this PR, but this PR does cover some of the discussion we had in 44000.

@mhdawson mhdawson changed the title WIP src: add support for externally shared js builtins src: add support for externally shared js builtins Aug 26, 2022
@mhdawson
Copy link
Member Author

Squashed to 1 commit and marking as non-draft as I think it's complete and want to get testing on more platforms.

In terms of new tests I don't see us having tests for configure options, other than additional CI run for some specific subsets. Not sure that we should add one for this subset, but if so it would be after the PR lands anyway.

I've confirmed all tests run/pass with no configure options, the --without-intl option, with all three of the sharable builtins externalized, and with just one of the sharable builtins externalized.

@mhdawson mhdawson marked this pull request as ready for review August 26, 2022 16:31
Signed-off-by: Michael Dawson <mdawson@devrus.com>
@mhdawson mhdawson added the request-ci Add this label to start a Jenkins CI on a PR. label Aug 26, 2022
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Aug 26, 2022
@nodejs-github-bot
Copy link
Collaborator

@kapouer
Copy link
Contributor

kapouer commented Aug 28, 2022

Is there a reason for excluding acorn/acorn-walk from this ?

@khardix
Copy link

khardix commented Aug 29, 2022

@mdawson I like the write-up in the maintaining_dependencies.md file. It does a nice job of explaining the generic problems we (distro maintainers) have. It may benefit from some rewording, as it is a bit dense; but I'm not a technical writer either, so it looks good enough for me.

configure.py Outdated Show resolved Hide resolved
codebytere added a commit to electron/electron that referenced this pull request Feb 6, 2023
jkleinsc pushed a commit to electron/electron that referenced this pull request Feb 7, 2023
* chore: bump node in DEPS to v18.14.0

* src: add support for externally shared js builtins

nodejs/node#44376

* test: fix test broken under --node-builtin-modules-path

nodejs/node#45894

* build: add option to disable shared readonly heap

nodejs/node#45887

* src: remove unnecessary semicolons

nodejs/node#46171

* src: remove return after abort

nodejs/node#46172

* chore: fixup patch indices

* test_runner: parse yaml

nodejs/node#45815

* src: use simdutf for converting externalized builtins to UTF-16

nodejs/node#46119

* src: rename internal module declaration as internal bindings

nodejs/node#45551

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
khalwa pushed a commit to solarwindscloud/electron that referenced this pull request Feb 22, 2023
* chore: bump node in DEPS to v18.13.0

* child_process: validate arguments for null bytes

nodejs/node#44782

* bootstrap: merge main thread and worker thread initializations

nodejs/node#44869

* module: ensure relative requires work from deleted directories

nodejs/node#42384

* src: add support for externally shared js builtins

nodejs/node#44000

* lib: disambiguate `native module` to `binding`

nodejs/node#45673

* test: convert test-debugger-pid to async/await

nodejs/node#45179

* deps: upgrade to libuv 1.44.2

nodejs/node#42340

* src: fix cppgc incompatibility in v8

nodejs/node#43521

* src: use qualified `std::move` call in node_http2

nodejs/node#45555

* build: fix env.h for cpp20

nodejs/node#45516

* test: remove experimental-wasm-threads flag

nodejs/node#45074

* src: iwyu in cleanup_queue.cc

nodejs/node#44983

* src: add missing include for `std::all_of`

nodejs/node#45541

* deps: update ICU to 72.1

nodejs/node#45068

* chore: fixup patch indices

* chore: remove errant semicolons

- nodejs/node#44179
- nodejs/node#44193

* src: add support for externally shared js builtins

nodejs/node#44376

* chore: add missing GN filenames

* deps: update nghttp2 to 1.51.0

nodejs/node#45537

* chore: disable more Node.js snapshot tests

The Snapshot feature is currently disabled

* chore: disable ICU timezone tests

Node.js uses a different version of ICU than Electron so they
will often be out of sync.

* chore: disable threadpool event tracing test

Event tracing is not enabled in embedded Node.js

* chore: fixup patch indices

* chore: comments from review

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
khalwa pushed a commit to solarwindscloud/electron that referenced this pull request Feb 22, 2023
* chore: bump node in DEPS to v18.14.0

* src: add support for externally shared js builtins

nodejs/node#44376

* test: fix test broken under --node-builtin-modules-path

nodejs/node#45894

* build: add option to disable shared readonly heap

nodejs/node#45887

* src: remove unnecessary semicolons

nodejs/node#46171

* src: remove return after abort

nodejs/node#46172

* chore: fixup patch indices

* test_runner: parse yaml

nodejs/node#45815

* src: use simdutf for converting externalized builtins to UTF-16

nodejs/node#46119

* src: rename internal module declaration as internal bindings

nodejs/node#45551

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
gecko19 pushed a commit to brightsign/electron that referenced this pull request Feb 28, 2023
* chore: bump node in DEPS to v18.13.0

* child_process: validate arguments for null bytes

nodejs/node#44782

* bootstrap: merge main thread and worker thread initializations

nodejs/node#44869

* module: ensure relative requires work from deleted directories

nodejs/node#42384

* src: add support for externally shared js builtins

nodejs/node#44000

* lib: disambiguate `native module` to `binding`

nodejs/node#45673

* test: convert test-debugger-pid to async/await

nodejs/node#45179

* deps: upgrade to libuv 1.44.2

nodejs/node#42340

* src: fix cppgc incompatibility in v8

nodejs/node#43521

* src: use qualified `std::move` call in node_http2

nodejs/node#45555

* build: fix env.h for cpp20

nodejs/node#45516

* test: remove experimental-wasm-threads flag

nodejs/node#45074

* src: iwyu in cleanup_queue.cc

nodejs/node#44983

* src: add missing include for `std::all_of`

nodejs/node#45541

* deps: update ICU to 72.1

nodejs/node#45068

* chore: fixup patch indices

* chore: remove errant semicolons

- nodejs/node#44179
- nodejs/node#44193

* src: add support for externally shared js builtins

nodejs/node#44376

* chore: add missing GN filenames

* deps: update nghttp2 to 1.51.0

nodejs/node#45537

* chore: disable more Node.js snapshot tests

The Snapshot feature is currently disabled

* chore: disable ICU timezone tests

Node.js uses a different version of ICU than Electron so they
will often be out of sync.

* chore: disable threadpool event tracing test

Event tracing is not enabled in embedded Node.js

* chore: fixup patch indices

* chore: comments from review

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
gecko19 pushed a commit to brightsign/electron that referenced this pull request Feb 28, 2023
* chore: bump node in DEPS to v18.14.0

* src: add support for externally shared js builtins

nodejs/node#44376

* test: fix test broken under --node-builtin-modules-path

nodejs/node#45894

* build: add option to disable shared readonly heap

nodejs/node#45887

* src: remove unnecessary semicolons

nodejs/node#46171

* src: remove return after abort

nodejs/node#46172

* chore: fixup patch indices

* test_runner: parse yaml

nodejs/node#45815

* src: use simdutf for converting externalized builtins to UTF-16

nodejs/node#46119

* src: rename internal module declaration as internal bindings

nodejs/node#45551

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
gecko19 pushed a commit to brightsign/electron that referenced this pull request Mar 15, 2023
* chore: bump node in DEPS to v18.13.0

* child_process: validate arguments for null bytes

nodejs/node#44782

* bootstrap: merge main thread and worker thread initializations

nodejs/node#44869

* module: ensure relative requires work from deleted directories

nodejs/node#42384

* src: add support for externally shared js builtins

nodejs/node#44000

* lib: disambiguate `native module` to `binding`

nodejs/node#45673

* test: convert test-debugger-pid to async/await

nodejs/node#45179

* deps: upgrade to libuv 1.44.2

nodejs/node#42340

* src: fix cppgc incompatibility in v8

nodejs/node#43521

* src: use qualified `std::move` call in node_http2

nodejs/node#45555

* build: fix env.h for cpp20

nodejs/node#45516

* test: remove experimental-wasm-threads flag

nodejs/node#45074

* src: iwyu in cleanup_queue.cc

nodejs/node#44983

* src: add missing include for `std::all_of`

nodejs/node#45541

* deps: update ICU to 72.1

nodejs/node#45068

* chore: fixup patch indices

* chore: remove errant semicolons

- nodejs/node#44179
- nodejs/node#44193

* src: add support for externally shared js builtins

nodejs/node#44376

* chore: add missing GN filenames

* deps: update nghttp2 to 1.51.0

nodejs/node#45537

* chore: disable more Node.js snapshot tests

The Snapshot feature is currently disabled

* chore: disable ICU timezone tests

Node.js uses a different version of ICU than Electron so they
will often be out of sync.

* chore: disable threadpool event tracing test

Event tracing is not enabled in embedded Node.js

* chore: fixup patch indices

* chore: comments from review

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
gecko19 pushed a commit to brightsign/electron that referenced this pull request Mar 15, 2023
* chore: bump node in DEPS to v18.14.0

* src: add support for externally shared js builtins

nodejs/node#44376

* test: fix test broken under --node-builtin-modules-path

nodejs/node#45894

* build: add option to disable shared readonly heap

nodejs/node#45887

* src: remove unnecessary semicolons

nodejs/node#46171

* src: remove return after abort

nodejs/node#46172

* chore: fixup patch indices

* test_runner: parse yaml

nodejs/node#45815

* src: use simdutf for converting externalized builtins to UTF-16

nodejs/node#46119

* src: rename internal module declaration as internal bindings

nodejs/node#45551

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
gecko19 pushed a commit to brightsign/electron that referenced this pull request Mar 15, 2023
* chore: bump node in DEPS to v18.13.0

* child_process: validate arguments for null bytes

nodejs/node#44782

* bootstrap: merge main thread and worker thread initializations

nodejs/node#44869

* module: ensure relative requires work from deleted directories

nodejs/node#42384

* src: add support for externally shared js builtins

nodejs/node#44000

* lib: disambiguate `native module` to `binding`

nodejs/node#45673

* test: convert test-debugger-pid to async/await

nodejs/node#45179

* deps: upgrade to libuv 1.44.2

nodejs/node#42340

* src: fix cppgc incompatibility in v8

nodejs/node#43521

* src: use qualified `std::move` call in node_http2

nodejs/node#45555

* build: fix env.h for cpp20

nodejs/node#45516

* test: remove experimental-wasm-threads flag

nodejs/node#45074

* src: iwyu in cleanup_queue.cc

nodejs/node#44983

* src: add missing include for `std::all_of`

nodejs/node#45541

* deps: update ICU to 72.1

nodejs/node#45068

* chore: fixup patch indices

* chore: remove errant semicolons

- nodejs/node#44179
- nodejs/node#44193

* src: add support for externally shared js builtins

nodejs/node#44376

* chore: add missing GN filenames

* deps: update nghttp2 to 1.51.0

nodejs/node#45537

* chore: disable more Node.js snapshot tests

The Snapshot feature is currently disabled

* chore: disable ICU timezone tests

Node.js uses a different version of ICU than Electron so they
will often be out of sync.

* chore: disable threadpool event tracing test

Event tracing is not enabled in embedded Node.js

* chore: fixup patch indices

* chore: comments from review

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
gecko19 pushed a commit to brightsign/electron that referenced this pull request Mar 15, 2023
* chore: bump node in DEPS to v18.14.0

* src: add support for externally shared js builtins

nodejs/node#44376

* test: fix test broken under --node-builtin-modules-path

nodejs/node#45894

* build: add option to disable shared readonly heap

nodejs/node#45887

* src: remove unnecessary semicolons

nodejs/node#46171

* src: remove return after abort

nodejs/node#46172

* chore: fixup patch indices

* test_runner: parse yaml

nodejs/node#45815

* src: use simdutf for converting externalized builtins to UTF-16

nodejs/node#46119

* src: rename internal module declaration as internal bindings

nodejs/node#45551

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
BethGriggs pushed a commit that referenced this pull request Mar 23, 2023
Refs: #44000

- add infra to support externally shared js builtins in
  support of distos that want to externalize deps that
  include JS/WASM instead of native code
- add support for externalizing
  - cjs_module_lexer/lexer
  - cjs_module_lexer/dist/lexer
  - undici/undici

Signed-off-by: Michael Dawson <mdawson@devrus.com>

PR-URL: #44376
Backport-PR-URL: #45867
Reviewed-By: Gireesh Punathil <gpunathi@in.ibm.com>
BethGriggs added a commit that referenced this pull request Mar 27, 2023
Notable changes:

- (SEMVER-MINOR) src: add support for externally shared js builtins
  (Michael Dawson) #44376

PR-URL: TODO
BethGriggs added a commit that referenced this pull request Mar 27, 2023
Notable changes:

- (SEMVER-MINOR) src: add support for externally shared js builtins
  (Michael Dawson) #44376

PR-URL: TODO
BethGriggs added a commit that referenced this pull request Mar 27, 2023
Notable changes:

- deps:
  - update undici to 5.20.0 (Node.js GitHub Bot)
    #46711
  - update c-ares to 1.19.0 (Michaël Zasso)
    #46415
  - upgrade npm to 8.19.4 (npm team)
    #46677
  - update corepack to 0.17.0 (Node.js GitHub Bot)
    #46842
- (SEMVER-MINOR) src: add support for externally shared js builtins
  (Michael Dawson) [#44376]

PR-URL: TODO
@BethGriggs BethGriggs mentioned this pull request Mar 27, 2023
BethGriggs added a commit that referenced this pull request Mar 27, 2023
Notable changes:

- deps:
  - update undici to 5.20.0 (Node.js GitHub Bot)
    #46711
  - update c-ares to 1.19.0 (Michaël Zasso)
    #46415
  - upgrade npm to 8.19.4 (npm team)
    #46677
  - update corepack to 0.17.0 (Node.js GitHub Bot)
    #46842
- (SEMVER-MINOR) src: add support for externally shared js builtins
  (Michael Dawson) [#44376]

PR-URL: #47272
BethGriggs added a commit that referenced this pull request Mar 29, 2023
Notable changes:

- deps:
  - update undici to 5.20.0 (Node.js GitHub Bot)
    #46711
  - update c-ares to 1.19.0 (Michaël Zasso)
    #46415
  - upgrade npm to 8.19.4 (npm team)
    #46677
  - update corepack to 0.17.0 (Node.js GitHub Bot)
    #46842
- (SEMVER-MINOR) src: add support for externally shared js builtins
  (Michael Dawson) [#44376]

PR-URL: #47272
mwalbeck pushed a commit to mwalbeck/docker-cyberchef that referenced this pull request Apr 4, 2023
This PR contains the following updates:

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

---

### Release Notes

<details>
<summary>nodejs/node</summary>

### [`v16.20.0`](https://github.com/nodejs/node/releases/tag/v16.20.0): 2023-03-29, Version 16.20.0 &#x27;Gallium&#x27; (LTS), @&#8203;BethGriggs

[Compare Source](nodejs/node@v16.19.1...v16.20.0)

##### Notable Changes

-   **deps:**
    -   update undici to 5.20.0 (Node.js GitHub Bot) [#&#8203;46711](nodejs/node#46711)
    -   update c-ares to 1.19.0 (Michaël Zasso) [#&#8203;46415](nodejs/node#46415)
    -   upgrade npm to 8.19.4 (npm team) [#&#8203;46677](nodejs/node#46677)
    -   update corepack to 0.17.0 (Node.js GitHub Bot) [#&#8203;46842](nodejs/node#46842)
-   **(SEMVER-MINOR)** **src**: add support for externally shared js builtins (Michael Dawson) [#&#8203;44376](nodejs/node#44376)

##### Commits

-   \[[`de6dd67790`](nodejs/node@de6dd67790)] - **crypto**: avoid hang when no algorithm available (Richard Lau) [#&#8203;46237](nodejs/node#46237)
-   \[[`4617512788`](nodejs/node@4617512788)] - **crypto**: ensure auth tag set for chacha20-poly1305 (Ben Noordhuis) [#&#8203;46185](nodejs/node#46185)
-   \[[`24972164fc`](nodejs/node@24972164fc)] - **deps**: update undici to 5.20.0 (Node.js GitHub Bot) [#&#8203;46711](nodejs/node#46711)
-   \[[`85f88c6a8d`](nodejs/node@85f88c6a8d)] - **deps**: V8: cherry-pick [`90be99f`](nodejs/node@90be99fab31c) (Michaël Zasso) [#&#8203;46646](nodejs/node#46646)
-   \[[`b4ebe6d47b`](nodejs/node@b4ebe6d47b)] - **deps**: update c-ares to 1.19.0 (Michaël Zasso) [#&#8203;46415](nodejs/node#46415)
-   \[[`56cbc7fdda`](nodejs/node@56cbc7fdda)] - **deps**: V8: cherry-pick [`c2792e5`](nodejs/node@c2792e58035f) (Jiawen Geng) [#&#8203;44961](nodejs/node#44961)
-   \[[`7af9bdb31e`](nodejs/node@7af9bdb31e)] - **deps**: upgrade npm to 8.19.4 (npm team) [#&#8203;46677](nodejs/node#46677)
-   \[[`962a7471b5`](nodejs/node@962a7471b5)] - **deps**: update corepack to 0.17.0 (Node.js GitHub Bot) [#&#8203;46842](nodejs/node#46842)
-   \[[`748bc96e35`](nodejs/node@748bc96e35)] - **deps**: update corepack to 0.16.0 (Node.js GitHub Bot) [#&#8203;46710](nodejs/node#46710)
-   \[[`a467782499`](nodejs/node@a467782499)] - **deps**: update corepack to 0.15.3 (Node.js GitHub Bot) [#&#8203;46037](nodejs/node#46037)
-   \[[`1913b6763d`](nodejs/node@1913b6763d)] - **deps**: update corepack to 0.15.2 (Node.js GitHub Bot) [#&#8203;45635](nodejs/node#45635)
-   \[[`809371a15f`](nodejs/node@809371a15f)] - **module**: require.resolve.paths returns null with node schema (MURAKAMI Masahiko) [#&#8203;45147](nodejs/node#45147)
-   \[[`086bb2f8d4`](nodejs/node@086bb2f8d4)] - ***Revert*** "**src**: let http2 streams end after session close" (Rich Trott) [#&#8203;46721](nodejs/node#46721)
-   \[[`6a01d39120`](nodejs/node@6a01d39120)] - **(SEMVER-MINOR)** **src**: add support for externally shared js builtins (Michael Dawson) [#&#8203;44376](nodejs/node#44376)
-   \[[`d081032a60`](nodejs/node@d081032a60)] - **test**: fix test-net-connect-reset-until-connected (Vita Batrla) [#&#8203;46781](nodejs/node#46781)
-   \[[`efe1be47ec`](nodejs/node@efe1be47ec)] - **test**: skip test depending on `overlapped-checker` when not available (Antoine du Hamel) [#&#8203;45015](nodejs/node#45015)
-   \[[`fc47d58abe`](nodejs/node@fc47d58abe)] - **test**: remove cjs loader from stack traces (Geoffrey Booth) [#&#8203;44197](nodejs/node#44197)
-   \[[`cf76d0790d`](nodejs/node@cf76d0790d)] - **test**: fix WPT title when no META title is present (Filip Skokan) [#&#8203;46804](nodejs/node#46804)
-   \[[`0d1485b924`](nodejs/node@0d1485b924)] - **test**: fix default WPT titles (Filip Skokan) [#&#8203;46778](nodejs/node#46778)
-   \[[`088e9cde3d`](nodejs/node@088e9cde3d)] - **test**: add WPTRunner support for variants and generating WPT reports (Filip Skokan) [#&#8203;46498](nodejs/node#46498)
-   \[[`908c4dff44`](nodejs/node@908c4dff44)] - **test**: mark test-crypto-key-objects flaky on Linux (Richard Lau) [#&#8203;46684](nodejs/node#46684)
-   \[[`768e56227e`](nodejs/node@768e56227e)] - **tools**: make `utils.SearchFiles` deterministic (Bruno Pitrus) [#&#8203;44496](nodejs/node#44496)

</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 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 [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yMy4zIiwidXBkYXRlZEluVmVyIjoiMzUuMjMuMyJ9-->

Reviewed-on: https://git.walbeck.it/mwalbeck/docker-cyberchef/pulls/187
Co-authored-by: renovate-bot <bot@walbeck.it>
Co-committed-by: renovate-bot <bot@walbeck.it>
mwalbeck pushed a commit to mwalbeck/docker-jellyfin-livestream that referenced this pull request Apr 4, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [node](https://github.com/nodejs/node) | stage | minor | `16.19.1-bullseye-slim` -> `16.20.0-bullseye-slim` |

---

### Release Notes

<details>
<summary>nodejs/node</summary>

### [`v16.20.0`](https://github.com/nodejs/node/releases/tag/v16.20.0): 2023-03-29, Version 16.20.0 &#x27;Gallium&#x27; (LTS), @&#8203;BethGriggs

[Compare Source](nodejs/node@v16.19.1...v16.20.0)

##### Notable Changes

-   **deps:**
    -   update undici to 5.20.0 (Node.js GitHub Bot) [#&#8203;46711](nodejs/node#46711)
    -   update c-ares to 1.19.0 (Michaël Zasso) [#&#8203;46415](nodejs/node#46415)
    -   upgrade npm to 8.19.4 (npm team) [#&#8203;46677](nodejs/node#46677)
    -   update corepack to 0.17.0 (Node.js GitHub Bot) [#&#8203;46842](nodejs/node#46842)
-   **(SEMVER-MINOR)** **src**: add support for externally shared js builtins (Michael Dawson) [#&#8203;44376](nodejs/node#44376)

##### Commits

-   \[[`de6dd67790`](nodejs/node@de6dd67790)] - **crypto**: avoid hang when no algorithm available (Richard Lau) [#&#8203;46237](nodejs/node#46237)
-   \[[`4617512788`](nodejs/node@4617512788)] - **crypto**: ensure auth tag set for chacha20-poly1305 (Ben Noordhuis) [#&#8203;46185](nodejs/node#46185)
-   \[[`24972164fc`](nodejs/node@24972164fc)] - **deps**: update undici to 5.20.0 (Node.js GitHub Bot) [#&#8203;46711](nodejs/node#46711)
-   \[[`85f88c6a8d`](nodejs/node@85f88c6a8d)] - **deps**: V8: cherry-pick [`90be99f`](nodejs/node@90be99fab31c) (Michaël Zasso) [#&#8203;46646](nodejs/node#46646)
-   \[[`b4ebe6d47b`](nodejs/node@b4ebe6d47b)] - **deps**: update c-ares to 1.19.0 (Michaël Zasso) [#&#8203;46415](nodejs/node#46415)
-   \[[`56cbc7fdda`](nodejs/node@56cbc7fdda)] - **deps**: V8: cherry-pick [`c2792e5`](nodejs/node@c2792e58035f) (Jiawen Geng) [#&#8203;44961](nodejs/node#44961)
-   \[[`7af9bdb31e`](nodejs/node@7af9bdb31e)] - **deps**: upgrade npm to 8.19.4 (npm team) [#&#8203;46677](nodejs/node#46677)
-   \[[`962a7471b5`](nodejs/node@962a7471b5)] - **deps**: update corepack to 0.17.0 (Node.js GitHub Bot) [#&#8203;46842](nodejs/node#46842)
-   \[[`748bc96e35`](nodejs/node@748bc96e35)] - **deps**: update corepack to 0.16.0 (Node.js GitHub Bot) [#&#8203;46710](nodejs/node#46710)
-   \[[`a467782499`](nodejs/node@a467782499)] - **deps**: update corepack to 0.15.3 (Node.js GitHub Bot) [#&#8203;46037](nodejs/node#46037)
-   \[[`1913b6763d`](nodejs/node@1913b6763d)] - **deps**: update corepack to 0.15.2 (Node.js GitHub Bot) [#&#8203;45635](nodejs/node#45635)
-   \[[`809371a15f`](nodejs/node@809371a15f)] - **module**: require.resolve.paths returns null with node schema (MURAKAMI Masahiko) [#&#8203;45147](nodejs/node#45147)
-   \[[`086bb2f8d4`](nodejs/node@086bb2f8d4)] - ***Revert*** "**src**: let http2 streams end after session close" (Rich Trott) [#&#8203;46721](nodejs/node#46721)
-   \[[`6a01d39120`](nodejs/node@6a01d39120)] - **(SEMVER-MINOR)** **src**: add support for externally shared js builtins (Michael Dawson) [#&#8203;44376](nodejs/node#44376)
-   \[[`d081032a60`](nodejs/node@d081032a60)] - **test**: fix test-net-connect-reset-until-connected (Vita Batrla) [#&#8203;46781](nodejs/node#46781)
-   \[[`efe1be47ec`](nodejs/node@efe1be47ec)] - **test**: skip test depending on `overlapped-checker` when not available (Antoine du Hamel) [#&#8203;45015](nodejs/node#45015)
-   \[[`fc47d58abe`](nodejs/node@fc47d58abe)] - **test**: remove cjs loader from stack traces (Geoffrey Booth) [#&#8203;44197](nodejs/node#44197)
-   \[[`cf76d0790d`](nodejs/node@cf76d0790d)] - **test**: fix WPT title when no META title is present (Filip Skokan) [#&#8203;46804](nodejs/node#46804)
-   \[[`0d1485b924`](nodejs/node@0d1485b924)] - **test**: fix default WPT titles (Filip Skokan) [#&#8203;46778](nodejs/node#46778)
-   \[[`088e9cde3d`](nodejs/node@088e9cde3d)] - **test**: add WPTRunner support for variants and generating WPT reports (Filip Skokan) [#&#8203;46498](nodejs/node#46498)
-   \[[`908c4dff44`](nodejs/node@908c4dff44)] - **test**: mark test-crypto-key-objects flaky on Linux (Richard Lau) [#&#8203;46684](nodejs/node#46684)
-   \[[`768e56227e`](nodejs/node@768e56227e)] - **tools**: make `utils.SearchFiles` deterministic (Bruno Pitrus) [#&#8203;44496](nodejs/node#44496)

</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 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 [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yMy4zIiwidXBkYXRlZEluVmVyIjoiMzUuMjMuMyJ9-->

Reviewed-on: https://git.walbeck.it/mwalbeck/docker-jellyfin-livestream/pulls/243
Co-authored-by: renovate-bot <bot@walbeck.it>
Co-committed-by: renovate-bot <bot@walbeck.it>
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 26, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 26, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376

Signed-off-by: Zephyr Lykos <self@mochaa.ws>
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 26, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376

Signed-off-by: Zephyr Lykos <self@mochaa.ws>
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 27, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376

Signed-off-by: Zephyr Lykos <self@mochaa.ws>
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 27, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376

Signed-off-by: Zephyr Lykos <self@mochaa.ws>
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 27, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376

Signed-off-by: Zephyr Lykos <self@mochaa.ws>
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 27, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376

Signed-off-by: Zephyr Lykos <self@mochaa.ws>
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 27, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376

Signed-off-by: Zephyr Lykos <self@mochaa.ws>
mochaaP added a commit to mcha-forks/undici that referenced this pull request Jan 27, 2024
Initial support for loading unbundled module in `AddExternalizedBuiltin`.

- Reduces downstream distribution package size (by not shipping wasm twice
  and not base64-encoding it)
- Provides a cleaner stacktrace
- Easier to patch

To enable this, pass `EXTERNAL_PATH=/path/to/global/node_modules/undici`
to `build/wasm.js`.
You shall also pass this path to `--shared-builtin-undici/undici-path`
in Node.js's `configure.py`.

Reference:

nodejs/node@ca5be26b318
nodejs/node#44376

Signed-off-by: Zephyr Lykos <self@mochaa.ws>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. commit-queue-failed An error occurred while landing this pull request using GitHub Actions. 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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet