Skip to content

Conversation

@ChALkeR
Copy link
Member

@ChALkeR ChALkeR commented Dec 17, 2025

This fixes both performance and correctness for all single-byte encodings in the TextDecoder spec.

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

  1. Fixes ibm866, koi8-u, windows-874, windows-1253, windows-1255 encodings which were returning incorrect results
  2. Adds support for iso-8859-16 and x-user-defined encodings which are present in the spec
  3. Adds support for single-byte encodings for Node.js built without ICU (further PRs will improve on this)
  4. Fixes windows1252 incorrect handling of ignoreBOM:
 > new TextDecoder('latin1', { ignoreBOM: true }).decode(Uint8Array.of(0xff)).length
 0

Performance

  1. improves windows-1252 (aka latin1 / asci) perf on ASCII -- 108x
  2. improves windows-1252 (aka latin1 / asci) perf on non-ASCII -- 25x
  3. improves windows-1253 perf on ASCII -- 27x
  4. improves windows-1253 perf on non-ASCII -- ~7%
  5. ... and so on for all single-byte encodings, they are similar to windows-1253 or better

Benchmarks were made with https://github.com/lemire/jstextdecoderbench but changed the encodings:


windows-1252, main:

Test Size Throughput Mean Time
Latin lipsum (ASCII) 84.902 KiB 0.31 GiB/s 0.272 ms
Complex 1 79.771 KiB 0.06 GiB/s 1.292 ms

windows-1252, PR:

Test Size Throughput Mean Time
Latin lipsum (ASCII) 84.902 KiB 33.41 GiB/s 0.003 ms
Complex 1 79.771 KiB 1.48 GiB/s 0.056 ms

windows-1253, main:

Test Size Throughput Mean Time
Latin lipsum (ASCII) 84.902 KiB 1.27 GiB/s 0.065 ms
Complex 1 79.771 KiB 1.41 GiB/s 0.056 ms

windows-1253, PR:

Test Size Throughput Mean Time
Latin lipsum (ASCII) 84.902 KiB 34.46 GiB/s 0.003 ms
Complex 1 79.771 KiB 1.53 GiB/s 0.053 ms

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Dec 17, 2025
@ChALkeR ChALkeR force-pushed the chalker/decoder/single-byte/0 branch from d49cc98 to 5c80725 Compare December 17, 2025 11:53
@ChALkeR ChALkeR changed the title fix: implement all 1-byte encodings in js lib: implement all 1-byte encodings in js Dec 17, 2025
@ChALkeR
Copy link
Member Author

ChALkeR commented Dec 17, 2025

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 windows-1252 and windows-1253 above)

@ChALkeR ChALkeR force-pushed the chalker/decoder/single-byte/0 branch from 5c80725 to 9e8e785 Compare December 17, 2025 12:00
Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

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

lgtm

@ChALkeR ChALkeR force-pushed the chalker/decoder/single-byte/0 branch 6 times, most recently from 0f4a5ca to e047a11 Compare December 17, 2025 12:51
@ChALkeR ChALkeR marked this pull request as ready for review December 17, 2025 13:29
@ChALkeR
Copy link
Member Author

ChALkeR commented Dec 17, 2025

This should be ready except for tests which I'll add

@ChALkeR ChALkeR force-pushed the chalker/decoder/single-byte/0 branch from e047a11 to 1920216 Compare December 17, 2025 14:43
Copy link
Member

@Renegade334 Renegade334 left a 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.

@ChALkeR ChALkeR force-pushed the chalker/decoder/single-byte/0 branch from 1920216 to 7c615e2 Compare December 17, 2025 15:55
const w3 = [...w8, -8060, 8330, -8328, 8096, -8094];
const m0 = [8558, -8328, 8374, -66, -8539, 16, 8043, -8070];

const encodings = {
Copy link
Member

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.

Copy link
Member Author

@ChALkeR ChALkeR Dec 17, 2025

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)

Copy link
Member Author

@ChALkeR ChALkeR Dec 17, 2025

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:

  1. 0xfffd designates a hole (unmapped offset), those tables are non-continuous
  2. 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

Copy link
Member

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.

Copy link
Member Author

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
Copy link

codecov bot commented Dec 17, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 88.53%. Comparing base (4f24aff) to head (d7f8c96).
⚠️ Report is 70 commits behind head on main.

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     
Files with missing lines Coverage Δ
lib/internal/encoding.js 100.00% <100.00%> (+0.48%) ⬆️
lib/internal/encoding/single-byte.js 100.00% <100.00%> (ø)
src/encoding_binding.cc 51.80% <ø> (-2.81%) ⬇️
src/encoding_binding.h 100.00% <ø> (ø)

... and 47 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@anonrig anonrig added the needs-benchmark-ci PR that need a benchmark CI run. label Dec 18, 2025
@mertcanaltin
Copy link
Member

mertcanaltin commented Dec 18, 2025

Thanks for repair!

fails because internal/encoding/single-byte and internalBinding('os') are loaded before pre-execution.
lazy loading both can fix this. https://github.com/nodejs/node/actions/runs/20308888356/job/58334026159?pr=61093

@ChALkeR ChALkeR force-pushed the chalker/decoder/single-byte/0 branch 4 times, most recently from 74fed43 to 2cb2499 Compare December 18, 2025 12:14
Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

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

lgtm

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

@ChALkeR
Copy link
Member Author

ChALkeR commented Dec 20, 2025

New tests seem to have failed without intl, will fix that

@ChALkeR
Copy link
Member Author

ChALkeR commented Dec 22, 2025

Non-ICU impl should be fixed now (and support all single-bytes, in both fatal and replacement modes)
It now has most of the constructor identical to the ICU-based version
Those could be unified further, but in a different PR, as that's not related to single-byte encodings

@mcollina mcollina added the request-ci Add this label to start a Jenkins CI on a PR. label Dec 22, 2025
@github-actions github-actions bot added request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. and removed request-ci Add this label to start a Jenkins CI on a PR. labels Dec 22, 2025
@github-actions
Copy link
Contributor

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 PR
https://github.com/nodejs/node/actions/runs/20433701568

Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

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

lgtm

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

ERR_ENCODING_INVALID_ENCODED_DATA,
} = require('internal/errors').codes;

const isBigEndian = new FastBuffer(TypedArrayOf(Uint16Array, 258).buffer)[1] === 2;
Copy link
Member

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
Copy link
Member

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.

Suggested change
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;
}

Copy link
Member Author

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);
Copy link
Member

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

Suggested change
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);
}

Copy link
Member Author

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));
Copy link
Member

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:

Suggested change
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;

Copy link
Member Author

@ChALkeR ChALkeR Dec 27, 2025

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

@avivkeller avivkeller added author ready PRs that have at least one approval, no pending requests for changes, and a CI started. and removed request-ci-failed An error occurred while starting CI via request-ci label, and manual interventon is needed. labels Dec 28, 2025
@aduh95 aduh95 added commit-queue Add this label to land a pull request using GitHub Actions. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. labels Dec 30, 2025
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Dec 30, 2025
@nodejs-github-bot nodejs-github-bot merged commit 0b02b92 into nodejs:main Dec 30, 2025
78 checks passed
@nodejs-github-bot
Copy link
Collaborator

Landed in 0b02b92

aduh95 pushed a commit that referenced this pull request Jan 9, 2026
PR-URL: #61093
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
aduh95 pushed a commit that referenced this pull request Jan 12, 2026
PR-URL: #61093
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
RafaelGSS pushed a commit that referenced this pull request Jan 13, 2026
PR-URL: #61093
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
aduh95 pushed a commit that referenced this pull request Jan 19, 2026
PR-URL: #61093
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Jan 22, 2026
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), @&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60741](https://github.com/nodejs/node/pull/60741)
- \[[`44f61dfb92`](https://github.com/nodejs/node/commit/44f61dfb92)] - **doc**: add [@&#8203;avivkeller](https://github.com/avivkeller) to collaborators (Aviv Keller) [#&#8203;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) [#&#8203;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) [#&#8203;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é) [#&#8203;60214](https://github.com/nodejs/node/pull/60214)
- \[[`8470e2993b`](https://github.com/nodejs/node/commit/8470e2993b)] - **(SEMVER-MINOR)** **http**: add http.setGlobalProxyFromEnv() (Joyee Cheung) [#&#8203;60953](https://github.com/nodejs/node/pull/60953)
- \[[`24384d7438`](https://github.com/nodejs/node/commit/24384d7438)] - **meta**: add Renegade334 to collaborators (Renegade334) [#&#8203;60714](https://github.com/nodejs/node/pull/60714)
- \[[`c1acef6d0f`](https://github.com/nodejs/node/commit/c1acef6d0f)] - **module**: mark require(esm) as stable (Joyee Cheung) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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é) [#&#8203;60907](https://github.com/nodejs/node/pull/60907)
- \[[`5051d90100`](https://github.com/nodejs/node/commit/5051d90100)] - **(SEMVER-MINOR)** **util**: add convertProcessSignalToExitCode utility (Erick Wendel) [#&#8203;60963](https://github.com/nodejs/node/pull/60963)
- \[[`408f024906`](https://github.com/nodejs/node/commit/408f024906)] - **v8**: mark v8.queryObjects() as stable (Joyee Cheung) [#&#8203;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) [#&#8203;61076](https://github.com/nodejs/node/pull/61076)
- \[[`11861084fd`](https://github.com/nodejs/node/commit/11861084fd)] - **assert,util**: improve comparison performance (Ruben Bridgewater) [#&#8203;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) [#&#8203;61076](https://github.com/nodejs/node/pull/61076)
- \[[`c8fccd585f`](https://github.com/nodejs/node/commit/c8fccd585f)] - **assert,util**: improve deep comparison performance (Ruben Bridgewater) [#&#8203;61076](https://github.com/nodejs/node/pull/61076)
- \[[`13661a0123`](https://github.com/nodejs/node/commit/13661a0123)] - **benchmark**: use boolean options in benchmark tests (SeokhunEom) [#&#8203;60129](https://github.com/nodejs/node/pull/60129)
- \[[`36dead3433`](https://github.com/nodejs/node/commit/36dead3433)] - **benchmark**: allow boolean option values (SeokhunEom) [#&#8203;60129](https://github.com/nodejs/node/pull/60129)
- \[[`376056eaef`](https://github.com/nodejs/node/commit/376056eaef)] - **benchmark**: add microbench on isInsideNodeModules (Chengzhong Wu) [#&#8203;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) [#&#8203;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) [#&#8203;60663](https://github.com/nodejs/node/pull/60663)
- \[[`012a08f6eb`](https://github.com/nodejs/node/commit/012a08f6eb)] - **buffer**: let Buffer.of use heap (Сковорода Никита Андреевич) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60511](https://github.com/nodejs/node/pull/60511)
- \[[`3213de08e8`](https://github.com/nodejs/node/commit/3213de08e8)] - **build**: support building crates (temporal) on windows (沈鸿飞) [#&#8203;61163](https://github.com/nodejs/node/pull/61163)
- \[[`1ad8788391`](https://github.com/nodejs/node/commit/1ad8788391)] - **build**: remove temporal updater (Chengzhong Wu) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60703](https://github.com/nodejs/node/pull/60703)
- \[[`bec7fce07a`](https://github.com/nodejs/node/commit/bec7fce07a)] - **build**: add temporal\_capi gyp (Chengzhong Wu) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;61136](https://github.com/nodejs/node/pull/61136)
- \[[`f2692c5534`](https://github.com/nodejs/node/commit/f2692c5534)] - **deps**: remove independent temporal (Chengzhong Wu) [#&#8203;61072](https://github.com/nodejs/node/pull/61072)
- \[[`3acbf3f129`](https://github.com/nodejs/node/commit/3acbf3f129)] - **deps**: apply cargo vendor (Chengzhong Wu) [#&#8203;61072](https://github.com/nodejs/node/pull/61072)
- \[[`d2759f4805`](https://github.com/nodejs/node/commit/d2759f4805)] - **deps**: add vendor depenency crate (Chengzhong Wu) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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é) [#&#8203;61090](https://github.com/nodejs/node/pull/61090)
- \[[`134780c035`](https://github.com/nodejs/node/commit/134780c035)] - **doc**: add documentation for process.traceProcessWarnings (Alireza Ebrahimkhani) [#&#8203;53641](https://github.com/nodejs/node/pull/53641)
- \[[`3b08efcebb`](https://github.com/nodejs/node/commit/3b08efcebb)] - **doc**: add sqlite session disposal method (René) [#&#8203;61273](https://github.com/nodejs/node/pull/61273)
- \[[`ec1847a097`](https://github.com/nodejs/node/commit/ec1847a097)] - **doc**: fix filename typo (Hardanish Singh) [#&#8203;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) [#&#8203;61267](https://github.com/nodejs/node/pull/61267)
- \[[`28fe6ea4a8`](https://github.com/nodejs/node/commit/28fe6ea4a8)] - **doc**: mention --newVersion release script (Rafael Gonzaga) [#&#8203;61255](https://github.com/nodejs/node/pull/61255)
- \[[`2fb35d897d`](https://github.com/nodejs/node/commit/2fb35d897d)] - **doc**: correct typo in BUILDING doc (Mike McCready) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;61207](https://github.com/nodejs/node/pull/61207)
- \[[`0792859e49`](https://github.com/nodejs/node/commit/0792859e49)] - **doc**: fix tls.connect() timeout documentation (Azad Gupta) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;59007](https://github.com/nodejs/node/pull/59007)
- \[[`23fb3a64ec`](https://github.com/nodejs/node/commit/23fb3a64ec)] - **doc**: fix test settime docs (Efe) [#&#8203;61117](https://github.com/nodejs/node/pull/61117)
- \[[`808eb437ee`](https://github.com/nodejs/node/commit/808eb437ee)] - **doc**: correct invalid collaborator profile (JJ) [#&#8203;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) [#&#8203;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) [#&#8203;61109](https://github.com/nodejs/node/pull/61109)
- \[[`44f61dfb92`](https://github.com/nodejs/node/commit/44f61dfb92)] - **doc**: add [@&#8203;avivkeller](https://github.com/avivkeller) to collaborators (Aviv Keller) [#&#8203;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) [#&#8203;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) [#&#8203;61094](https://github.com/nodejs/node/pull/61094)
- \[[`ce5d6e22ef`](https://github.com/nodejs/node/commit/ce5d6e22ef)] - **doc**: update MDN links (Livia Medeiros) [#&#8203;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) [#&#8203;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) [#&#8203;60960](https://github.com/nodejs/node/pull/60960)
- \[[`9851278e99`](https://github.com/nodejs/node/commit/9851278e99)] - **doc**: mark crypto.hash as stable (Joyee Cheung) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60915](https://github.com/nodejs/node/pull/60915)
- \[[`9a9bed9b3a`](https://github.com/nodejs/node/commit/9a9bed9b3a)] - **doc**: clarify fileURLToPath security considerations (Rafael Gonzaga) [#&#8203;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) [#&#8203;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) [#&#8203;60881](https://github.com/nodejs/node/pull/60881)
- \[[`487c1080aa`](https://github.com/nodejs/node/commit/487c1080aa)] - **doc**: correct spelling in BUILDING.md (Rich Trott) [#&#8203;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) [#&#8203;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) [#&#8203;60692](https://github.com/nodejs/node/pull/60692)
- \[[`95ef052751`](https://github.com/nodejs/node/commit/95ef052751)] - **doc**: fix typos in changelogs (Rich Trott) [#&#8203;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) [#&#8203;60849](https://github.com/nodejs/node/pull/60849)
- \[[`bfe8c62a2d`](https://github.com/nodejs/node/commit/bfe8c62a2d)] - **doc**: add fullName property to SuiteContext (PaulyBearCoding) [#&#8203;60762](https://github.com/nodejs/node/pull/60762)
- \[[`2799f594e3`](https://github.com/nodejs/node/commit/2799f594e3)] - **doc**: add additional codemods for deprecation (Augustin Mauroy) [#&#8203;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) [#&#8203;60410](https://github.com/nodejs/node/pull/60410)
- \[[`2fa9917b07`](https://github.com/nodejs/node/commit/2fa9917b07)] - **doc**: fix webstorage config file property (Marco Ippolito) [#&#8203;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) [#&#8203;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é) [#&#8203;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) [#&#8203;60590](https://github.com/nodejs/node/pull/60590)
- \[[`745ea1d61f`](https://github.com/nodejs/node/commit/745ea1d61f)] - **doc**: correct and expand documentation for SQLTagStore (René) [#&#8203;60200](https://github.com/nodejs/node/pull/60200)
- \[[`a442c27c0a`](https://github.com/nodejs/node/commit/a442c27c0a)] - **doc**: correct tls ALPNProtocols types (René) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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é) [#&#8203;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) [#&#8203;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) [#&#8203;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)) [#&#8203;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) [#&#8203;60376](https://github.com/nodejs/node/pull/60376)
- \[[`6da85b576b`](https://github.com/nodejs/node/commit/6da85b576b)] - **events**: remove eventtarget custom inspect branding (Efe) [#&#8203;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é) [#&#8203;60214](https://github.com/nodejs/node/pull/60214)
- \[[`dc19409f36`](https://github.com/nodejs/node/commit/dc19409f36)] - **fs**: validate statfs path (Efe) [#&#8203;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) [#&#8203;61108](https://github.com/nodejs/node/pull/61108)
- \[[`feee377b83`](https://github.com/nodejs/node/commit/feee377b83)] - **fs**: remove broken symlinks in rmSync (sangwook) [#&#8203;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) [#&#8203;61012](https://github.com/nodejs/node/pull/61012)
- \[[`8470e2993b`](https://github.com/nodejs/node/commit/8470e2993b)] - **(SEMVER-MINOR)** **http**: add http.setGlobalProxyFromEnv() (Joyee Cheung) [#&#8203;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) [#&#8203;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) [#&#8203;60834](https://github.com/nodejs/node/pull/60834)
- \[[`86bce15e96`](https://github.com/nodejs/node/commit/86bce15e96)] - **lib**: implement all 1-byte encodings in js (Сковорода Никита Андреевич) [#&#8203;61093](https://github.com/nodejs/node/pull/61093)
- \[[`8156738b97`](https://github.com/nodejs/node/commit/8156738b97)] - **lib**: gbk decoder is gb18030 decoder per spec (Сковорода Никита Андреевич) [#&#8203;61099](https://github.com/nodejs/node/pull/61099)
- \[[`d8f1dea0d3`](https://github.com/nodejs/node/commit/d8f1dea0d3)] - **lib**: enforce use of `URLParse` (Antoine du Hamel) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;61004](https://github.com/nodejs/node/pull/61004)
- \[[`1977348ae0`](https://github.com/nodejs/node/commit/1977348ae0)] - **lib,test**: fix jsdoc comments (Michaël Zasso) [#&#8203;60870](https://github.com/nodejs/node/pull/60870)
- \[[`3549cf14ce`](https://github.com/nodejs/node/commit/3549cf14ce)] - **meta**: remove t.js (RafaelGSS) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;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]) [#&#8203;60767](https://github.com/nodejs/node/pull/60767)
- \[[`24384d7438`](https://github.com/nodejs/node/commit/24384d7438)] - **meta**: add Renegade334 to collaborators (Renegade334) [#&#8203;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) [#&#8203;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) [#&#8203;60974](https://github.com/nodejs/node/pull/60974)
- \[[`c1acef6d0f`](https://github.com/nodejs/node/commit/c1acef6d0f)] - **module**: mark require(esm) as stable (Joyee Cheung) [#&#8203;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) [#&#8203;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) [#&#8203;60864](https://github.com/nodejs/node/pull/60864)
- \[[`1983cd6692`](https://github.com/nodejs/node/commit/1983cd6692)] - **node-api**: add napi\_set\_prototype (siaeyy) [#&#8203;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) [#&#8203;55877](https://github.com/nodejs/node/pull/55877)
- \[[`cb3f79273a`](https://github.com/nodejs/node/commit/cb3f79273a)] - **node-api**: add support for Float16Array (Ilyas Shabi) [#&#8203;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) [#&#8203;60473](https://github.com/nodejs/node/pull/60473)
- \[[`3c5dc03f06`](https://github.com/nodejs/node/commit/3c5dc03f06)] - **os**: freeze signals constant (Xavier Stouder) [#&#8203;61038](https://github.com/nodejs/node/pull/61038)
- \[[`ca5c4c9752`](https://github.com/nodejs/node/commit/ca5c4c9752)] - **process**: improve process.cwd() error message (TseIan) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;61096](https://github.com/nodejs/node/pull/61096)
- \[[`324ea4fa2d`](https://github.com/nodejs/node/commit/324ea4fa2d)] - **sqlite**: make `SQLTagStore.prototype.size` a getter (René) [#&#8203;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) [#&#8203;61101](https://github.com/nodejs/node/pull/61101)
- \[[`0692b4f014`](https://github.com/nodejs/node/commit/0692b4f014)] - **src**: improve StringBytes::Encode perf on ASCII (Сковорода Никита Андреевич) [#&#8203;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) [#&#8203;60885](https://github.com/nodejs/node/pull/60885)
- \[[`8f46bd9352`](https://github.com/nodejs/node/commit/8f46bd9352)] - **src**: remove redundant CHECK (Tobias Nießen) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60802](https://github.com/nodejs/node/pull/60802)
- \[[`920f02539e`](https://github.com/nodejs/node/commit/920f02539e)] - **src**: implicitly enable namespace in config (Marco Ippolito) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60798](https://github.com/nodejs/node/pull/60798)
- \[[`6c2b75ba87`](https://github.com/nodejs/node/commit/6c2b75ba87)] - **src**: split inspector protocol domains files (Chengzhong Wu) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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é) [#&#8203;60907](https://github.com/nodejs/node/pull/60907)
- \[[`90c12a252a`](https://github.com/nodejs/node/commit/90c12a252a)] - **stream**: fix isErrored/isWritable for WritableStreams (René) [#&#8203;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) [#&#8203;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é) [#&#8203;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) [#&#8203;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é) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60995](https://github.com/nodejs/node/pull/60995)
- \[[`2cbddfefb7`](https://github.com/nodejs/node/commit/2cbddfefb7)] - **test**: update test426 fixtures (Rich Trott) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60896](https://github.com/nodejs/node/pull/60896)
- \[[`ac367b3550`](https://github.com/nodejs/node/commit/ac367b3550)] - **test**: lint more `assert(regexp.test(...))` cases (René) [#&#8203;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é) [#&#8203;60879](https://github.com/nodejs/node/pull/60879)
- \[[`5d30d3fc2d`](https://github.com/nodejs/node/commit/5d30d3fc2d)] - **test**: fix embedtest in debug windows (Vladimir Morozov) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60672](https://github.com/nodejs/node/pull/60672)
- \[[`9426ff6b08`](https://github.com/nodejs/node/commit/9426ff6b08)] - **test**: add basic temporal presence check (Chengzhong Wu) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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 (Сковорода Никита Андреевич) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60641](https://github.com/nodejs/node/pull/60641)
- \[[`3e550d30d6`](https://github.com/nodejs/node/commit/3e550d30d6)] - **test\_runner**: fix lazy `test.assert` accessor (René) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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]) [#&#8203;61246](https://github.com/nodejs/node/pull/61246)
- \[[`97b6b61165`](https://github.com/nodejs/node/commit/97b6b61165)] - **tools**: unpin ngtcp2 version updates (Michaël Zasso) [#&#8203;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) [#&#8203;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) [#&#8203;61123](https://github.com/nodejs/node/pull/61123)
- \[[`b655edf1bf`](https://github.com/nodejs/node/commit/b655edf1bf)] - **tools**: simplify `notify-on-push` (Antoine du Hamel) [#&#8203;61050](https://github.com/nodejs/node/pull/61050)
- \[[`230155749d`](https://github.com/nodejs/node/commit/230155749d)] - **tools**: fix update-nghttp2 signature verification (Richard Lau) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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]) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60908](https://github.com/nodejs/node/pull/60908)
- \[[`46dacf686e`](https://github.com/nodejs/node/commit/46dacf686e)] - **tools**: remove deprecated ESLint plugins (Michaël Zasso) [#&#8203;60908](https://github.com/nodejs/node/pull/60908)
- \[[`1a4ec6e830`](https://github.com/nodejs/node/commit/1a4ec6e830)] - **tools**: update ESLint dependencies (Michaël Zasso) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60883](https://github.com/nodejs/node/pull/60883)
- \[[`256770944a`](https://github.com/nodejs/node/commit/256770944a)] - **tools**: add temporal updater (Chengzhong Wu) [#&#8203;60828](https://github.com/nodejs/node/pull/60828)
- \[[`1c38f808bd`](https://github.com/nodejs/node/commit/1c38f808bd)] - **tools**: dump config.gypi as json (Chengzhong Wu) [#&#8203;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]) [#&#8203;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) [#&#8203;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]) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;60723](https://github.com/nodejs/node/pull/60723)
- \[[`578f8bdfa0`](https://github.com/nodejs/node/commit/578f8bdfa0)] - **tools**: update x64 macOS runner (Antoine du Hamel) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;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) [#&#8203;61032](https://github.com/nodejs/node/pull/61032)
- \[[`5051d90100`](https://github.com/nodejs/node/commit/5051d90100)] - **(SEMVER-MINOR)** **util**: add convertProcessSignalToExitCode utility (Erick Wendel) [#&#8203;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) [#&#8203;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) [#&#8203;60922](https://github.com/nodejs/node/pull/60922)
- \[[`c2e79aa5fb`](https://github.com/nodejs/node/commit/c2e79aa5fb)] - **util**: improve textencoder encodeInto performance (Yagiz Nizipli) [#&#8203;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.) [#&#8203;60684](https://github.com/nodejs/node/pull/60684)
- \[[`408f024906`](https://github.com/nodejs/node/commit/408f024906)] - **v8**: mark v8.queryObjects() as stable (Joyee Cheung) [#&#8203;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) [#&#8203;58264](https://github.com/nodejs/node/pull/58264)
- \[[`2409839f19`](https://github.com/nodejs/node/commit/2409839f19)] - **worker**: remove not implemented declarations (Artur Gawlik) [#&#8203;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) [#&#8203;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-->
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. c++ Issues and PRs that require attention from people who are familiar with C++. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. lib / src Issues and PRs related to general changes in the lib or src directory. needs-benchmark-ci PR that need a benchmark CI run. needs-ci PRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants