## nodejs/node — v26.7.0…v26.8.0

_345+ commits._

### Features
- **meta: add a root-level AGENTS.md** (8d39d0d)
- **benchmark: add --analyze mode to compare.js** (74234ee)
- **perf_hooks: add statistical hypothesis testing to histogram** (9e8e908)
- **tty: add raw-vt and io raw modes** (cf39500)
- **module: add a read-only mode to the compile cache** (97a437e)
- **benchmark: add test-only and mock timers cases** (2cb96dd)
- **test_runner: add classname hierarchy for JUnit reporter** (400d598)
- **build,win: add PGO workload scripts** (1a4f5e5)
- **doc: add missing return types in fs.md** (262f966)
- **doc: add missing return types in buffer.md** (695cd89)
- **src: add v8::Local specialization for MaybeStackBuffer** (613be79)
- **repl: add benchmarks** (825fcfe)
- **typings: add signal_wrap internal binding types** (a5e5c7f)
- **typings: add diagnostics_channel typings** (5219e53)
- **typings: add watchdog internal binding types** (215223d)
- **doc: add missing `added:` tags to `fs.lchmod`** (3b6a918)

### Fixes
- **fs: fix realpath of namespaced drive paths** (bc1e19b)
- **util: fix OSC 8 hyperlink stripping in stripVTControlCharacters** (f644853)
- **src: fix heap value deduplication in embedder graph** (29d794b)
- **doc: fix property names in os.networkInterfaces() example** (5fbf6c5)
- **doc: fix broken links in cli.md** (13f16d2)
- **fs: fix glob early return skipping sibling entries** (74dcdbb)
- **src: fix out-of-bounds write when transcoding odd-length ucs2** (b405e9b)
- **util: fix formatting of functions returned from getters** (eb1ebbb)
- **doc: fix broken GYP link in n-api.md** (1ad09f7)
- **doc: fix broken TLS security level example** (dae4341)
- **tools: fix max body length handler in `create-release-proposal.sh`** (35b18b4)
- **fs: fix out-of-bounds write in mkdtemp for long prefixes** (992af05)
- **crypto: fix missing error checks on ASN1_STRING_to_UTF8()** (109566a)
- **lib: fix ERR_INVALID_ARG_TYPE with --enable-source-maps** (3619dc0)
- **test_runner: fix junit report on empty diagnostic** (9572a0b)
- **Revert "fs: fix close listener leak in FileHandle streams"** (810929b)
- **tools: fix man-page generation on Windows** (7c09bd5)
- **fs: fix close listener leak in FileHandle streams** (8873b91)
- **http: fix keylog listener setup on existing agent sockets** (6c3516f)
- **doc: fix lint clean command** (676a122)
- **doc: fix typo in onboarding.md** (9ea318d)

### Backend
- **2026-08-26, Version 26.8.0 (Current)** (2161c94)
- **events: inline iterationCondition hybrid dispatch closure** (8d48adf)
- **events: inline createEvent hybrid dispatch closure** (b827c00)
- **fs: stop stat()ing every entry in recursive readdir** (262f0ec)
- **stream: normalize fused stateless transform results** (5b7d02e)
- **crypto: update root certificates to NSS 3.126** (4232997)
- **permission: guard UDP handle adoption** (01a8ae0)
- **stream: encode whole chunks in TextEncoderStream** (1d6ec2d)
- **doc: update AHAFS reference link** (9e227ef)
- **util: allow single-line format when break length is infinite** (cb4b89c)
- **tls: throw on invalid ALPNProtocols instead of aborting** (2a0b1ec)
- **permission: enforce addon permission in GetLinkedBinding** (ac3c412)
- **http: improve performance with known-length calls to end()** (c2c31d6)
- **fs: use sized reads for large files in readFileUtf8** (e3ae912)
- **stream: prevent share from eagerly draining source** (0afda47)
- **fs: abort in-flight stat operations** (6673eba)
- **stream: drain pending writes before broadcast end** (dc51c79)
- **repl: keep entries added while history file is loading** (bb499c3)
- **http: use intrusive lists in ConnectionsList** (7e9204f)
- **test_runner: match dotfiles in default coverage exclude** (4de7e63)
- **stream: reuse unexposed managed read buffers** (a77f9f7)
- **quic: changes for nghttp3_conn_close_stream2** (d0447c9)
- **quic: mark drain promise handled** (9139389)
- **url: skip unused href reuse comparison** (f032c22)
- **url: speed up WHATWG URL parsing** (2a64032)
- **lib: use bracket notation instead of startsWith/endsWith for single char** (b71d5de)
- **dgram: don't swallow bind errors when callback is provided** (788976c)
- **quic: reset rejected HTTP/3 request streams with H3_REQUEST_REJECTED** (5c9576b)
- **stream: avoid duplicated endReadableNT scheduling** (c42fbcc)
- **esm: avoid super-linear data URL MIME regex** (4a1c9a7)
- **test_runner: print coverage and diagnostic info with dot reporter** (79c39c2)
- **url: speed up URLSearchParams** (c4dbe14)
- **fs: pass symlink type in cp when filter is provided** (6305a74)
- **fs: allocate FSReqPromise stat arrays lazily** (c5cb6bc)
- **http: cache maxHeaderPairs per header section** (98e6272)
- **lib: load fewer builtins when bootstrapping without a snapshot** (e8e2abc)
- **tools: improve commit queue failure comment** (a457631)
- **doc: remove outdated WASI version fallback** (0f36ee3)
- **crypto: enable SIV and GCM-SIV modes in Cipher/Decipher APIs** (f0531f1)
- **ffi: prefer canonical type names** (7670c81)
- **net: handle undefined parent in _unrefTimer and _destroy** (646221a)
- **test_runner: use run options with isolation="none"** (cce803b)
- **sqlite: reject reentry while binding parameters** (6ec735c)
- **module: do not split a portable compile cache by uid** (5821362)
- **test_runner: mock dual-package with conditional exports** (797ef40)
- **test_runner: restore directory search for --test** (1ad7ca3)
- **src: use simdutf for two-byte utf8 conversion** (101a215)
- **doc: document that an empty OPENSSL_CONF skips config loading** (24cd694)
- **tools: improve nix-changes coverage** (78175c6)
- **tools: refactor `shell.nix` pkcs11 integration to its own section** (6f0c08b)
- **meta: move targos to emeritus** (3770f9b)
- **sqlite: remove unused column name helper** (60cb384)
- **doc: clarify socket destroyed behavior** (96b91dc)
- **doc: update outdated nodejs.org guide links** (9d8d27d)
- **sqlite: reject busy statement finalization in authorizer** (fce6754)
- **child_process: keep SIGWINCH from killing on Win** (21655dc)
- **dns: validate address type in lookupService** (152a326)
- **tools: bump brace-expansion in `/tools/clang-format`** (88d5f64)
- **module: report unreadable package.json** (eb5d66e)
- **deps: update zlib to 1.3.2.1-motley-8002e91** (5c7c0b8)
- **deps: update simdjson to 4.6.7** (4cb6b13)
- **tools: make env variables consistent in cron jobs** (41edd2f)
- **quic: write desired size needs update on maxstream** (ec956f2)
- **src: run same-priority platform tasks in posting order** (340b983)
- **fs: treat `std::errc::permission_denied` as `EPERM` error** (2de845b)
- **src: define O_SYNC, O_DSYNC and O_DIRECT on Windows** (83a7949)
- **quic: do not destroy incoming streams that have a consumer** (41c5108)
- **stream: decouple transform backpressure changes** (9ec9383)
- **diagnostics_channel: validate before channel activation** (d286423)
- **doc: clarify that ipv4 mapped to ipv6 are classified as ipv6** (65f6750)
- **ffi: validate the value passed to the float setters** (1fe7a1c)
- **buffer: prevent string write offset overflow** (13e7d54)
- **ffi: reject direct SharedArrayBuffer pointers** (537feec)
- **module: cache nearest parent package.json per directory** (43757d0)
- **fs: read small files in one thread pool round trip** (77fedbd)
- **sqlite: prevent reentrant session.close()** (e2f952f)
- **stream: reject pull on signal abort during flush** (a9dc50d)
- **src: use simdutf for two-byte strings in UTF-8 writes** (32bb197)
- **string_decoder: decode UTF-8 via StringBytes::Encode** (f33dba7)
- **doc: clarify how fs.Dirent file types are determined** (89aba0c)
- **doc: update security release prepare command** (3ed0492)
- **tools: bump undici from 6.27.0 to 6.28.0 in /tools/doc** (1a20d27)
- **doc: clarify copyFile symlink behavior** (63583c4)
- **doc: document setRawMode write access on Windows** (abfc51f)
- **doc: document per-architecture fast FFI argument limits** (4a784cb)
- **sqlite: reuse cached column names in statement all() and get()** (0e8af33)
- **deps: update googletest to 49495eacfdbda3f4b6ba219923fedbb2e3f99376** (a39ad67)
- **ffi: remove dead null check in callback arguments** (0002f0a)
- **ffi: keep FFI functions non-constructible** (9024ec2)
- **util: use more primordials in `comparisons.js`** (f373dab)
- **debugger: wait for target startup** (d69bed2)
- **stream: avoid leaking consumers on signal failure** (815424d)
- **sqlite: validate StatementSync.run() integers** (e6bfec9)
- **stream: use validateObject for zlib/iter params** (6a2e056)
- **stream: use validateNumber for BYOB reader options.min** (4f6f2cf)

### Tests
- **test: update WPT for WebCryptoAPI to e235e089b4** (6409983)
- **test: convert forEach to for of test-messageevent-brandcheck file** (01cb4f9)
- **test: use spawnSyncAndAssert in windowsHide test** (359369e)
- **test: remove test-debugger-run-after-quit-restart as flaky on macOS** (9304dee)
- **test: simplify test-timers-interval-promisified.js** (30f1a19)
- **test: add Headers coverage and benchmark** (acaf986)
- **test: deflake test-net-listen-ipv6only** (b6852e2)
- **test: use common/child_process spawnSync helpers** (235a0ba)
- **test: fix Linux debug skip in SEA test guard** (29f010f)
- **test: add closed-library assertions for getFunctions and getSymbols** (33d7b4c)
- **test: avoid timer race in event loop delay test** (24a76e1)
- **test: enforce exit code in `test-http-server-stale-close`** (fdc1e78)
- **test: convert test-async-local-storage-bind to async loop** (c644f2e)
- **test: replace `forEach()` with `for...of` in parallel tests** (1d5e5e8)

### Chore
- **build: target Power 9 and z14** (ddf9f9d)
- **build: use build-ci for benchmark merge-commit rebuild** (fda8ee8)
- **build: add simdutf dir to include path in GN build** (0369278)
- **build: pass target architecture to small-icu genccode** (3da555a)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/nodejs/node?utm_source=github-action)._