-
-
Notifications
You must be signed in to change notification settings - Fork 34.5k
lib: implement all 1-byte encodings in js #61093
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
lib: implement all 1-byte encodings in js #61093
Conversation
d49cc98 to
5c80725
Compare
|
Perhaps native path from #60893 could be reverted separately and should not be blocked on this, as that causes much of the regression (see perf difference between |
5c80725 to
9e8e785
Compare
mcollina
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
0f4a5ca to
e047a11
Compare
|
This should be ready except for tests which I'll add |
e047a11 to
1920216
Compare
Renegade334
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice! Just a few minor suggestions.
1920216 to
7c615e2
Compare
| const w3 = [...w8, -8060, 8330, -8328, 8096, -8094]; | ||
| const m0 = [8558, -8328, 8374, -66, -8539, 16, 8043, -8070]; | ||
|
|
||
| const encodings = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Without documentation this is really not maintainable. At the very least, this needs some comments about what these numbers are, how they are determined, etc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jasnell A test will cover that explanation, which is why the method to get those is exported
I'll add that test
It will also be able to reproduce those from the spec data (albeit without the common chunks extraction, but that is trivially maintainable e.g. by just omitting that)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is just the tables for 0x80+ ranges from the spec, as e.g. https://encoding.spec.whatwg.org/index-iso-8859-6.txt, with two adjustments for compactness and ease-of-use:
0xfffddesignates a hole (unmapped offset), those tables are non-continuous- All other values are deltas from the previous seen entry, the first one is delta from 0x7f
This is because values 0x00-0x7f are always mapped as identity and are not even present in spec tables
E.g. if the table in the spec says
0 0x0080
1 0x0081
5 0x0085
6 0x0086
7 0x0087
The vector is [1, 1, f, f, f, 4, 1, 1] (with f being 0xfffd)
I'll document that in the testcase/generator
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I understand what's happening here but really the comments/explanation needs to be in the source here. I don't think placing the explanation in the test is correct.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
Also I removed all the common ranges logic to make this easier, size doesn't matter that much here
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #61093 +/- ##
========================================
Coverage 88.53% 88.53%
========================================
Files 703 704 +1
Lines 208546 208662 +116
Branches 40217 40249 +32
========================================
+ Hits 184634 184749 +115
- Misses 15926 15941 +15
+ Partials 7986 7972 -14
🚀 New features to boost your workflow:
|
|
Thanks for repair! fails because |
74fed43 to
2cb2499
Compare
mcollina
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
|
New tests seem to have failed without intl, will fix that |
|
Non-ICU impl should be fixed now (and support all single-bytes, in both fatal and replacement modes) |
Failed to start CI⚠ Commits were pushed since the last approving review: ⚠ - lib: implement all 1-byte encodings in js ⚠ - test: add single-byte encoding tests ⚠ - unify non-icu TextDecoder wih icu-based a bit ✘ Refusing to run CI on potentially unsafe PRhttps://github.com/nodejs/node/actions/runs/20433701568 |
mcollina
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
| ERR_ENCODING_INVALID_ENCODED_DATA, | ||
| } = require('internal/errors').codes; | ||
|
|
||
| const isBigEndian = new FastBuffer(TypedArrayOf(Uint16Array, 258).buffer)[1] === 2; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: we already check this here, I wonder if it'd be better to make this an internal export?
| throw new ERR_ENCODING_NOT_SUPPORTED(encoding); | ||
| } | ||
|
|
||
| const map = TypedArrayFrom(Uint16Array, l256, (_, i) => i); // Unicode subset |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: The callback variant of the arrayish .from methods is really quite slow. It's significantly quicker to create an empty typed array and fill the desired portion using a simple loop.
| const map = TypedArrayFrom(Uint16Array, l256, (_, i) => i); // Unicode subset | |
| const map = new Uint16Array(256); | |
| // Populate the ASCII region | |
| for (let i = 0; i < 128; i++) { | |
| map[i] = i; | |
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
|
||
| const map = TypedArrayFrom(Uint16Array, l256, (_, i) => i); // Unicode subset | ||
| let prev = 127; | ||
| map.set(TypedArrayFrom(Uint16Array, it(encodings[encoding]), (x) => (x === r ? x : (prev += x))), 128); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: Again, a loop here is much faster than passing a callback to .from().
| map.set(TypedArrayFrom(Uint16Array, it(encodings[encoding]), (x) => (x === r ? x : (prev += x))), 128); | |
| const offsets = encodings[encoding]; | |
| for (let i = 128; i < 256; i++) { | |
| const x = offsets[i]; | |
| map[i] = x === r ? r : (prev += x); | |
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| function getEncoding(encoding) { | ||
| if (encoding === 'x-user-defined') { | ||
| // https://encoding.spec.whatwg.org/#x-user-defined-decoder, 14.5.1. x-user-defined decoder | ||
| return TypedArrayFrom(Uint16Array, l256, (_, i) => (i >= 0x80 ? 0xf700 + i : i)); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: Again, much faster to do the following:
| return TypedArrayFrom(Uint16Array, l256, (_, i) => (i >= 0x80 ? 0xf700 + i : i)); | |
| const map = new Uint16Array(256); | |
| for (let i = 0; i < 128; i++) { | |
| map[i] = i; | |
| } | |
| for (let i = 128; i < 256; i++) { | |
| map[i] = i + 0xf700; | |
| } | |
| return map; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These are all single-time inits for arrs of length 256 and are cached, any perf difference there is insignificant and isn't work the extra LoCs
Actual improvement on this is #61118 which will remove this init code
|
Landed in 0b02b92 |
PR-URL: #61093 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
PR-URL: #61093 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
PR-URL: #61093 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
PR-URL: #61093 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [node](https://nodejs.org) ([source](https://github.com/nodejs/node)) | minor | `25.3.0` → `25.4.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>nodejs/node (node)</summary> ### [`v25.4.0`](https://github.com/nodejs/node/releases/tag/v25.4.0): 2026-01-19, Version 25.4.0 (Current), @​RafaelGSS [Compare Source](https://github.com/nodejs/node/compare/v25.3.0...v25.4.0) ##### Notable Changes - \[[`8f6fada8f1`](https://github.com/nodejs/node/commit/8f6fada8f1)] - **cli**: add --require-module/--no-require-module (Joyee Cheung) [#​60959](https://github.com/nodejs/node/pull/60959) - \[[`bf8e738df4`](https://github.com/nodejs/node/commit/bf8e738df4)] - **cli**: mark --heapsnapshot-near-heap-limit as stable (Joyee Cheung) [#​60956](https://github.com/nodejs/node/pull/60956) - \[[`7930d7a19b`](https://github.com/nodejs/node/commit/7930d7a19b)] - **crypto**: update root certificates to NSS 3.117 (Node.js GitHub Bot) [#​60741](https://github.com/nodejs/node/pull/60741) - \[[`44f61dfb92`](https://github.com/nodejs/node/commit/44f61dfb92)] - **doc**: add [@​avivkeller](https://github.com/avivkeller) to collaborators (Aviv Keller) [#​61115](https://github.com/nodejs/node/pull/61115) - \[[`45903ee884`](https://github.com/nodejs/node/commit/45903ee884)] - **doc**: add gurgunday to collaborators (Gürgün Dayıoğlu) [#​61094](https://github.com/nodejs/node/pull/61094) - \[[`77faa14d99`](https://github.com/nodejs/node/commit/77faa14d99)] - **doc**: mark --build-snapshot and --build-snapshot-config as stable (Joyee Cheung) [#​60954](https://github.com/nodejs/node/pull/60954) - \[[`aefbe4ba47`](https://github.com/nodejs/node/commit/aefbe4ba47)] - **(SEMVER-MINOR)** **events**: repurpose `events.listenerCount()` to accept EventTargets (René) [#​60214](https://github.com/nodejs/node/pull/60214) - \[[`8470e2993b`](https://github.com/nodejs/node/commit/8470e2993b)] - **(SEMVER-MINOR)** **http**: add http.setGlobalProxyFromEnv() (Joyee Cheung) [#​60953](https://github.com/nodejs/node/pull/60953) - \[[`24384d7438`](https://github.com/nodejs/node/commit/24384d7438)] - **meta**: add Renegade334 to collaborators (Renegade334) [#​60714](https://github.com/nodejs/node/pull/60714) - \[[`c1acef6d0f`](https://github.com/nodejs/node/commit/c1acef6d0f)] - **module**: mark require(esm) as stable (Joyee Cheung) [#​60959](https://github.com/nodejs/node/pull/60959) - \[[`2e39f3ed6b`](https://github.com/nodejs/node/commit/2e39f3ed6b)] - **module**: mark module compile cache as stable (Joyee Cheung) [#​60971](https://github.com/nodejs/node/pull/60971) - \[[`e6a05cfb4f`](https://github.com/nodejs/node/commit/e6a05cfb4f)] - **(SEMVER-MINOR)** **module**: allow subpath imports that start with `#/` (Jan Martin) [#​60864](https://github.com/nodejs/node/pull/60864) - \[[`fa927c31da`](https://github.com/nodejs/node/commit/fa927c31da)] - **(SEMVER-MINOR)** **process**: preserve AsyncLocalStorage in queueMicrotask only when needed (Gürgün Dayıoğlu) [#​60913](https://github.com/nodejs/node/pull/60913) - \[[`bd0942f4f5`](https://github.com/nodejs/node/commit/bd0942f4f5)] - **(SEMVER-MINOR)** **stream**: do not pass `readable.compose()` output via `Readable.from()` (René) [#​60907](https://github.com/nodejs/node/pull/60907) - \[[`5051d90100`](https://github.com/nodejs/node/commit/5051d90100)] - **(SEMVER-MINOR)** **util**: add convertProcessSignalToExitCode utility (Erick Wendel) [#​60963](https://github.com/nodejs/node/pull/60963) - \[[`408f024906`](https://github.com/nodejs/node/commit/408f024906)] - **v8**: mark v8.queryObjects() as stable (Joyee Cheung) [#​60957](https://github.com/nodejs/node/pull/60957) ##### Commits - \[[`e61cfdbf50`](https://github.com/nodejs/node/commit/e61cfdbf50)] - **assert**: use a set instead of an array for faster lookup (Ruben Bridgewater) [#​61076](https://github.com/nodejs/node/pull/61076) - \[[`11861084fd`](https://github.com/nodejs/node/commit/11861084fd)] - **assert,util**: improve comparison performance (Ruben Bridgewater) [#​61176](https://github.com/nodejs/node/pull/61176) - \[[`4ef4f759cb`](https://github.com/nodejs/node/commit/4ef4f759cb)] - **assert,util**: fix deep comparing invalid dates skipping properties (Ruben Bridgewater) [#​61076](https://github.com/nodejs/node/pull/61076) - \[[`c8fccd585f`](https://github.com/nodejs/node/commit/c8fccd585f)] - **assert,util**: improve deep comparison performance (Ruben Bridgewater) [#​61076](https://github.com/nodejs/node/pull/61076) - \[[`13661a0123`](https://github.com/nodejs/node/commit/13661a0123)] - **benchmark**: use boolean options in benchmark tests (SeokhunEom) [#​60129](https://github.com/nodejs/node/pull/60129) - \[[`36dead3433`](https://github.com/nodejs/node/commit/36dead3433)] - **benchmark**: allow boolean option values (SeokhunEom) [#​60129](https://github.com/nodejs/node/pull/60129) - \[[`376056eaef`](https://github.com/nodejs/node/commit/376056eaef)] - **benchmark**: add microbench on isInsideNodeModules (Chengzhong Wu) [#​60991](https://github.com/nodejs/node/pull/60991) - \[[`22d3e85b7a`](https://github.com/nodejs/node/commit/22d3e85b7a)] - **benchmark**: fix incorrect base64 input in byteLength benchmark (semimikoh) [#​60841](https://github.com/nodejs/node/pull/60841) - \[[`5016f75522`](https://github.com/nodejs/node/commit/5016f75522)] - **benchmark**: use typescript for import cjs benchmark (Joyee Cheung) [#​60663](https://github.com/nodejs/node/pull/60663) - \[[`012a08f6eb`](https://github.com/nodejs/node/commit/012a08f6eb)] - **buffer**: let Buffer.of use heap (Сковорода Никита Андреевич) [#​60503](https://github.com/nodejs/node/pull/60503) - \[[`65696e42ba`](https://github.com/nodejs/node/commit/65696e42ba)] - **build**: add `--shared-hdr-histogram` configure flag (Antoine du Hamel) [#​61280](https://github.com/nodejs/node/pull/61280) - \[[`6155b8836e`](https://github.com/nodejs/node/commit/6155b8836e)] - **build**: add `--shared-gtest` configure flag (Antoine du Hamel) [#​61279](https://github.com/nodejs/node/pull/61279) - \[[`e80127f49c`](https://github.com/nodejs/node/commit/e80127f49c)] - **build**: expose libplatform symbols in shared libnode (Joyee Cheung) [#​61144](https://github.com/nodejs/node/pull/61144) - \[[`d99805049e`](https://github.com/nodejs/node/commit/d99805049e)] - **build**: fix inconsistent quoting in `Makefile` (Antoine du Hamel) [#​60511](https://github.com/nodejs/node/pull/60511) - \[[`3213de08e8`](https://github.com/nodejs/node/commit/3213de08e8)] - **build**: support building crates (temporal) on windows (沈鸿飞) [#​61163](https://github.com/nodejs/node/pull/61163) - \[[`1ad8788391`](https://github.com/nodejs/node/commit/1ad8788391)] - **build**: remove temporal updater (Chengzhong Wu) [#​61151](https://github.com/nodejs/node/pull/61151) - \[[`e6e25d65be`](https://github.com/nodejs/node/commit/e6e25d65be)] - **build**: add --debug-symbols to build with -g without enabling DCHECKs (Joyee Cheung) [#​61100](https://github.com/nodejs/node/pull/61100) - \[[`7040ec94c8`](https://github.com/nodejs/node/commit/7040ec94c8)] - **build**: update test-wpt-report to use NODE instead of OUT\_NODE (Filip Skokan) [#​61024](https://github.com/nodejs/node/pull/61024) - \[[`990da3518d`](https://github.com/nodejs/node/commit/990da3518d)] - **build**: skip build-ci on actions with a separate test step (Chengzhong Wu) [#​61073](https://github.com/nodejs/node/pull/61073) - \[[`3259e395c9`](https://github.com/nodejs/node/commit/3259e395c9)] - **build**: run embedtest with node\_g when BUILDTYPE=Debug (Chengzhong Wu) [#​60850](https://github.com/nodejs/node/pull/60850) - \[[`af42ca569f`](https://github.com/nodejs/node/commit/af42ca569f)] - **build**: ignore built-in temporal when building with shared lib (Chengzhong Wu) [#​60703](https://github.com/nodejs/node/pull/60703) - \[[`bec7fce07a`](https://github.com/nodejs/node/commit/bec7fce07a)] - **build**: add temporal\_capi gyp (Chengzhong Wu) [#​60703](https://github.com/nodejs/node/pull/60703) - \[[`d2f50047f7`](https://github.com/nodejs/node/commit/d2f50047f7)] - **build**: fix OpenSSL version parsing for OpenSSL < 3 (Richard Lau) [#​60775](https://github.com/nodejs/node/pull/60775) - \[[`91b20c52df`](https://github.com/nodejs/node/commit/91b20c52df)] - **build**: add flag to compile V8 with Temporal support (Antoine du Hamel) [#​60701](https://github.com/nodejs/node/pull/60701) - \[[`0aaed248f0`](https://github.com/nodejs/node/commit/0aaed248f0)] - **build**: add support for Visual Studio 2026 (Michaël Zasso) [#​60727](https://github.com/nodejs/node/pull/60727) - \[[`8f6fada8f1`](https://github.com/nodejs/node/commit/8f6fada8f1)] - **cli**: add --require-module/--no-require-module (Joyee Cheung) [#​60959](https://github.com/nodejs/node/pull/60959) - \[[`bf8e738df4`](https://github.com/nodejs/node/commit/bf8e738df4)] - **cli**: mark --heapsnapshot-near-heap-limit as stable (Joyee Cheung) [#​60956](https://github.com/nodejs/node/pull/60956) - \[[`7930d7a19b`](https://github.com/nodejs/node/commit/7930d7a19b)] - **crypto**: update root certificates to NSS 3.117 (Node.js GitHub Bot) [#​60741](https://github.com/nodejs/node/pull/60741) - \[[`1b15453602`](https://github.com/nodejs/node/commit/1b15453602)] - **deps**: update cjs-module-lexer to 2.2.0 (Node.js GitHub Bot) [#​61271](https://github.com/nodejs/node/pull/61271) - \[[`118fa97c95`](https://github.com/nodejs/node/commit/118fa97c95)] - **deps**: update nbytes to 0.1.2 (Node.js GitHub Bot) [#​61270](https://github.com/nodejs/node/pull/61270) - \[[`9b136db814`](https://github.com/nodejs/node/commit/9b136db814)] - **deps**: update ngtcp2 to 1.19.0 (Node.js GitHub Bot) [#​61156](https://github.com/nodejs/node/pull/61156) - \[[`5635f23a50`](https://github.com/nodejs/node/commit/5635f23a50)] - **deps**: update nghttp3 to 1.14.0 (Node.js GitHub Bot) [#​61187](https://github.com/nodejs/node/pull/61187) - \[[`9ec35c0977`](https://github.com/nodejs/node/commit/9ec35c0977)] - **deps**: update nghttp3 to 1.13.1 (Node.js GitHub Bot) [#​60046](https://github.com/nodejs/node/pull/60046) - \[[`4d7d37f701`](https://github.com/nodejs/node/commit/4d7d37f701)] - **deps**: update timezone to 2025c (Node.js GitHub Bot) [#​61138](https://github.com/nodejs/node/pull/61138) - \[[`2c1e3ab19d`](https://github.com/nodejs/node/commit/2c1e3ab19d)] - **deps**: nghttp2: revert [`7784fa9`](https://github.com/nodejs/node/commit/7784fa979d0b) (Antoine du Hamel) [#​61136](https://github.com/nodejs/node/pull/61136) - \[[`56a6513648`](https://github.com/nodejs/node/commit/56a6513648)] - **deps**: update nghttp2 to 1.68.0 (nodejs-github-bot) [#​61136](https://github.com/nodejs/node/pull/61136) - \[[`f2692c5534`](https://github.com/nodejs/node/commit/f2692c5534)] - **deps**: remove independent temporal (Chengzhong Wu) [#​61072](https://github.com/nodejs/node/pull/61072) - \[[`3acbf3f129`](https://github.com/nodejs/node/commit/3acbf3f129)] - **deps**: apply cargo vendor (Chengzhong Wu) [#​61072](https://github.com/nodejs/node/pull/61072) - \[[`d2759f4805`](https://github.com/nodejs/node/commit/d2759f4805)] - **deps**: add vendor depenency crate (Chengzhong Wu) [#​61072](https://github.com/nodejs/node/pull/61072) - \[[`6330385174`](https://github.com/nodejs/node/commit/6330385174)] - **deps**: update simdjson to 4.2.4 (Node.js GitHub Bot) [#​61056](https://github.com/nodejs/node/pull/61056) - \[[`9835860115`](https://github.com/nodejs/node/commit/9835860115)] - **deps**: update googletest to [`065127f`](https://github.com/nodejs/node/commit/065127f1e4b46c5f14fc73cf8d323c221f9dc68e) (Node.js GitHub Bot) [#​61055](https://github.com/nodejs/node/pull/61055) - \[[`d2e6dff2f9`](https://github.com/nodejs/node/commit/d2e6dff2f9)] - **deps**: brotli: cherry-pick [`e230f47`](https://github.com/nodejs/node/commit/e230f474b87) (liujiahui) [#​61003](https://github.com/nodejs/node/pull/61003) - \[[`27da9ca1c7`](https://github.com/nodejs/node/commit/27da9ca1c7)] - **deps**: upgrade npm to 11.7.0 (npm team) [#​61011](https://github.com/nodejs/node/pull/61011) - \[[`398ba68793`](https://github.com/nodejs/node/commit/398ba68793)] - **deps**: V8: cherry-pick [`72b0e27`](https://github.com/nodejs/node/commit/72b0e27bd936) (pthier) [#​60706](https://github.com/nodejs/node/pull/60706) - \[[`a8ae3b9557`](https://github.com/nodejs/node/commit/a8ae3b9557)] - **deps**: update sqlite to 3.51.1 (Node.js GitHub Bot) [#​60899](https://github.com/nodejs/node/pull/60899) - \[[`4e1edae655`](https://github.com/nodejs/node/commit/4e1edae655)] - **deps**: update zlib to 1.3.1-63d7e16 (Node.js GitHub Bot) [#​60898](https://github.com/nodejs/node/pull/60898) - \[[`49b5954e74`](https://github.com/nodejs/node/commit/49b5954e74)] - **deps**: update corepack to 0.34.5 (Node.js GitHub Bot) [#​60842](https://github.com/nodejs/node/pull/60842) - \[[`6ae415361f`](https://github.com/nodejs/node/commit/6ae415361f)] - **deps**: upgrade npm to 11.6.4 (npm team) [#​60853](https://github.com/nodejs/node/pull/60853) - \[[`3cc857001a`](https://github.com/nodejs/node/commit/3cc857001a)] - **deps**: add temporal\_rs 0.1.0 (Chengzhong Wu) [#​60703](https://github.com/nodejs/node/pull/60703) - \[[`660788cd4b`](https://github.com/nodejs/node/commit/660788cd4b)] - **deps**: update sqlite to 3.51.0 (Node.js GitHub Bot) [#​60614](https://github.com/nodejs/node/pull/60614) - \[[`c6d7a7b7cd`](https://github.com/nodejs/node/commit/c6d7a7b7cd)] - **deps**: upgrade npm to 11.6.3 (npm team) [#​60785](https://github.com/nodejs/node/pull/60785) - \[[`062e15bddf`](https://github.com/nodejs/node/commit/062e15bddf)] - **deps**: update brotli to 1.2.0 (Node.js GitHub Bot) [#​60540](https://github.com/nodejs/node/pull/60540) - \[[`db053988db`](https://github.com/nodejs/node/commit/db053988db)] - **deps**: update simdjson to 4.2.2 (Node.js GitHub Bot) [#​60740](https://github.com/nodejs/node/pull/60740) - \[[`ea5deab531`](https://github.com/nodejs/node/commit/ea5deab531)] - **deps**: update googletest to [`1b96fa1`](https://github.com/nodejs/node/commit/1b96fa13f549387b7549cc89e1a785cf143a1a50) (Node.js GitHub Bot) [#​60739](https://github.com/nodejs/node/pull/60739) - \[[`c23f40cca4`](https://github.com/nodejs/node/commit/c23f40cca4)] - **deps**: update minimatch to 10.1.1 (Node.js GitHub Bot) [#​60543](https://github.com/nodejs/node/pull/60543) - \[[`479c9290b9`](https://github.com/nodejs/node/commit/479c9290b9)] - **deps**: update corepack to 0.34.4 (Node.js GitHub Bot) [#​60643](https://github.com/nodejs/node/pull/60643) - \[[`e42911eddd`](https://github.com/nodejs/node/commit/e42911eddd)] - **deps**: update inspector\_protocol to [`1b1bcbb`](https://github.com/nodejs/node/commit/1b1bcbbe060e8c8cd8704f00f78978c50991) (Node.js GitHub Bot) [#​60705](https://github.com/nodejs/node/pull/60705) - \[[`d908c83330`](https://github.com/nodejs/node/commit/d908c83330)] - **deps**: update cjs-module-lexer to 2.1.1 (Node.js GitHub Bot) [#​60646](https://github.com/nodejs/node/pull/60646) - \[[`96530a4ca6`](https://github.com/nodejs/node/commit/96530a4ca6)] - **deps**: update simdjson to 4.2.1 (Node.js GitHub Bot) [#​60644](https://github.com/nodejs/node/pull/60644) - \[[`6b0926ef20`](https://github.com/nodejs/node/commit/6b0926ef20)] - **deps,src**: prepare for cpplint update (Michaël Zasso) [#​60901](https://github.com/nodejs/node/pull/60901) - \[[`5ed71efa3e`](https://github.com/nodejs/node/commit/5ed71efa3e)] - **doc**: fix v25 changelog after security release (Marco Ippolito) [#​61371](https://github.com/nodejs/node/pull/61371) - \[[`c2791069a2`](https://github.com/nodejs/node/commit/c2791069a2)] - **doc**: correct description of `error.stack` accessor behavior (René) [#​61090](https://github.com/nodejs/node/pull/61090) - \[[`134780c035`](https://github.com/nodejs/node/commit/134780c035)] - **doc**: add documentation for process.traceProcessWarnings (Alireza Ebrahimkhani) [#​53641](https://github.com/nodejs/node/pull/53641) - \[[`3b08efcebb`](https://github.com/nodejs/node/commit/3b08efcebb)] - **doc**: add sqlite session disposal method (René) [#​61273](https://github.com/nodejs/node/pull/61273) - \[[`ec1847a097`](https://github.com/nodejs/node/commit/ec1847a097)] - **doc**: fix filename typo (Hardanish Singh) [#​61297](https://github.com/nodejs/node/pull/61297) - \[[`2c651ce460`](https://github.com/nodejs/node/commit/2c651ce460)] - **doc**: fix typos and grammar in `BUILDING.md` & `onboarding.md` (Hardanish Singh) [#​61267](https://github.com/nodejs/node/pull/61267) - \[[`28fe6ea4a8`](https://github.com/nodejs/node/commit/28fe6ea4a8)] - **doc**: mention --newVersion release script (Rafael Gonzaga) [#​61255](https://github.com/nodejs/node/pull/61255) - \[[`2fb35d897d`](https://github.com/nodejs/node/commit/2fb35d897d)] - **doc**: correct typo in BUILDING doc (Mike McCready) [#​61261](https://github.com/nodejs/node/pull/61261) - \[[`8dc2501a25`](https://github.com/nodejs/node/commit/8dc2501a25)] - **doc**: correct typo in api contributing doc (Mike McCready) [#​61260](https://github.com/nodejs/node/pull/61260) - \[[`69e357a9d4`](https://github.com/nodejs/node/commit/69e357a9d4)] - **doc**: add MR-URL requirement for security backports (Rafael Gonzaga) [#​61256](https://github.com/nodejs/node/pull/61256) - \[[`73326ae103`](https://github.com/nodejs/node/commit/73326ae103)] - **doc**: add reusePort error behavior to net module (mag123c) [#​61250](https://github.com/nodejs/node/pull/61250) - \[[`67fbf4d371`](https://github.com/nodejs/node/commit/67fbf4d371)] - **doc**: note corepack package removal in distribution doc (Mike McCready) [#​61207](https://github.com/nodejs/node/pull/61207) - \[[`0792859e49`](https://github.com/nodejs/node/commit/0792859e49)] - **doc**: fix tls.connect() timeout documentation (Azad Gupta) [#​61079](https://github.com/nodejs/node/pull/61079) - \[[`72f42b9985`](https://github.com/nodejs/node/commit/72f42b9985)] - **doc**: missing `passed`, `error` and `passed` properties on `TestContext` (Xavier Stouder) [#​61185](https://github.com/nodejs/node/pull/61185) - \[[`f418fcc635`](https://github.com/nodejs/node/commit/f418fcc635)] - **doc**: clarify threat model for application-level API exposure (Rafael Gonzaga) [#​61184](https://github.com/nodejs/node/pull/61184) - \[[`bd4710769a`](https://github.com/nodejs/node/commit/bd4710769a)] - **doc**: correct options for net.Socket class and socket.connect (Xavier Stouder) [#​61179](https://github.com/nodejs/node/pull/61179) - \[[`387b65ca08`](https://github.com/nodejs/node/commit/387b65ca08)] - **doc**: document error event on readline InterfaceConstructor (Xavier Stouder) [#​61170](https://github.com/nodejs/node/pull/61170) - \[[`6d886e10e4`](https://github.com/nodejs/node/commit/6d886e10e4)] - **doc**: add a smooth scrolling effect to the sidebar (btea) [#​59007](https://github.com/nodejs/node/pull/59007) - \[[`23fb3a64ec`](https://github.com/nodejs/node/commit/23fb3a64ec)] - **doc**: fix test settime docs (Efe) [#​61117](https://github.com/nodejs/node/pull/61117) - \[[`808eb437ee`](https://github.com/nodejs/node/commit/808eb437ee)] - **doc**: correct invalid collaborator profile (JJ) [#​61091](https://github.com/nodejs/node/pull/61091) - \[[`5e8eb5fe6c`](https://github.com/nodejs/node/commit/5e8eb5fe6c)] - **doc**: add a tip about developer mode on Windows (Joyee Cheung) [#​61112](https://github.com/nodejs/node/pull/61112) - \[[`a4248776da`](https://github.com/nodejs/node/commit/a4248776da)] - **doc**: exclude compile-time flag features from security policy (Matteo Collina) [#​61109](https://github.com/nodejs/node/pull/61109) - \[[`44f61dfb92`](https://github.com/nodejs/node/commit/44f61dfb92)] - **doc**: add [@​avivkeller](https://github.com/avivkeller) to collaborators (Aviv Keller) [#​61115](https://github.com/nodejs/node/pull/61115) - \[[`08b5347b41`](https://github.com/nodejs/node/commit/08b5347b41)] - **doc**: warn about short GCM tags visibly (Tobias Nießen) [#​61082](https://github.com/nodejs/node/pull/61082) - \[[`45903ee884`](https://github.com/nodejs/node/commit/45903ee884)] - **doc**: add gurgunday to collaborators (Gürgün Dayıoğlu) [#​61094](https://github.com/nodejs/node/pull/61094) - \[[`ce5d6e22ef`](https://github.com/nodejs/node/commit/ce5d6e22ef)] - **doc**: update MDN links (Livia Medeiros) [#​61062](https://github.com/nodejs/node/pull/61062) - \[[`657cbd4af3`](https://github.com/nodejs/node/commit/657cbd4af3)] - **doc**: mark sync module hooks as release candidate (Joyee Cheung) [#​60960](https://github.com/nodejs/node/pull/60960) - \[[`a46368a82b`](https://github.com/nodejs/node/commit/a46368a82b)] - **doc**: reorganize docs of module customization hooks (Joyee Cheung) [#​60960](https://github.com/nodejs/node/pull/60960) - \[[`9851278e99`](https://github.com/nodejs/node/commit/9851278e99)] - **doc**: mark crypto.hash as stable (Joyee Cheung) [#​60994](https://github.com/nodejs/node/pull/60994) - \[[`77faa14d99`](https://github.com/nodejs/node/commit/77faa14d99)] - **doc**: mark --build-snapshot and --build-snapshot-config as stable (Joyee Cheung) [#​60954](https://github.com/nodejs/node/pull/60954) - \[[`6d5f9ffc6d`](https://github.com/nodejs/node/commit/6d5f9ffc6d)] - **doc**: add File modes cross-references in fs methods (Mohit Raj Saxena) [#​60286](https://github.com/nodejs/node/pull/60286) - \[[`521b25a27d`](https://github.com/nodejs/node/commit/521b25a27d)] - **doc**: add missing `zstd` to mjs example of zlib (Deokjin Kim) [#​60915](https://github.com/nodejs/node/pull/60915) - \[[`9a9bed9b3a`](https://github.com/nodejs/node/commit/9a9bed9b3a)] - **doc**: clarify fileURLToPath security considerations (Rafael Gonzaga) [#​60887](https://github.com/nodejs/node/pull/60887) - \[[`bebb4731b1`](https://github.com/nodejs/node/commit/bebb4731b1)] - **doc**: show the use of string expressions in the SQLTagStore example (schliepa) [#​60873](https://github.com/nodejs/node/pull/60873) - \[[`f247c24cb0`](https://github.com/nodejs/node/commit/f247c24cb0)] - **doc**: replace column with columnNumber in example of `util.getCallSites` (Deokjin Kim) [#​60881](https://github.com/nodejs/node/pull/60881) - \[[`487c1080aa`](https://github.com/nodejs/node/commit/487c1080aa)] - **doc**: correct spelling in BUILDING.md (Rich Trott) [#​60875](https://github.com/nodejs/node/pull/60875) - \[[`5751e3f736`](https://github.com/nodejs/node/commit/5751e3f736)] - **doc**: update debuglog examples to use 'foo-bar' instead of 'foo' (xiaoyao) [#​60867](https://github.com/nodejs/node/pull/60867) - \[[`ec8336b7a0`](https://github.com/nodejs/node/commit/ec8336b7a0)] - **doc**: correct 'event handle' to 'event handler' in Utf8Stream drop event (Riddhi) [#​60692](https://github.com/nodejs/node/pull/60692) - \[[`95ef052751`](https://github.com/nodejs/node/commit/95ef052751)] - **doc**: fix typos in changelogs (Rich Trott) [#​60855](https://github.com/nodejs/node/pull/60855) - \[[`a10b3130c6`](https://github.com/nodejs/node/commit/a10b3130c6)] - **doc**: mark module.register as active development (Chengzhong Wu) [#​60849](https://github.com/nodejs/node/pull/60849) - \[[`bfe8c62a2d`](https://github.com/nodejs/node/commit/bfe8c62a2d)] - **doc**: add fullName property to SuiteContext (PaulyBearCoding) [#​60762](https://github.com/nodejs/node/pull/60762) - \[[`2799f594e3`](https://github.com/nodejs/node/commit/2799f594e3)] - **doc**: add additional codemods for deprecation (Augustin Mauroy) [#​60811](https://github.com/nodejs/node/pull/60811) - \[[`2b51d5d113`](https://github.com/nodejs/node/commit/2b51d5d113)] - **doc**: keep sidebar module visible when navigating docs (Botato) [#​60410](https://github.com/nodejs/node/pull/60410) - \[[`2fa9917b07`](https://github.com/nodejs/node/commit/2fa9917b07)] - **doc**: fix webstorage config file property (Marco Ippolito) [#​60798](https://github.com/nodejs/node/pull/60798) - \[[`a0691d6eb6`](https://github.com/nodejs/node/commit/a0691d6eb6)] - **doc**: correct concurrency wording in test() documentation (Azad Gupta) [#​60773](https://github.com/nodejs/node/pull/60773) - \[[`d26842c523`](https://github.com/nodejs/node/commit/d26842c523)] - **doc**: clarify that CQ only picks up MRs targeting `main` (René) [#​60731](https://github.com/nodejs/node/pull/60731) - \[[`3e84428ffe`](https://github.com/nodejs/node/commit/3e84428ffe)] - **doc**: clarify license section and add contributor note (KaleruMadhu) [#​60590](https://github.com/nodejs/node/pull/60590) - \[[`745ea1d61f`](https://github.com/nodejs/node/commit/745ea1d61f)] - **doc**: correct and expand documentation for SQLTagStore (René) [#​60200](https://github.com/nodejs/node/pull/60200) - \[[`a442c27c0a`](https://github.com/nodejs/node/commit/a442c27c0a)] - **doc**: correct tls ALPNProtocols types (René) [#​60143](https://github.com/nodejs/node/pull/60143) - \[[`d90001a579`](https://github.com/nodejs/node/commit/d90001a579)] - **doc**: remove mention of SMS 2FA (Antoine du Hamel) [#​60707](https://github.com/nodejs/node/pull/60707) - \[[`7525a3fa4b`](https://github.com/nodejs/node/commit/7525a3fa4b)] - **doc**: add info about renamed flag in `cli.md` (Antoine du Hamel) [#​60690](https://github.com/nodejs/node/pull/60690) - \[[`db0a86897b`](https://github.com/nodejs/node/commit/db0a86897b)] - **doc**: fix incorrect slh-dsa oids in crypto.md (Artsiom Malakhau) [#​60681](https://github.com/nodejs/node/pull/60681) - \[[`e5ede89a94`](https://github.com/nodejs/node/commit/e5ede89a94)] - **doc**: `domain.add()` does not accept timer objects (René) [#​60675](https://github.com/nodejs/node/pull/60675) - \[[`36ba9d99ba`](https://github.com/nodejs/node/commit/36ba9d99ba)] - ***Revert*** "**doc, assert**: correct order of changes entries" (Michaël Zasso) [#​60774](https://github.com/nodejs/node/pull/60774) - \[[`e6e5ed7665`](https://github.com/nodejs/node/commit/e6e5ed7665)] - **doc,test**: add documentation and test on how to use addons in SEA (Joyee Cheung) [#​59582](https://github.com/nodejs/node/pull/59582) - \[[`f12eb28489`](https://github.com/nodejs/node/commit/f12eb28489)] - **esm**: avoid throw when module specifier is not url (Craig Macomber (Microsoft)) [#​61000](https://github.com/nodejs/node/pull/61000) - \[[`a7b92e0677`](https://github.com/nodejs/node/commit/a7b92e0677)] - **esm**: improve error messages for ambiguous module syntax (mag123c) [#​60376](https://github.com/nodejs/node/pull/60376) - \[[`6da85b576b`](https://github.com/nodejs/node/commit/6da85b576b)] - **events**: remove eventtarget custom inspect branding (Efe) [#​61128](https://github.com/nodejs/node/pull/61128) - \[[`aefbe4ba47`](https://github.com/nodejs/node/commit/aefbe4ba47)] - **(SEMVER-MINOR)** **events**: repurpose `events.listenerCount()` to accept EventTargets (René) [#​60214](https://github.com/nodejs/node/pull/60214) - \[[`dc19409f36`](https://github.com/nodejs/node/commit/dc19409f36)] - **fs**: validate statfs path (Efe) [#​61230](https://github.com/nodejs/node/pull/61230) - \[[`206e353a4a`](https://github.com/nodejs/node/commit/206e353a4a)] - **fs**: fix rmSync to handle non-ASCII characters (Yeaseen) [#​61108](https://github.com/nodejs/node/pull/61108) - \[[`feee377b83`](https://github.com/nodejs/node/commit/feee377b83)] - **fs**: remove broken symlinks in rmSync (sangwook) [#​61040](https://github.com/nodejs/node/pull/61040) - \[[`6b577c80bb`](https://github.com/nodejs/node/commit/6b577c80bb)] - **fs**: detect dot files when using globstar (Robin van Wijngaarden) [#​61012](https://github.com/nodejs/node/pull/61012) - \[[`8470e2993b`](https://github.com/nodejs/node/commit/8470e2993b)] - **(SEMVER-MINOR)** **http**: add http.setGlobalProxyFromEnv() (Joyee Cheung) [#​60953](https://github.com/nodejs/node/pull/60953) - \[[`a731463a60`](https://github.com/nodejs/node/commit/a731463a60)] - **http,https**: fix double ERR\_PROXY\_TUNNEL emission (Shima Ryuhei) [#​60699](https://github.com/nodejs/node/pull/60699) - \[[`b2736646b6`](https://github.com/nodejs/node/commit/b2736646b6)] - **http2,zlib**: prefer `call()` over `apply()` if argument list is not array (Livia Medeiros) [#​60834](https://github.com/nodejs/node/pull/60834) - \[[`86bce15e96`](https://github.com/nodejs/node/commit/86bce15e96)] - **lib**: implement all 1-byte encodings in js (Сковорода Никита Андреевич) [#​61093](https://github.com/nodejs/node/pull/61093) - \[[`8156738b97`](https://github.com/nodejs/node/commit/8156738b97)] - **lib**: gbk decoder is gb18030 decoder per spec (Сковорода Никита Андреевич) [#​61099](https://github.com/nodejs/node/pull/61099) - \[[`d8f1dea0d3`](https://github.com/nodejs/node/commit/d8f1dea0d3)] - **lib**: enforce use of `URLParse` (Antoine du Hamel) [#​61016](https://github.com/nodejs/node/pull/61016) - \[[`9023b3f9ce`](https://github.com/nodejs/node/commit/9023b3f9ce)] - **lib**: add lint rules for reflective function calls (Antoine du Hamel) [#​60825](https://github.com/nodejs/node/pull/60825) - \[[`2979113136`](https://github.com/nodejs/node/commit/2979113136)] - **lib**: prefer `call()` over `apply()` if argument list is not array (Livia Medeiros) [#​60796](https://github.com/nodejs/node/pull/60796) - \[[`2b36433f4a`](https://github.com/nodejs/node/commit/2b36433f4a)] - **lib**: add support for readable byte streams to .toWeb() (Hans Klunder) [#​58664](https://github.com/nodejs/node/pull/58664) - \[[`1a0c3dddb9`](https://github.com/nodejs/node/commit/1a0c3dddb9)] - **lib**: use `FastBuffer` for empty buffer allocation (Gürgün Dayıoğlu) [#​60558](https://github.com/nodejs/node/pull/60558) - \[[`9209cf67a4`](https://github.com/nodejs/node/commit/9209cf67a4)] - **lib**: refactor JWK import PQC support check (Filip Skokan) [#​60586](https://github.com/nodejs/node/pull/60586) - \[[`42666c241a`](https://github.com/nodejs/node/commit/42666c241a)] - **lib,src**: isInsideNodeModules should test on the first non-internal frame (Chengzhong Wu) [#​60991](https://github.com/nodejs/node/pull/60991) - \[[`4a22647609`](https://github.com/nodejs/node/commit/4a22647609)] - **lib,src,test**: fix tests without SQLite (Antoine du Hamel) [#​60906](https://github.com/nodejs/node/pull/60906) - \[[`24795530bb`](https://github.com/nodejs/node/commit/24795530bb)] - **lib,test**: enforce use of `assert.fail` via a lint rule (Antoine du Hamel) [#​61004](https://github.com/nodejs/node/pull/61004) - \[[`1977348ae0`](https://github.com/nodejs/node/commit/1977348ae0)] - **lib,test**: fix jsdoc comments (Michaël Zasso) [#​60870](https://github.com/nodejs/node/pull/60870) - \[[`3549cf14ce`](https://github.com/nodejs/node/commit/3549cf14ce)] - **meta**: remove t.js (RafaelGSS) [#​61369](https://github.com/nodejs/node/pull/61369) - \[[`5cf54abad7`](https://github.com/nodejs/node/commit/5cf54abad7)] - **meta**: bump step-security/harden-runner from 2.13.2 to 2.14.0 (dependabot\[bot]) [#​61245](https://github.com/nodejs/node/pull/61245) - \[[`b57bab72e1`](https://github.com/nodejs/node/commit/b57bab72e1)] - **meta**: bump actions/setup-node from 6.0.0 to 6.1.0 (dependabot\[bot]) [#​61244](https://github.com/nodejs/node/pull/61244) - \[[`42117b5069`](https://github.com/nodejs/node/commit/42117b5069)] - **meta**: bump actions/cache from 4.3.0 to 5.0.1 (dependabot\[bot]) [#​61243](https://github.com/nodejs/node/pull/61243) - \[[`fee3edd38e`](https://github.com/nodejs/node/commit/fee3edd38e)] - **meta**: bump actions/download-artifact from 6.0.0 to 7.0.0 (dependabot\[bot]) [#​61242](https://github.com/nodejs/node/pull/61242) - \[[`a96c3160ff`](https://github.com/nodejs/node/commit/a96c3160ff)] - **meta**: bump github/codeql-action from 4.31.6 to 4.31.9 (dependabot\[bot]) [#​61241](https://github.com/nodejs/node/pull/61241) - \[[`b4233e18a9`](https://github.com/nodejs/node/commit/b4233e18a9)] - **meta**: bump codecov/codecov-action from 5.5.1 to 5.5.2 (dependabot\[bot]) [#​61240](https://github.com/nodejs/node/pull/61240) - \[[`c5d7dd3731`](https://github.com/nodejs/node/commit/c5d7dd3731)] - **meta**: bump actions/checkout from 6.0.0 to 6.0.1 (dependabot\[bot]) [#​61239](https://github.com/nodejs/node/pull/61239) - \[[`d83cec1534`](https://github.com/nodejs/node/commit/d83cec1534)] - **meta**: bump actions/upload-artifact from 5.0.0 to 6.0.0 (dependabot\[bot]) [#​61238](https://github.com/nodejs/node/pull/61238) - \[[`d4bfd26f06`](https://github.com/nodejs/node/commit/d4bfd26f06)] - **meta**: bump peter-evans/create-pull-request from 7.0.9 to 8.0.0 (dependabot\[bot]) [#​61237](https://github.com/nodejs/node/pull/61237) - \[[`9246c6ab12`](https://github.com/nodejs/node/commit/9246c6ab12)] - **meta**: bump cachix/install-nix-action from 31.8.4 to 31.9.0 (dependabot\[bot]) [#​61236](https://github.com/nodejs/node/pull/61236) - \[[`1b378cfd5e`](https://github.com/nodejs/node/commit/1b378cfd5e)] - **meta**: move lukekarrys to emeritus (Node.js GitHub Bot) [#​60985](https://github.com/nodejs/node/pull/60985) - \[[`f3bfa68d78`](https://github.com/nodejs/node/commit/f3bfa68d78)] - **meta**: bump actions/setup-python from 6.0.0 to 6.1.0 (dependabot\[bot]) [#​60927](https://github.com/nodejs/node/pull/60927) - \[[`f1935d19e9`](https://github.com/nodejs/node/commit/f1935d19e9)] - **meta**: bump github/codeql-action from 4.31.3 to 4.31.6 (dependabot\[bot]) [#​60926](https://github.com/nodejs/node/pull/60926) - \[[`0a4a4c090d`](https://github.com/nodejs/node/commit/0a4a4c090d)] - **meta**: bump actions/checkout from 5.0.1 to 6.0.0 (dependabot\[bot]) [#​60925](https://github.com/nodejs/node/pull/60925) - \[[`d76f95117b`](https://github.com/nodejs/node/commit/d76f95117b)] - **meta**: bump peter-evans/create-pull-request from 7.0.8 to 7.0.9 (dependabot\[bot]) [#​60924](https://github.com/nodejs/node/pull/60924) - \[[`4dd153f8c3`](https://github.com/nodejs/node/commit/4dd153f8c3)] - **meta**: bump github/codeql-action from 4.31.2 to 4.31.3 (dependabot\[bot]) [#​60770](https://github.com/nodejs/node/pull/60770) - \[[`a90bf3ece1`](https://github.com/nodejs/node/commit/a90bf3ece1)] - **meta**: bump step-security/harden-runner from 2.13.1 to 2.13.2 (dependabot\[bot]) [#​60769](https://github.com/nodejs/node/pull/60769) - \[[`ecc945d7ec`](https://github.com/nodejs/node/commit/ecc945d7ec)] - **meta**: bump cachix/install-nix-action from 31.8.2 to 31.8.4 (dependabot\[bot]) [#​60768](https://github.com/nodejs/node/pull/60768) - \[[`5578327a4f`](https://github.com/nodejs/node/commit/5578327a4f)] - **meta**: bump actions/checkout from 5.0.0 to 5.0.1 (dependabot\[bot]) [#​60767](https://github.com/nodejs/node/pull/60767) - \[[`24384d7438`](https://github.com/nodejs/node/commit/24384d7438)] - **meta**: add Renegade334 to collaborators (Renegade334) [#​60714](https://github.com/nodejs/node/pull/60714) - \[[`2d560e42fa`](https://github.com/nodejs/node/commit/2d560e42fa)] - **module**: fix sync resolve hooks for require with node: prefixes (Joyee Cheung) [#​61088](https://github.com/nodejs/node/pull/61088) - \[[`15c3655b9a`](https://github.com/nodejs/node/commit/15c3655b9a)] - **module**: preserve URL in the parent created by createRequire() (Joyee Cheung) [#​60974](https://github.com/nodejs/node/pull/60974) - \[[`c1acef6d0f`](https://github.com/nodejs/node/commit/c1acef6d0f)] - **module**: mark require(esm) as stable (Joyee Cheung) [#​60959](https://github.com/nodejs/node/pull/60959) - \[[`2e39f3ed6b`](https://github.com/nodejs/node/commit/2e39f3ed6b)] - **module**: mark module compile cache as stable (Joyee Cheung) [#​60971](https://github.com/nodejs/node/pull/60971) - \[[`e6a05cfb4f`](https://github.com/nodejs/node/commit/e6a05cfb4f)] - **(SEMVER-MINOR)** **module**: allow subpath imports that start with `#/` (Jan Martin) [#​60864](https://github.com/nodejs/node/pull/60864) - \[[`1983cd6692`](https://github.com/nodejs/node/commit/1983cd6692)] - **node-api**: add napi\_set\_prototype (siaeyy) [#​60711](https://github.com/nodejs/node/pull/60711) - \[[`350b0ea895`](https://github.com/nodejs/node/commit/350b0ea895)] - **node-api**: fix data race and use-after-free in napi\_threadsafe\_function (Mika Fischer) [#​55877](https://github.com/nodejs/node/pull/55877) - \[[`cb3f79273a`](https://github.com/nodejs/node/commit/cb3f79273a)] - **node-api**: add support for Float16Array (Ilyas Shabi) [#​58879](https://github.com/nodejs/node/pull/58879) - \[[`bdf359b3d1`](https://github.com/nodejs/node/commit/bdf359b3d1)] - **node-api**: support SharedArrayBuffer in napi\_create\_dataview (Kevin Eady) [#​60473](https://github.com/nodejs/node/pull/60473) - \[[`3c5dc03f06`](https://github.com/nodejs/node/commit/3c5dc03f06)] - **os**: freeze signals constant (Xavier Stouder) [#​61038](https://github.com/nodejs/node/pull/61038) - \[[`ca5c4c9752`](https://github.com/nodejs/node/commit/ca5c4c9752)] - **process**: improve process.cwd() error message (TseIan) [#​61164](https://github.com/nodejs/node/pull/61164) - \[[`fa927c31da`](https://github.com/nodejs/node/commit/fa927c31da)] - **(SEMVER-MINOR)** **process**: preserve AsyncLocalStorage in queueMicrotask only when needed (Gürgün Dayıoğlu) [#​60913](https://github.com/nodejs/node/pull/60913) - \[[`571cec49e0`](https://github.com/nodejs/node/commit/571cec49e0)] - **repl**: fix getters triggering side effects during completion (Dario Piotrowicz) [#​61043](https://github.com/nodejs/node/pull/61043) - \[[`377aed336c`](https://github.com/nodejs/node/commit/377aed336c)] - **repl**: tab completion targets `<class>` instead of `new <class>` (Đỗ Trọng Hải) [#​60319](https://github.com/nodejs/node/pull/60319) - \[[`cb8bc3466d`](https://github.com/nodejs/node/commit/cb8bc3466d)] - **sqlite**: improve error messages for tag store (Pramit Sharma) [#​61096](https://github.com/nodejs/node/pull/61096) - \[[`324ea4fa2d`](https://github.com/nodejs/node/commit/324ea4fa2d)] - **sqlite**: make `SQLTagStore.prototype.size` a getter (René) [#​60246](https://github.com/nodejs/node/pull/60246) - \[[`874c50296d`](https://github.com/nodejs/node/commit/874c50296d)] - **src**: dump snapshot source with node:generate\_default\_snapshot\_source (Joyee Cheung) [#​61101](https://github.com/nodejs/node/pull/61101) - \[[`0692b4f014`](https://github.com/nodejs/node/commit/0692b4f014)] - **src**: improve StringBytes::Encode perf on ASCII (Сковорода Никита Андреевич) [#​61119](https://github.com/nodejs/node/pull/61119) - \[[`754271a1f0`](https://github.com/nodejs/node/commit/754271a1f0)] - **src**: add HandleScope to edge loop in heap\_utils (Mert Can Altin) [#​60885](https://github.com/nodejs/node/pull/60885) - \[[`8f46bd9352`](https://github.com/nodejs/node/commit/8f46bd9352)] - **src**: remove redundant CHECK (Tobias Nießen) [#​61130](https://github.com/nodejs/node/pull/61130) - \[[`5e6ffd9aa0`](https://github.com/nodejs/node/commit/5e6ffd9aa0)] - **src**: remove unused private field in `SQLTagStore` (Michaël Zasso) [#​61027](https://github.com/nodejs/node/pull/61027) - \[[`550e8a7a69`](https://github.com/nodejs/node/commit/550e8a7a69)] - **src**: implement Windows-1252 encoding support and update related tests (Mert Can Altin) [#​60893](https://github.com/nodejs/node/pull/60893) - \[[`3f9c0e07b4`](https://github.com/nodejs/node/commit/3f9c0e07b4)] - **src**: fix off-thread cert loading in bundled cert mode (Joyee Cheung) [#​60764](https://github.com/nodejs/node/pull/60764) - \[[`7eaf815341`](https://github.com/nodejs/node/commit/7eaf815341)] - **src**: handle DER decoding errors from system certificates (Joyee Cheung) [#​60787](https://github.com/nodejs/node/pull/60787) - \[[`6e76cec44a`](https://github.com/nodejs/node/commit/6e76cec44a)] - **src**: use static\_cast instead of C-style cast (Michaël Zasso) [#​60868](https://github.com/nodejs/node/pull/60868) - \[[`103e55487e`](https://github.com/nodejs/node/commit/103e55487e)] - **src**: handle indexed properties in `process.env` (Michaël Zasso) [#​60826](https://github.com/nodejs/node/pull/60826) - \[[`83d1f41752`](https://github.com/nodejs/node/commit/83d1f41752)] - **src**: simply uint32 to string as it must not fail (Chengzhong Wu) [#​60846](https://github.com/nodejs/node/pull/60846) - \[[`2dfdc6f01e`](https://github.com/nodejs/node/commit/2dfdc6f01e)] - **src**: mark unused private field as such (Michaël Zasso) [#​60802](https://github.com/nodejs/node/pull/60802) - \[[`920f02539e`](https://github.com/nodejs/node/commit/920f02539e)] - **src**: implicitly enable namespace in config (Marco Ippolito) [#​60798](https://github.com/nodejs/node/pull/60798) - \[[`47c5bd9b7c`](https://github.com/nodejs/node/commit/47c5bd9b7c)] - **src**: add permission flag to config file (Marco Ippolito) [#​60798](https://github.com/nodejs/node/pull/60798) - \[[`d9df3f710d`](https://github.com/nodejs/node/commit/d9df3f710d)] - **src**: add test flag to config file (Marco Ippolito) [#​60798](https://github.com/nodejs/node/pull/60798) - \[[`831256cb92`](https://github.com/nodejs/node/commit/831256cb92)] - **src**: rename config file testRunner to test (Marco Ippolito) [#​60798](https://github.com/nodejs/node/pull/60798) - \[[`6c2b75ba87`](https://github.com/nodejs/node/commit/6c2b75ba87)] - **src**: split inspector protocol domains files (Chengzhong Wu) [#​60754](https://github.com/nodejs/node/pull/60754) - \[[`51cf032a5e`](https://github.com/nodejs/node/commit/51cf032a5e)] - **src**: add permission support to config file (Marco Ippolito) [#​60746](https://github.com/nodejs/node/pull/60746) - \[[`413db7c635`](https://github.com/nodejs/node/commit/413db7c635)] - **src**: build v8 tick processor as built-in source text modules (Joyee Cheung) [#​60518](https://github.com/nodejs/node/pull/60518) - \[[`428d24acf5`](https://github.com/nodejs/node/commit/428d24acf5)] - **src,permission**: fix permission.has on empty param (Rafael Gonzaga) [#​60674](https://github.com/nodejs/node/pull/60674) - \[[`a60aa72a87`](https://github.com/nodejs/node/commit/a60aa72a87)] - **src,permission**: add debug log on is\_tree\_granted (Rafael Gonzaga) [#​60668](https://github.com/nodejs/node/pull/60668) - \[[`bd0942f4f5`](https://github.com/nodejs/node/commit/bd0942f4f5)] - **(SEMVER-MINOR)** **stream**: do not pass `readable.compose()` output via `Readable.from()` (René) [#​60907](https://github.com/nodejs/node/pull/60907) - \[[`90c12a252a`](https://github.com/nodejs/node/commit/90c12a252a)] - **stream**: fix isErrored/isWritable for WritableStreams (René) [#​60905](https://github.com/nodejs/node/pull/60905) - \[[`9ac774c15b`](https://github.com/nodejs/node/commit/9ac774c15b)] - **test**: asserts that import.meta.resolve invokes sync loader hooks (Chengzhong Wu) [#​61158](https://github.com/nodejs/node/pull/61158) - \[[`c08afc5712`](https://github.com/nodejs/node/commit/c08afc5712)] - **test**: check util.parseArgs argv parsing with actual process execution (René) [#​61089](https://github.com/nodejs/node/pull/61089) - \[[`182f2e4b5a`](https://github.com/nodejs/node/commit/182f2e4b5a)] - **test**: update WPT for urlpattern to [`a2e15ad`](https://github.com/nodejs/node/commit/a2e15ad405) (Node.js GitHub Bot) [#​61134](https://github.com/nodejs/node/pull/61134) - \[[`9f7cc779f5`](https://github.com/nodejs/node/commit/9f7cc779f5)] - **test**: make buffer sizes 32bit-aware in test-internal-util-construct-sab (René) [#​61026](https://github.com/nodejs/node/pull/61026) - \[[`c6a8234963`](https://github.com/nodejs/node/commit/c6a8234963)] - **test**: remove unneccessary repl magic\_mode tests (Dario Piotrowicz) [#​61053](https://github.com/nodejs/node/pull/61053) - \[[`fa2fe0930f`](https://github.com/nodejs/node/commit/fa2fe0930f)] - **test**: skip sea tests on riscv64 (Stewart X Addison) [#​61111](https://github.com/nodejs/node/pull/61111) - \[[`b209f6ba19`](https://github.com/nodejs/node/commit/b209f6ba19)] - **test**: simplify `test-cli-node-options-docs` (Antoine du Hamel) [#​61006](https://github.com/nodejs/node/pull/61006) - \[[`c9153c7d4f`](https://github.com/nodejs/node/commit/c9153c7d4f)] - **test**: mark stringbytes-external-max flaky on AIX (Stewart X Addison) [#​60995](https://github.com/nodejs/node/pull/60995) - \[[`2cbddfefb7`](https://github.com/nodejs/node/commit/2cbddfefb7)] - **test**: update test426 fixtures (Rich Trott) [#​60982](https://github.com/nodejs/node/pull/60982) - \[[`c7190e6876`](https://github.com/nodejs/node/commit/c7190e6876)] - **test**: update WPT for urlpattern to [`aed1f3d`](https://github.com/nodejs/node/commit/aed1f3d244) (Node.js GitHub Bot) [#​60642](https://github.com/nodejs/node/pull/60642) - \[[`92649e2873`](https://github.com/nodejs/node/commit/92649e2873)] - **test**: deflake `test-repl-paste-big-data` (Livia Medeiros) [#​60975](https://github.com/nodejs/node/pull/60975) - \[[`e4bc345442`](https://github.com/nodejs/node/commit/e4bc345442)] - **test**: skip tests not passing without `NODE_OPTIONS` support (Antoine du Hamel) [#​60912](https://github.com/nodejs/node/pull/60912) - \[[`63299a47ec`](https://github.com/nodejs/node/commit/63299a47ec)] - **test**: improve config-file permission test coverage (Rafael Gonzaga) [#​60929](https://github.com/nodejs/node/pull/60929) - \[[`9a0c420a33`](https://github.com/nodejs/node/commit/9a0c420a33)] - **test**: skip SEA inspect test if inspector is not available (Livia Medeiros) [#​60872](https://github.com/nodejs/node/pull/60872) - \[[`e97daea17c`](https://github.com/nodejs/node/commit/e97daea17c)] - **test**: update WPT for WebCryptoAPI to [`1e49331`](https://github.com/nodejs/node/commit/1e4933113d) (Node.js GitHub Bot) [#​60896](https://github.com/nodejs/node/pull/60896) - \[[`ac367b3550`](https://github.com/nodejs/node/commit/ac367b3550)] - **test**: lint more `assert(regexp.test(...))` cases (René) [#​60878](https://github.com/nodejs/node/pull/60878) - \[[`ca5720e7b5`](https://github.com/nodejs/node/commit/ca5720e7b5)] - **test**: use `assert.match` for non-literal regexp tests (René) [#​60879](https://github.com/nodejs/node/pull/60879) - \[[`5d30d3fc2d`](https://github.com/nodejs/node/commit/5d30d3fc2d)] - **test**: fix embedtest in debug windows (Vladimir Morozov) [#​60806](https://github.com/nodejs/node/pull/60806) - \[[`8caeb03a52`](https://github.com/nodejs/node/commit/8caeb03a52)] - **test**: skip failing tests when compiled without amaro (Yuki Okita) [#​60815](https://github.com/nodejs/node/pull/60815) - \[[`242e20bf9a`](https://github.com/nodejs/node/commit/242e20bf9a)] - **test**: fix debug test crashes caused by sea tests (Vladimir Morozov) [#​60807](https://github.com/nodejs/node/pull/60807) - \[[`b890362e1a`](https://github.com/nodejs/node/commit/b890362e1a)] - **test**: add lint rule to forbid use of `assert.ok(/regex/.test(…))` (Antoine du Hamel) [#​60832](https://github.com/nodejs/node/pull/60832) - \[[`b08cb5657e`](https://github.com/nodejs/node/commit/b08cb5657e)] - **test**: replace deprecated regex test assertions in http trailers test (Aditya Chopra) [#​60831](https://github.com/nodejs/node/pull/60831) - \[[`47ed95965e`](https://github.com/nodejs/node/commit/47ed95965e)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60761](https://github.com/nodejs/node/pull/60761) - \[[`79d48f9441`](https://github.com/nodejs/node/commit/79d48f9441)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60759](https://github.com/nodejs/node/pull/60759) - \[[`585e200b40`](https://github.com/nodejs/node/commit/585e200b40)] - **test**: prefer major GC in cppgc-object teardown (sangwook) [#​60672](https://github.com/nodejs/node/pull/60672) - \[[`9426ff6b08`](https://github.com/nodejs/node/commit/9426ff6b08)] - **test**: add basic temporal presence check (Chengzhong Wu) [#​60703](https://github.com/nodejs/node/pull/60703) - \[[`ffebf8e55c`](https://github.com/nodejs/node/commit/ffebf8e55c)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60726](https://github.com/nodejs/node/pull/60726) - \[[`adc6776c6a`](https://github.com/nodejs/node/commit/adc6776c6a)] - **test**: ensure assertions are reached on HTTP2 tests (Antoine du Hamel) [#​60730](https://github.com/nodejs/node/pull/60730) - \[[`3dae49c6ce`](https://github.com/nodejs/node/commit/3dae49c6ce)] - **test**: ensure assertions are reached on HTTP tests (Antoine du Hamel) [#​60729](https://github.com/nodejs/node/pull/60729) - \[[`5203b09fea`](https://github.com/nodejs/node/commit/5203b09fea)] - **test**: skip test that cause timeout on IBM i (SRAVANI GUNDEPALLI) [#​60700](https://github.com/nodejs/node/pull/60700) - \[[`6d2fe36747`](https://github.com/nodejs/node/commit/6d2fe36747)] - **test**: add missing r.close() calls in REPL multiline tests (sangwook) [#​60226](https://github.com/nodejs/node/pull/60226) - \[[`bbee2ef5e0`](https://github.com/nodejs/node/commit/bbee2ef5e0)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60634](https://github.com/nodejs/node/pull/60634) - \[[`a2764d450d`](https://github.com/nodejs/node/commit/a2764d450d)] - **test**: update WPT for WebCryptoAPI to [`c58b6f4`](https://github.com/nodejs/node/commit/c58b6f4e0e) (Node.js GitHub Bot) [#​60702](https://github.com/nodejs/node/pull/60702) - \[[`1176fe43a7`](https://github.com/nodejs/node/commit/1176fe43a7)] - **test**: fix test-buffer-zero-fill-cli to be effective (Сковорода Никита Андреевич) [#​60623](https://github.com/nodejs/node/pull/60623) - \[[`1a66dc1292`](https://github.com/nodejs/node/commit/1a66dc1292)] - **test**: limit the concurrency of WPTRunner for RISC-V (Levi Zim) [#​60591](https://github.com/nodejs/node/pull/60591) - \[[`36076846d4`](https://github.com/nodejs/node/commit/36076846d4)] - **test**: fix test-strace-openat-openssl for RISC-V (Levi Zim) [#​60588](https://github.com/nodejs/node/pull/60588) - \[[`5a976cb507`](https://github.com/nodejs/node/commit/5a976cb507)] - **test**: split test-runner-run-watch.mjs (Joyee Cheung) [#​60653](https://github.com/nodejs/node/pull/60653) - \[[`8f611b9bce`](https://github.com/nodejs/node/commit/8f611b9bce)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#​60641](https://github.com/nodejs/node/pull/60641) - \[[`3e550d30d6`](https://github.com/nodejs/node/commit/3e550d30d6)] - **test\_runner**: fix lazy `test.assert` accessor (René) [#​61097](https://github.com/nodejs/node/pull/61097) - \[[`ec142be1ed`](https://github.com/nodejs/node/commit/ec142be1ed)] - **test\_runner**: propagate V8 options to child process (Pietro Marchini) [#​60999](https://github.com/nodejs/node/pull/60999) - \[[`3127a2b1e7`](https://github.com/nodejs/node/commit/3127a2b1e7)] - **test\_runner**: fix line feed escaping in JUnit (Aliaksandr) [#​60274](https://github.com/nodejs/node/pull/60274) - \[[`08fb6c9ba4`](https://github.com/nodejs/node/commit/08fb6c9ba4)] - **test\_runner**: simplify code and make it more consistent (Antoine du Hamel) [#​60777](https://github.com/nodejs/node/pull/60777) - \[[`102b217cf3`](https://github.com/nodejs/node/commit/102b217cf3)] - **tools**: bump the eslint group in /tools/eslint with 2 updates (dependabot\[bot]) [#​61246](https://github.com/nodejs/node/pull/61246) - \[[`97b6b61165`](https://github.com/nodejs/node/commit/97b6b61165)] - **tools**: unpin ngtcp2 version updates (Michaël Zasso) [#​61155](https://github.com/nodejs/node/pull/61155) - \[[`7e95edc3de`](https://github.com/nodejs/node/commit/7e95edc3de)] - **tools**: only report commit validation failure on Slack (Antoine du Hamel) [#​61124](https://github.com/nodejs/node/pull/61124) - \[[`3a7ed257a3`](https://github.com/nodejs/node/commit/3a7ed257a3)] - **tools**: use sparse-checkout in linter jobs (Antoine du Hamel) [#​61123](https://github.com/nodejs/node/pull/61123) - \[[`b655edf1bf`](https://github.com/nodejs/node/commit/b655edf1bf)] - **tools**: simplify `notify-on-push` (Antoine du Hamel) [#​61050](https://github.com/nodejs/node/pull/61050) - \[[`230155749d`](https://github.com/nodejs/node/commit/230155749d)] - **tools**: fix update-nghttp2 signature verification (Richard Lau) [#​61035](https://github.com/nodejs/node/pull/61035) - \[[`e8646a7d10`](https://github.com/nodejs/node/commit/e8646a7d10)] - **tools**: improve log output of `create-release-proposal` (Antoine du Hamel) [#​61028](https://github.com/nodejs/node/pull/61028) - \[[`a4b2614912`](https://github.com/nodejs/node/commit/a4b2614912)] - **tools**: fix `vcbuild test` when path contain spaces (stduhpf) [#​56481](https://github.com/nodejs/node/pull/56481) - \[[`9769c359f8`](https://github.com/nodejs/node/commit/9769c359f8)] - **tools**: do not run `test-linux` workflow for changes on `vcbuild.bat` (Antoine du Hamel) [#​60979](https://github.com/nodejs/node/pull/60979) - \[[`2ceaf6eb3c`](https://github.com/nodejs/node/commit/2ceaf6eb3c)] - **tools**: add some options and comments to `shell.nix` (Antoine du Hamel) [#​60911](https://github.com/nodejs/node/pull/60911) - \[[`611135abdc`](https://github.com/nodejs/node/commit/611135abdc)] - **tools**: bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /tools/doc (dependabot\[bot]) [#​60930](https://github.com/nodejs/node/pull/60930) - \[[`b4bad20a6c`](https://github.com/nodejs/node/commit/b4bad20a6c)] - **tools**: ignore more paths in GHA CI (Antoine du Hamel) [#​60920](https://github.com/nodejs/node/pull/60920) - \[[`47b7cb4e9e`](https://github.com/nodejs/node/commit/47b7cb4e9e)] - **tools**: run tests `--without-amaro` on test-shared macOS (Antoine du Hamel) [#​60902](https://github.com/nodejs/node/pull/60902) - \[[`b0ec8c9c2a`](https://github.com/nodejs/node/commit/b0ec8c9c2a)] - **tools**: replace deprecated eslint-plugin-markdown (Michaël Zasso) [#​60908](https://github.com/nodejs/node/pull/60908) - \[[`46dacf686e`](https://github.com/nodejs/node/commit/46dacf686e)] - **tools**: remove deprecated ESLint plugins (Michaël Zasso) [#​60908](https://github.com/nodejs/node/pull/60908) - \[[`1a4ec6e830`](https://github.com/nodejs/node/commit/1a4ec6e830)] - **tools**: update ESLint dependencies (Michaël Zasso) [#​60908](https://github.com/nodejs/node/pull/60908) - \[[`4e442b286d`](https://github.com/nodejs/node/commit/4e442b286d)] - **tools**: refloat 10 Node.js patches to cpplint.py (Michaël Zasso) [#​60901](https://github.com/nodejs/node/pull/60901) - \[[`fa90d09de6`](https://github.com/nodejs/node/commit/fa90d09de6)] - **tools**: update cpplint to 2.0.2 (Michaël Zasso) [#​60901](https://github.com/nodejs/node/pull/60901) - \[[`4d944c5198`](https://github.com/nodejs/node/commit/4d944c5198)] - **tools**: disable some new cpplint rules before update (Michaël Zasso) [#​60901](https://github.com/nodejs/node/pull/60901) - \[[`eaebae1eed`](https://github.com/nodejs/node/commit/eaebae1eed)] - **tools**: don't fetch V8 deps in the source tree (Richard Lau) [#​60883](https://github.com/nodejs/node/pull/60883) - \[[`256770944a`](https://github.com/nodejs/node/commit/256770944a)] - **tools**: add temporal updater (Chengzhong Wu) [#​60828](https://github.com/nodejs/node/pull/60828) - \[[`1c38f808bd`](https://github.com/nodejs/node/commit/1c38f808bd)] - **tools**: dump config.gypi as json (Chengzhong Wu) [#​60794](https://github.com/nodejs/node/pull/60794) - \[[`ed89b35291`](https://github.com/nodejs/node/commit/ed89b35291)] - **tools**: bump js-yaml from 4.1.0 to 4.1.1 in /tools/lint-md (dependabot\[bot]) [#​60781](https://github.com/nodejs/node/pull/60781) - \[[`c98c0881c5`](https://github.com/nodejs/node/commit/c98c0881c5)] - **tools**: fix linter warning in `test-shared.yml` (Antoine du Hamel) [#​60772](https://github.com/nodejs/node/pull/60772) - \[[`aa44406ed7`](https://github.com/nodejs/node/commit/aa44406ed7)] - **tools**: bump js-yaml from 4.1.0 to 4.1.1 in /tools/doc in the doc group (dependabot\[bot]) [#​60766](https://github.com/nodejs/node/pull/60766) - \[[`b756154ed9`](https://github.com/nodejs/node/commit/b756154ed9)] - **tools**: fix `paths-ignore` in gha files (Antoine du Hamel) [#​60753](https://github.com/nodejs/node/pull/60753) - \[[`18ed53fb7a`](https://github.com/nodejs/node/commit/18ed53fb7a)] - **tools**: update install\_tools.bat old echo from 2019 to 2022 (David Hidalgo) [#​60736](https://github.com/nodejs/node/pull/60736) - \[[`cf79940d5c`](https://github.com/nodejs/node/commit/cf79940d5c)] - **tools**: remove unsupported `cooldown` from Dependabot config (Antoine du Hamel) [#​60747](https://github.com/nodejs/node/pull/60747) - \[[`8ea73ffd64`](https://github.com/nodejs/node/commit/8ea73ffd64)] - **tools**: update sccache to v0.12.0 (Michaël Zasso) [#​60723](https://github.com/nodejs/node/pull/60723) - \[[`578f8bdfa0`](https://github.com/nodejs/node/commit/578f8bdfa0)] - **tools**: update x64 macOS runner (Antoine du Hamel) [#​60676](https://github.com/nodejs/node/pull/60676) - \[[`3b6cf316c0`](https://github.com/nodejs/node/commit/3b6cf316c0)] - **tools**: update gyp-next to 0.21.0 (Node.js GitHub Bot) [#​60645](https://github.com/nodejs/node/pull/60645) - \[[`7d55b8c00f`](https://github.com/nodejs/node/commit/7d55b8c00f)] - **tools,doc**: fix format-md files list (Stefan Stojanovic) [#​61147](https://github.com/nodejs/node/pull/61147) - \[[`a617942a4a`](https://github.com/nodejs/node/commit/a617942a4a)] - **url**: add fast path to getPathFromURL decoder (Gürgün Dayıoğlu) [#​60749](https://github.com/nodejs/node/pull/60749) - \[[`a6ac8bd2a5`](https://github.com/nodejs/node/commit/a6ac8bd2a5)] - **url**: remove array.reduce usage (Gürgün Dayıoğlu) [#​60748](https://github.com/nodejs/node/pull/60748) - \[[`09b5396523`](https://github.com/nodejs/node/commit/09b5396523)] - **util**: optimize toASCIILower function using V8s native toLowerCase (Mert Can Altin) [#​61107](https://github.com/nodejs/node/pull/61107) - \[[`1dd15c9502`](https://github.com/nodejs/node/commit/1dd15c9502)] - **util**: limit `inspect` to only show own properties (Ruben Bridgewater) [#​61032](https://github.com/nodejs/node/pull/61032) - \[[`5051d90100`](https://github.com/nodejs/node/commit/5051d90100)] - **(SEMVER-MINOR)** **util**: add convertProcessSignalToExitCode utility (Erick Wendel) [#​60963](https://github.com/nodejs/node/pull/60963) - \[[`98b6dc1181`](https://github.com/nodejs/node/commit/98b6dc1181)] - **util**: fix parseArgs skipping positional arg with --eval and --print (azadgupta1) [#​60814](https://github.com/nodejs/node/pull/60814) - \[[`862eaf8a09`](https://github.com/nodejs/node/commit/862eaf8a09)] - **util**: assert getCallSites does not invoke Error.prepareStackTrace (Chengzhong Wu) [#​60922](https://github.com/nodejs/node/pull/60922) - \[[`c2e79aa5fb`](https://github.com/nodejs/node/commit/c2e79aa5fb)] - **util**: improve textencoder encodeInto performance (Yagiz Nizipli) [#​60843](https://github.com/nodejs/node/pull/60843) - \[[`b6903aaf8d`](https://github.com/nodejs/node/commit/b6903aaf8d)] - **util**: safely inspect getter errors whose message throws (Yves M.) [#​60684](https://github.com/nodejs/node/pull/60684) - \[[`408f024906`](https://github.com/nodejs/node/commit/408f024906)] - **v8**: mark v8.queryObjects() as stable (Joyee Cheung) [#​60957](https://github.com/nodejs/node/pull/60957) - \[[`b00ee5222c`](https://github.com/nodejs/node/commit/b00ee5222c)] - **worker**: update code examples for `node:worker_threads` module (fisker Cheung) [#​58264](https://github.com/nodejs/node/pull/58264) - \[[`2409839f19`](https://github.com/nodejs/node/commit/2409839f19)] - **worker**: remove not implemented declarations (Artur Gawlik) [#​60655](https://github.com/nodejs/node/pull/60655) - \[[`c09417a2b1`](https://github.com/nodejs/node/commit/c09417a2b1)] - **zlib**: add CHECK to validate fast path input (Matteo Collina) [#​61175](https://github.com/nodejs/node/pull/61175) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6Om1pbm9yIl19-->
This fixes both performance and correctness for all single-byte encodings in the
TextDecoderspec.Tracking issue: #61041
ICU is both slower and can't be trusted, it returns invalid results on many encodings (see #61041)
Fast path from #60893 is not faster than ICU and is instead just a perf regression
This is the first of the changes, aiming to fix 1-byte decoders only
It's based on code in https://github.com/ExodusOSS/bytes and essentially just copy-pastes the 1-byte encodings path for Node.js with some simplifications
I authored that code
Fixes
ibm866,koi8-u,windows-874,windows-1253,windows-1255encodings which were returning incorrect resultsiso-8859-16andx-user-definedencodings which are present in the specwindows1252incorrect handling ofignoreBOM:Performance
windows-1252(aka latin1 / asci) perf on ASCII --108xwindows-1252(aka latin1 / asci) perf on non-ASCII --25xwindows-1253perf on ASCII --27xwindows-1253perf on non-ASCII --~7%windows-1253or betterBenchmarks were made with https://github.com/lemire/jstextdecoderbench but changed the encodings:
windows-1252, main:windows-1252, PR:windows-1253, main:windows-1253, PR: