2026-07-22, Version 26.6.0 (Current)#64655
Open
github-actions[bot] wants to merge 121 commits into
Open
Conversation
The builtins conditions for riscv64 and loong64 both have the form 'v8_target_arch=="X" or v8_target_arch=="X"' which is redundant. This was copied from the mips64/mips64el pattern (where the 'or' is correct since those are two different architectures) when riscv64 and loong64 support were first added. Simplify both to match the pattern used by ppc64, s390x, and other single-variant architectures. Signed-off-by: Jamie Magee <jamie.magee@gmail.com> PR-URL: #62608 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com>
Recursive mkdir currently checks an existing intermediate entry directly, so a symlink to a directory is treated as a non-directory and throws ENOTDIR. Resolve symlinked intermediate components while walking the recursive mkdir path, creating new directories in the resolved target while preserving the caller-facing first-created return path. Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com> Assisted-by: openai:gpt-5.5 PR-URL: #64287 Fixes: #64286 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
PR-URL: #64295 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Richard Lau <richard.lau@ibm.com>
Signed-off-by: Tim Perry <pimterry@gmail.com> PR-URL: #64134 Reviewed-By: James M Snell <jasnell@gmail.com>
If you are only sending datagrams and so streams, your datagrams could stall. There were two reasons: i. A SendPendingDataScope in SendDatagrams was missing. ii. SendPendingData did not attempt to send datagrams, if there were no stream data. Signed-off-by: Marten Richter <marten.richter@freenet.de> PR-URL: #64303 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: James M Snell <jasnell@gmail.com>
for await / reader.read() loops over byte streams were ~4x slower than over default streams. Three per-chunk costs, none required by the spec: - ArrayBufferViewGetBuffer/ByteLength/ByteOffset went through ReflectGet(view.constructor.prototype, ...), a reflective get that is ~3.5x slower than the original prototype getters from primordials and spoofable through a user-defined .constructor to boot. - The buffered fast paths in ReadableStreamDefaultReader.read() and the async iterator only covered default controllers, so byte streams with queued data still allocated a read request and PromiseWithResolvers per chunk. Byte-queue dequeue is fully synchronous (it is the queue-filled arm of the byte controller's pull steps), so both fast paths now resolve directly from the byte queue. - readableByteStreamControllerEnqueue re-ran the reader brand check and re-loaded the read request list four times per chunk across HasDefaultReader / ProcessReadRequestsUsingQueue / GetNumReadRequests / FulfillReadRequest; it now does a single pass. The async iterator also reuses its read request object across reads (at most one is ever in flight). benchmark/webstreams interleaved same-day A/B, --runs 10: readable-async-iterator bytes +16.3% (***), readable-read byob +9.1% (***), all other rows neutral. Profiler harness: parked byte iteration +14%, buffered byte iteration +37%, buffered byte read loop +18%, default-stream rows at parity. WPT streams/compression/encoding subtests identical to baseline. Signed-off-by: Matteo Collina <hello@matteocollina.com> PR-URL: #64291 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Signed-off-by: Matteo Collina <hello@matteocollina.com> PR-URL: #64291 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: James M Snell <jasnell@gmail.com>
The depth of the stack depends not only on the stack size, but also on the size of each stack frame, which in turn depends on which tier the recursive function happens to be running at when the overflow occurs. Under load the background tier-up can land at a non-deterministic point in the recursion and flake the test. Keep the recursive function in the interpreter with %NeverOptimizeFunction() so the frame size - and thus the depth - is deterministic. Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com> PR-URL: #64271 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
When a test uses 'pipe' for the stdio but the child process crashes, the stream will be null. In this case, don't try to stringify it and instead log an empty string. Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com> PR-URL: #64273 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Signed-off-by: Guilherme Araújo <arauujogui@gmail.com> PR-URL: #64219 Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Signed-off-by: Efe Karasakal <hi@efe.dev> PR-URL: #64158 Reviewed-By: Tim Perry <pimterry@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Every _write()/_writev() on an Http2Stream allocated four closures and an anonymous nextTick callback to coordinate the write callback with the end-of-stream check. Since the stream machinery dispatches at most one write at a time, that coordination state can live on the stream's kState object instead, with shared named functions for the end check and completion logic. When trailers are pending the writable side cannot be shut down early anyway, so the end-of-stream check tick is now skipped entirely for those writes. Also pre-initialize the kState fields that used to be added dynamically (shutdownWritableCalled, fd) so hot-path stores no longer transition the object shape. h2load, 1 KiB response payload, -c 4 -m 100, mean of 6 alternating runs vs main: core API 61.0k -> 70.7k req/s (+15.9% cumulative), compat API 43.7k -> 50.4k req/s (+15.3% cumulative). Signed-off-by: Matteo Collina <hello@matteocollina.com> PR-URL: #64265 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day> Reviewed-By: Tim Perry <pimterry@gmail.com>
respond() copied the user-provided options object on every call just so it could normalize and locally flip options.endStream, and prepareResponseHeadersObject() then looked the :status and date fields up again on the dictionary-mode null-prototype headers copy it had just built. Use a local variable for endStream and pick up :status/date while copying the headers instead. No measurable throughput change on its own; this removes an object clone and several dictionary-mode property lookups per response. Signed-off-by: Matteo Collina <hello@matteocollina.com> PR-URL: #64265 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day> Reviewed-By: Tim Perry <pimterry@gmail.com>
Signed-off-by: Chengzhong Wu <cwu631@bloomberg.net> PR-URL: #64220 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Adrian Estrada <edsadr@gmail.com> Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com> Reviewed-By: Harshitha K P <harshitha014@gmail.com>
Signed-off-by: Moshe Atlov <moshe@atlow.co.il> PR-URL: #64309 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Original commit message:
[execution] Lookup interceptor for RestrictedGlobalProperty
When the script context looks up if a global property is
restricted, it should also query the global interceptor.
To avoid calling the interceptor for every declaration
unconditionally, an interceptor has to be defined with
`PropertyHandlerFlags::kHasDontDeleteProperty`
to intercept restricted global property queries.
Refs: #63715
Refs: #52634
Change-Id: I623ff285c4e8773d8ee7f681cbad68ba24bd3f40
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/7898818
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#108280}
Refs: v8/v8@a05321e
Signed-off-by: Chengzhong Wu <cwu631@bloomberg.net>
PR-URL: #64202
Fixes: #63715
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Signed-off-by: Chengzhong Wu <cwu631@bloomberg.net> PR-URL: #64202 Fixes: #63715 Refs: v8/v8@a05321e Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Increase the base timeout in test-http-server-consumed-timeout from common.platformTimeout(200) to common.platformTimeout(1000). The test is intentionally timing-sensitive and can fail on slower or more contended CI hosts when timers fire later than expected. Using a larger timeout reduces false positives without changing the behavior being tested. Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com> Assisted-by: openai:gpt-5.5 PR-URL: #64204 Refs: https://ci.nodejs.org/job/node-stress-single-test/764/ Reviewed-By: Filip Skokan <panva.ip@gmail.com>
When an input provides Symbol.iterator, fromSync() should consume the synchronous iterator instead of rejecting the input because it also exposes an asynchronous or promise-like protocol. Continue rejecting async-only iterables and promise/thenable-only inputs, but allow sync iterables that also define Symbol.asyncIterator or then(). Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com> Assisted-by: openai:gpt-5.5 PR-URL: #64294 Fixes: #64292 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
checkServerIdentity() stopped matching an IPv6 host against a matching
IP-Address SAN. The hostname is now run through domainToASCII() before
the net.isIP() gate, and domainToASCII('::1') === '' (an IPv6 literal is
not a domain), so net.isIP('') is 0, the IP-SAN branch is skipped, and
verification fails with "Cert does not contain a DNS name". IPv4 is
unaffected because dotted-decimal survives domainToASCII().
Match IP hosts against the original hostname instead of the IDNA-
normalized one. net.isIP() rejects non-ASCII input, so there is no IDNA
confusion to guard against for an IP literal; the normalized form is
still used for the DNS-name path.
Fixes: #64144
Signed-off-by: Pascal Garber <pascal@artandcode.studio>
PR-URL: #64145
Reviewed-By: Tim Perry <pimterry@gmail.com>
PR-URL: #64315 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Signed-off-by: Paolo Insogna <paolo@cowtech.it> Assisted-By: OpenAI:GPT-5.5 <openai/gpt-5.5> PR-URL: #64323 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com>
- Clarify permissions needed to be able to prepare a release - Add CitGM to the "relevant jenkins jobs" section - Clarify GPG key creation process and algorithms - Also suggest that GPG keys can be published to ubuntu's keyservers - Clarify that signed commits on release branches are required - Add note about branch-diff using significant github API credits - Explicit comment on each section which can be skipped with automation Signed-off-by: Stewart X Addison <sxa@ibm.com> PR-URL: #64198 Reviewed-By: Richard Lau <richard.lau@ibm.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
PR-URL: #64321 Signed-off-by: Stewart X Addison <sxa@ibm.com>
fromList() re-read state.length and each chunk's length several times per call and re-loaded buffer[idx] around every copy, and read() loaded state.length three times in its read(0) check; the engine cannot fold these loads across the intervening copy and slice calls. Cache them in locals instead. Ported from Bun's fork of the same functions (src/js/internal/streams/readable.ts fromList/read), which carries these hoists on top of the shared readable-stream lineage. benchmark/compare.js against the unmodified baseline (60-run capture plus an independent 30-run repeat, Welch t-test): streams/readable-unevenread +0.65% (p=4.3e-4) / +0.59% (p=5.9e-3) and streams/pipe.js +0.74% (p=2.0e-4) / +0.52% (p=8.8e-3), with no significant regression across the captured streams benchmarks. Refs: https://github.com/oven-sh/bun/blob/main/src/js/internal/streams/readable.ts Signed-off-by: Yagiz Nizipli <yagiz@nizipli.com> Assisted-by: Grok (Grok Build) PR-URL: #64312 Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
The [[queue]] backing every default readable/writable controller was a
plain array of { value, size } wrappers consumed with
ArrayPrototypeShift, so each buffered chunk allocated a wrapper object
and each dequeue moved (or forced the engine to re-linearize) the
remaining elements; the byte controller queue paid the same shift cost
for its chunk descriptor records.
Replace the array with a power-of-two ring buffer. Default controller
queues store each entry as (value, size) in two consecutive slots, so
the per-chunk wrapper allocation disappears; the byte controller keeps
its descriptor records (they are mutated in place at the head) in
single slots. Controllers start from (and are reset to) a shared
immutable empty queue, so constructing a stream allocates no queue
storage until a chunk is actually buffered. Enqueues measured by the
internal default size algorithm (never observable by user code, always
returns 1, cannot throw) skip the algorithm call and its try/catch
entirely.
The layout mirrors what Bun/WebKit use for the same spec structure:
[[queue]] as a ring-buffer deque (WTF::Deque in Bun's
src/jsc/bindings/webcore/streams/StreamQueue.h), the pure-JS ring
buffer in Bun's src/js/internal/fifo.ts, and the trivial-size-algorithm
bypass in
src/jsc/bindings/webcore/streams/JSReadableStreamDefaultController.cpp.
benchmark/compare.js against the unmodified baseline (30-run capture
plus an independent 15-run repeat, Welch t-test, all p < 1e-5):
webstreams/pipe-to.js +12-17% across all sixteen high-water-mark
configurations, readable-read-buffered +20% (bufferSize=1) to +49%
(bufferSize=1000), readable-async-iterator +21%. No stable significant
regression across the rest of the webstreams suite: the creation.js and
readable-read.js deltas seen in the full-suite capture disappear in
isolated 60-run rechecks.
Refs: https://github.com/oven-sh/bun/blob/main/src/js/internal/fifo.ts
Signed-off-by: Yagiz Nizipli <yagiz@nizipli.com>
Assisted-by: Grok (Grok Build)
PR-URL: #64312
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
- when the defer imported module contains top-level await - when the defer imported module is also eagerly imported Refs: https://github.com/tc39/proposal-defer-import-eval Signed-off-by: Maya Lekova <maya@igalia.com> PR-URL: #64197 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
The http3 application had misinterpreted some of nghttp3 callbacks regarding stopSending and ResetStream. Actually, these callbacks asks the application to do the action and not informs about an event from the peer. The fixes lead to some failures of the automated tests, uncovering some problems: First headers, and pendingTrailers were reset, when the internal object went away, though the test wanted to read them. Second, during a graceful session shutdown, the implemented did not waited for all stream to be removed, but only one. Fixes: #63657 Signed-off-by: Marten Richter <marten.richter@freenet.de> PR-URL: #64289 Fixes: #63657 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Tim Perry <pimterry@gmail.com>
PR-URL: #64199 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day> Reviewed-By: Richard Lau <richard.lau@ibm.com>
One small fix notably included: - Check is_destroyed() after StreamCommit, since it calls JS callbacks which could destroy the session. Signed-off-by: Tim Perry <pimterry@gmail.com> PR-URL: #64127 Reviewed-By: James M Snell <jasnell@gmail.com>
Signed-off-by: HoonDongKang <d159123@naver.com> PR-URL: #64520 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com>
Signed-off-by: Tim Perry <pimterry@gmail.com> PR-URL: #64521 Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Use a non-following provider operation for lchmod so it updates the symbolic link metadata instead of changing the target file mode. Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com> Assisted-by: openai:gpt-5.5 PR-URL: #64350 Fixes: #64349 Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: Adam Haglund <adam@haglund.dev> PR-URL: #63915 Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: Adam Haglund <adam@haglund.dev> PR-URL: #63915 Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: greenhead <shren0812@gmail.com> PR-URL: #64425 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Calling destroy() on the http2session.socket proxy now destroys the session instead of throwing ERR_HTTP2_NO_SOCKET_MANIPULATION. Refs: nodejs/undici#5525 Signed-off-by: Matteo Collina <hello@matteocollina.com> PR-URL: #64427 Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: James M Snell <jasnell@gmail.com>
`assert.deepStrictEqual`, `assert.notDeepStrictEqual`, and `util.isDeepStrictEqual` threw a `TypeError` instead of returning a result when one Map had a `null` key with an object value, the other had an object key with a deeply-equal value but no `null` key, and both maps were the same size. In that case `mapObjectEquiv` skipped its primitive and `null` key handling, which was gated on `array.length !== a.size`, and passed the `null` key (which is `typeof 'object'`) to the object comparator. That comparator reads `key.constructor` without a null guard, so it threw. Handle primitive and `null` keys unconditionally, resolving them directly against the other map. Fixes: #64433 Signed-off-by: Paul Bouchon <mail@bitpshr.net> PR-URL: #64441 Reviewed-By: Jordan Harband <ljharb@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Aviv Keller <me@aviv.sh>
The subsequent test checks for an invalid groupAddress, not sourceAddress as the comment say. Adjust the comment to correctly reflect what the test does. Signed-off-by: Rich Trott <rtrott@gmail.com> PR-URL: #64524 Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
When a source is piped to multiple destinations and one destination errors synchronously in `_write()`, `write()` returns false without setting `needDrain` (since the "avoid unnecessary drain for sync stream" change). The pipe cleanup only re-invoked the source's drain handler when the destination still had `needDrain` set, so the errored destination was never removed from the source's `awaitDrainWriters` set. The source stayed paused forever and any remaining healthy destination stopped receiving data. Always invoke the drain handler during cleanup. `pipeOnDrain` only removes this destination from the awaiting-drain set and resumes the source once nothing else is awaiting a drain, so it is safe to call unconditionally and no-ops when this destination was not awaiting a drain. Fixes: #53185 Signed-off-by: Mahin Anowar <86069420+MahinAnowar@users.noreply.github.com> PR-URL: #64310 Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
After firing timers, we can clean them up by iterating over all active stores and setting the relevant symbols to undefined. Fixes #53408 Signed-off-by: Matteo Collina <hello@matteocollina.com> PR-URL: #53443 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
Apply util.styleText to the `node --help` output for improved visual hierarchy and scannability. Styling is applied only when the output stream supports color (detected via util.styleText's built-in shouldColorize), so piped/redirected output and NO_COLOR remain plain text with no behavior change. - Bold: Usage lines, Options:, Environment variables: headers - Bold green: CLI option names (e.g. --inspect, -e, --eval) - Bold magenta: environment variable names (e.g. NODE_PATH) - Dim: "(currently set)" annotation - Blue underline: documentation URL Column-width math uses unstyled string lengths to preserve alignment regardless of styling. The "(currently set)" annotation is styled via post-processing after layout to avoid breaking the fold() width calculation. Signed-off-by: Adrian Estrada <edsadr@gmail.com> PR-URL: #64484 Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Environment variables loaded with `--env-file` are not applied to the command executed by `--run`. Document this limitation under `--run`. Fixes: #62988 Signed-off-by: Paul Bouchon <mail@bitpshr.net> PR-URL: #64442 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Function signatures were read by the native implementation and then read again while creating JavaScript wrappers. Accessors, proxies, or mutations could therefore produce different native and JavaScript signatures. Build wrappers from signature metadata captured by native code instead. Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com> Assisted-by: openai:gpt-5.6-sol PR-URL: #64559 Fixes: #64558 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Signed-off-by: Aviv Keller <me@aviv.sh> PR-URL: #64569 Refs: https://github.com/nodejs/node/pull/62105/changes#r3182288004 Refs: https://openjs-foundation.slack.com/archives/C019Y2T6STH/p1784126065845719 Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Signed-off-by: Filip Skokan <panva.ip@gmail.com> PR-URL: #64582 Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Signed-off-by: yusheng <samuel871211@gmail.com> PR-URL: #64468 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: #64588 Reviewed-By: René <contact.9a5d6388@renegade334.me.uk> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
When there are multiple artifacts, `actions/download-artifact` creates subdirectories for each artifact, and results in incorrect folder structure assumptions in later steps. Signed-off-by: Chengzhong Wu <cwu631@bloomberg.net> PR-URL: #64633 Fixes: #64554 Refs: https://github.com/actions/download-artifact#download-all-artifacts Refs: https://github.com/nodejs/node/actions/runs/29768247349/job/88454933457?pr=64565#step:2:24 Reviewed-By: Aviv Keller <me@aviv.sh> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Filip Skokan <panva.ip@gmail.com>
The THROW_IF_INSUFFICIENT_PERMISSIONS and ASYNC_THROW_IF_INSUFFICIENT_PERMISSIONS macros called ThrowAccessDenied/AsyncThrowAccessDenied unconditionally and only guarded the `return` with `warning_only()`. ERR_ACCESS_DENIED_IF_INSUFFICIENT_PERMISSIONS had no `warning_only()` guard at all — it always set the access-denied error and returned. As a result, running with `--permission-audit` still produced ERR_ACCESS_DENIED on any denied operation (fs, net, child_process, worker, addon, ffi, inspector, wasi), defeating the audit-only purpose of the flag. Guard the denied-error path behind `!warning_only()` in all three macros. In audit mode, the diagnostics-channel message is published (already done in Permission::is_scope_granted) and execution continues; in enforce mode (`--permission`), behavior is unchanged — the error is raised and the call returns. The tests cover both the direct (top-level) call and an `eval()`-wrapped call: the direct call exercises the normal script path, and the `eval()`-wrapped call exercises the V8 script-context boundary (the diagnostics subscriber is registered in the outer module context while the denied operation runs inside an eval'd string). Refs: 9ddd1a9 Signed-off-by: Adrian Estrada <edsadr@gmail.com> PR-URL: #64426 Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Treat an unfinished Zstd frame as an unexpected end of file when the stream is finalized with ZSTD_e_end. Avoid reporting an error while the output buffer still needs to be drained or when an empty final write follows a completed frame. Preserve partial decompression when ZSTD_e_flush is used. Signed-off-by: Archkon <180910180+Archkon@users.noreply.github.com> PR-URL: #64593 Fixes: #64592 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ryuhei Shima <shimaryuhei@gmail.com>
The SEA configuration defines the output binary as `sea`, but the signing and run steps still referenced `hello`. Update the example to use `sea` consistently so the commands match the generated binary. Signed-off-by: Maxence Robinet <107369283+saint-james-fr@users.noreply.github.com> PR-URL: #64025 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
MemoryProvider recursive readdir walked the directory tree with a recursive helper. Rewrite it to traverse iteratively with an explicit stack so a deeply nested tree can no longer exhaust the call stack. The set of directories on the active traversal path is still tracked, so a circular symlink stops descending while its entry remains listed; the output and observable behavior are unchanged. Refs: #64168 Signed-off-by: AkshatOP <hunterdevil0987@gmail.com> PR-URL: #64149 Fixes: #64148 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: Steven <steven@ceriously.com> PR-URL: #63420 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
The import.meta example for new vm.SourceTextModule() in vm.md does not
run as written. It fails in two separate ways.
First, the constructor is missing the context: contextifiedObject
option, so the module evaluates in the top context where secret is not
defined, and the snippet throws ReferenceError: secret is not defined.
Second, the trailing note suggests replacing meta.prop = {} with
vm.runInContext('{}', contextifiedObject), but '{}' is parsed as an
empty block and evaluates to undefined. That makes the following
Object.getPrototypeOf(import.meta.prop) throw TypeError. Wrapping it as
'({})' returns an object, which is what the note intends.
This adds the context option and corrects the suggested replacement to
'({})' in both the mjs and cjs variants.
Fixes: #64076
Signed-off-by: Muhammad Zeeshan <61280174+zeeshan56656@users.noreply.github.com>
PR-URL: #64112
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Signed-off-by: Muhtasim-Munif-Fahim <s1911024120@ru.ac.bd> PR-URL: #64371 Fixes: #64360 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Stewart X Addison <sxa@redhat.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Collaborator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
70215027fe] - (SEMVER-MINOR) ffi: addgetCurrentEventLoop(Paolo Insogna) #64323417e819859] - (SEMVER-MINOR) test_runner: addcontext.log()andtest:logevent (Moshe Atlow) #64389816e34cf3f] - (SEMVER-MINOR) test_runner: reportentryFileinTestStreamevents (Moshe Atlow) #64309Commits
1f227919ae] - assert,util: fix TypeError on Maps with null keys (Paul Bouchon) #644410942ad9c09] - benchmark: add bytes variant to webstreams async-iterator (Matteo Collina) #64291d1567abe3e] - buffer: normalize lone "\r" in Blob native line endings (Daijiro Wachi) #64115a4e664feae] - buffer: fix Blob.stream() leaking source buffer (semimikoh) #63577e8658af243] - build: merge multiple on download artifact (Chengzhong Wu) #6463378deeba482] - build: extract temporal_capi crate directory name into gyp variable (René) #644821409bb6468] - cli: style node --help output with util.styleText (Adrián Estrada) #6448445489691ef] - deps: update timezone to 2026c (Node.js GitHub Bot) #64588778d126ffb] - deps: V8: cherry-pick 1158ae719749 (René) #644327da09e07bd] - deps: update googletest to 8240fa7d62f73e01c7af27d61ed965d6d66698fa (Node.js GitHub Bot) #6443984fcd9d7c6] - deps: update libffi to 3.7.1 (Node.js GitHub Bot) #64438531f8fe6e7] - deps: update ngtcp2 to 1.24.0 (Node.js GitHub Bot) #64297a9a06a679c] - deps: enable OpenSSL asm support for riscv64 (Jamie Magee) #62606bbbe223a19] - deps: update c-ares to 1.34.8 (Node.js GitHub Bot) #6433052e427dc07] - deps: upgrade npm to 11.18.0 (npm team) #64199dbd98edec3] - deps: V8: backport a05321ebd98e (Chengzhong Wu) #64202ae675c5ba8] - deps: update zlib to 1.3.2.1-motley-8b3aa8a (Node.js GitHub Bot) #6429568dc114a82] - doc: use promote wording in release guide (Md Muhtasim Munif Fahim) #6437150f526b1ef] - doc: fix import.meta example for vm.SourceTextModule (Muhammad Zeeshan) #641125f9b182896] - doc: mention crypto.hash() for better perf (Steven) #63420c770d35929] - doc: update sea example by fixing wrong code example (Maxence Robinet) #64025b4a041967f] - doc: fix socket.readyState state descriptions (YuSheng Chen) #64468f303f47ded] - doc: replace large tables in crypto.md and webcrypto.md with lists (Filip Skokan) #64582d5dbde0325] - doc: note --env-file is not applied to --run (Paul Bouchon) #644429a1a67e88c] - doc: fix typo in embedding.md (greenhead) #644252af4b9479b] - doc: fix typos in contributing docs (Donghoon Kang) #64520a6f3da4931] - doc: document TLS alpnProtocol and servername fields (Tim Perry) #64362e3909ffd51] - doc: fix spelling in devcontainer guide (한만욱) #64459630aa4b6f6] - doc: clarify PEM format for signing keys (Harjoth Khara) #64404e65b2ca2d2] - doc: fix typo in tls.md (Daijiro Wachi) #644583194059e60] - doc: document net Socket server property (Efe Karasakal) #64364628eab4637] - doc: update a Dispatcher undici doc link (Filip Skokan) #6435842b4bffbe2] - doc: fix typos in documentation (Jungwon Sohn) #64466e4187aa11a] - doc: clarify fixes and refs trailer guidance (Trivikram Kamat) #64421f6509cf4c0] - doc: remove duplicate VirtualProvider description (Archkon) #644005d9158da49] - doc: add scope overview tables for TestsStream events (Moshe Atlow) #64386618b22c2b2] - doc: clarify proxy threat model (Matteo Collina) #64366d878faa238] - doc: add note about restricted CI to pull-requests.md (Stewart X Addison) #64321a7cd704349] - doc: various updates to releases.md (Stewart X Addison) #64198644b1a5c4c] - doc: remove obsolete --napi-modules doc entry (Chengzhong Wu) #642206fc05e3d21] - doc,test: widen fsPromises.appendFile()'s data type, add missing tests (Jimmy Leung) #6427992f25d6140] - events: avoid retaining removed event names (Matteo Collina) #64475b5c03aac0f] - events: optimize once() and removeListener() (Matteo Collina) #64373a5d676d34c] - ffi: evaluate function signatures once (Trivikram Kamat) #6455970215027fe] - (SEMVER-MINOR) ffi: add getCurrentEventLoop (Paolo Insogna) #6432317face6c2b] - fs: add pattern cache for matchGlobPattern() (bq) #6391515e18a8a10] - fs: fix cp symlink and EEXIST handling on Windows (Kirill Saied) #64353962c9d9fae] - http: fix perf_hooks detail.req.url port and proxied path (Stefano Baghino) #64311de5b7348b1] - http: remove unused n arg from IncomingMessage._read (Efe Karasakal) #643707bfcd28b95] - http2: don't throw when destroying socket proxy (Matteo Collina) #644277f054f63ae] - http2: avoid copying the options in respond() (Matteo Collina) #6426547c032d4df] - http2: avoid per-write closures in kWriteGeneric (Matteo Collina) #64265f7a8fc889d] - inspector: add --cond to node inspect probe mode (Joyee Cheung) #64328fec90a3fb3] - lib: useassignFunctionNameutil where it makes sense (Antoine du Hamel) #6451515860ffc21] - lib,tools: addnode-core/func-name-matchinglint rule (Livia Medeiros) #57901caaf5f7c40] - meta: lower stale to 3 months (Aviv Keller) #6456929176fe096] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #64315b063a016ed] - module: add two tests for eager imports when usingimport defer(Maya Lekova) #6419714955b43c0] - net: support sync connect for BoundSocket (Guy Bedford) #64375a1fcbb70d1] - net: make TCP Server and Socket transferable across worker threads (Matteo Collina) #642259ac1b68da3] - path: add benchmarks for path.matchesGlob() (bq) #6391586f27e2c0d] - quic: preserve session stats after close (한만욱) #64489ffa1a265c9] - quic: add support for TLS certificate compression (Sebastian Beltran) #64434a643e34189] - quic: extract transport logic from Application to Session (Tim Perry) #64127648c359828] - quic: correct http3 callback and fix revealed errs (Marten Richter) #642899403eb726d] - quic: fix no onstream handler crash quic (Efe) #641589a3e506cca] - quic: fix stall datagrams, if no pending streams (Marten Richter) #64303f68c2348c6] - quic: fix potential crash from unobserved closed (Tim Perry) #641344f232ce465] - sqlite: read column count after step in StatementSync.all() (Guilherme Araújo) #64219d2956fe4ec] - src: fix comment typos (Jungwon Sohn) #64509485d475739] - src: zero-initialize cap_data in node_credentials.cc (Samuel Kapust) #643476ebda1eaac] - src: fix some typo errors and rename some variables (Archkon) #643011aa1f91b32] - src,permission: do not throw on denied access in audit mode (Adrián Estrada) #64426ddf779893d] - stream: fix drop-newest behavior in share() (Trivikram Kamat) #64417ae95123c5d] - stream: resume flow when an errored pipe destination is removed (Mahin Anowar) #643104ef659a514] - stream: fold desired-size check into WHATWG backpressure update (Matteo Collina) #6445137a3fe1fea] - stream: validate writer options signal (Trivikram Kamat) #643857677b1c307] - stream: reject push iterator.throw() with error (Trivikram Kamat) #64380e223479fdc] - stream: simplify nestedPromisePrototypeThens (Antoine du Hamel) #644703413ab9432] - stream: use the ring buffer for WHATWG stream request queues (Matteo Collina) #64431f89cf33ad3] - stream: validate writevSync chunks before queuing (Trivikram Kamat) #64300a5a1c0d755] - stream: speed up reads and iteration over default WHATWG streams (Matteo Collina) #64320faf25bc934] - stream: copy SAB-backed chunks in iter consumers (Trivikram Kamat) #643829bb5f8a936] - stream: reject nested async streamables in from() (Trivikram Kamat) #64352e029e2247c] - stream: avoid draining merged iter sources (Trivikram Kamat) #642930cdc215ef7] - stream: use ring buffer for WHATWG stream queues (Yagiz Nizipli) #64312a202b2a672] - stream: hoist repeated loads in readable paths (Yagiz Nizipli) #64312fccb76b3ff] - stream: prefer sync iterator in fromSync (Trivikram Kamat) #64294a238e20345] - stream: speed up async iteration over WHATWG byte streams (Matteo Collina) #6429102f9d5271d] - test: apply correction to comment (Rich Trott) #645241371b1420c] - test: keep finalization before-exit ref alive (Tim Perry) #6452128cb3f662c] - test: copyedittest-tls-psk-alpn-callback-exception-handling(Antoine du Hamel) #634858799c12aab] - test: fix stale async-context-frame status entries (Kirill Saied) #64141bce46f2419] - test: update WPT for urlpattern to 5847ee5cfa (Node.js GitHub Bot) #6443671e6570b64] - test: update WPT for WebCryptoAPI to ec2fee39a4 (Node.js GitHub Bot) #6443520b4eb8b43] - test: fix flaky http2 maxOriginSetSize test (Tim Perry) #644074284ea60a5] - test: fix 2nd flaky blob test case (Tim Perry) #643911c3e00b531] - test: fix flaky watch + cwd + argv test-runner test (Tim Perry) #643729fcafb8bb5] - test: normalize Windows crash in debugger test normalization (Joyee Cheung) #643324ec3d4b889] - test: unmark flaky http2-large-file for Win (Kirill Saied) #64255c03718dac3] - test: unmark flaky SEA snapshot tests on Windows (Kirill Saied) #64317e34b76866e] - test: increase timeout in consumed-timeout test (Trivikram Kamat) #64204b47da6441f] - test: handle null stdio streams in spawnSyncAndAssert helper (Joyee Cheung) #6427394c8e10ee1] - test: remove impact of tier-up changes in worker stack size test (Joyee Cheung) #64271417e819859] - (SEMVER-MINOR) test_runner: add context.log() and test:log event (Moshe Atlow) #64389816e34cf3f] - (SEMVER-MINOR) test_runner: reportentryFileinTestStreamevents (Moshe Atlow) #64309351646e7f7] - timers: do not retain a reference to the async store after firing (Matteo Collina) #53443586996a3b9] - tls: match IPv6 hosts against IP-Address SANs (Pascal Garber) #64145586b896da4] - tools: reference 'git node land' in PR-URL: error message in merge.sh (Stewart X Addison) #644956c1dbfbfab] - tools: disable zipping tarballs on GHA (Antoine du Hamel) #64423bd1e1d0672] - tools: add workflow to compare Nix changes (Antoine du Hamel) #64410ba12937bde] - tools: add option forbenchmark.ymlto post comment on PR (Antoine du Hamel) #643950f6f5cca71] - tools: fix redundant conditions in v8.gyp for riscv64 and loong64 (Jamie Magee) #62608ebd73460ea] - util: make MIMEParams accessors case-insensitive (Daijiro Wachi) #64123de554dd580] - vfs: make recursive readdir iterative (AkshatOP) #64149f0b8a831c8] - vfs: make lchmod update symlink mode (Trivikram Kamat) #64350713b0e57dd] - vfs: fix VirtualReadStream race with async iteration (Y1D7NG) #64394f375bfe60c] - vfs: follow symlinked dirs in recursive mkdir (Trivikram Kamat) #642871ee27c2a3e] - vm: enable interception on global restricted properties (Chengzhong Wu) #64202612a8287b3] - zlib: reject truncated zstd input (Archkon) #64593