$ cat nodejs/week/2026-08-24.log
the week in review · Aug 24 – Aug 30, 2026
Compile cache goes read-only, TLS aborts become throws
This week Node.js hardened its compile cache into a read-only mode, turned TLS configuration aborts into proper throws, and landed a 10-20% EventTarget speedup, among other core and tooling changes.
The most substantial change of the period is the compile cache's new read-only mode [1]. The cache can now be populated once and then used without being written to, which matters for sandboxed or immutable runtimes where cache writes could fail or cause side effects. It also lets deployments bake a cache at build time and serve it read-only in production, eliminating per-process write contention.
Node also replaced a crash with a proper error: TLS connections configured with invalid ALPNProtocols used to abort the process, and now throw instead [2]. This is a breaking change in behavior, though it converts a hard process abort into a catchable exception. Elsewhere, the `--no-experimental-websocket` CLI flag was removed [3], and root certificates were updated to NSS 3.126 [4].
Performance work had a strong week. The EventTarget path gained a 10-20% speedup in one benchmark after inlining the iterationCondition hybrid dispatch closure [5], and webstreams encoding and iteration overhead was reduced [6]. The http ConnectionsList moved to intrusive lists [7], which typically reduces allocation pressure. fs also stopped stat()ing every entry in recursive readdir [8], and there is a fix for realpath of namespaced drive paths [9].
Streams and permissions each got correctness fixes. The stream helper to prevent eager draining of a source now shares state properly [10], and UDP handle adoption is guarded by the permission system [11]. Build tooling advanced too: the snapshot can now be built on top of a V8 startup blob [12], which simplifies embedding Node in custom environments.
The ecosystem and tooling repos moved with incremental updates: actions/setup-node bumped to 7.0.0 in amaro [13], step-security/harden-runner to 2.20.0 [14], changelog-maker shipped v5.0.0 [15], and the reliability report for 2026-08-24 landed [16]. The Node 26.8.1 Docker images also went out, and corepack is reshuffling package manager resolution, but those changes are still settling.
References
- [1] module: add a read-only mode to the compile cache ↗ nodejs/node
- [2] tls: throw on invalid ALPNProtocols instead of aborting ↗ nodejs/node
- [3] lib,src: remove `--no-experimental-websocket` CLI flag ↗ nodejs/node
- [4] crypto: update root certificates to NSS 3.126 ↗ nodejs/node
- [5] events: inline iterationCondition hybrid dispatch closure ↗ nodejs/node
- [6] stream: reduce webstreams encoding and iteration overhead ↗ nodejs/node
- [7] http: use intrusive lists in ConnectionsList ↗ nodejs/node
- [8] fs: stop stat()ing every entry in recursive readdir ↗ nodejs/node
- [9] fs: fix realpath of namespaced drive paths ↗ nodejs/node
- [10] stream: prevent share from eagerly draining source ↗ nodejs/node
- [11] permission: guard UDP handle adoption ↗ nodejs/node
- [12] src: allow building the snapshot on top of a V8 startup blob ↗ nodejs/node
- [13] chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0 ↗ nodejs/amaro
- [14] chore(deps): bump step-security/harden-runner from 2.19.4 to 2.20.0 ↗ nodejs/amaro
- [15] v5.0.0 ↗ nodejs/changelog-maker
- [16] Add report for 2026-08-24 ↗ nodejs/reliability
$ ls nodejs/week/ # the briefings behind this review