GeezerVison is showing github.com — 2026-08-26, Version 26.8.0 (Current) by github-actions[bot] · Pull Request #65551 · nodejs/node
Conversation
github-actions
Bot
commented
Aug 25, 2026
•
edited by aduh95
Loading
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
bricss and armanmikoyan reacted with thumbs up emoji
bricss reacted with hooray emoji
bricss reacted with heart emoji
bricss reacted with rocket emoji
All reactions
-
👍
2 reactions
-
🎉
1 reaction
-
❤️
1 reaction
-
🚀
1 reaction
sqlite3_prepare_v2() returns SQLITE_OK without producing a statement
when its input holds no SQL, such as a comment. PrepareStatement() only
checked the return code, so it cached a StatementSync wrapping a null
sqlite3_stmt. Executing it reached sqlite3_clear_bindings(), which only
guards against a null statement under SQLITE_ENABLE_API_ARMOR, and
segfaulted.
Reject such input instead of caching it. The StatementSync methods
already avoid the crash because their IsFinalized() guard treats a null
statement as finalized.
Fixes: #65149
Signed-off-by: Trevor Burnham <[email protected]>
PR-URL: #65157
Fixes: #65149
Reviewed-By: René <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Apply the same check to DatabaseSync::Prepare() so that statement-less
SQL is rejected at preparation instead of on first use. This matches
SQLite's own oo1 JavaScript API, which throws when the SQL contains no
statements rather than exposing the C API's null statement pointer.
Previously db.prepare('-- comment') returned a StatementSync whose
statement_ was null. Every method on it threw "statement has been
finalized", which was misleading because nothing had been finalized, and
the object was still inserted into statements_. Since IsFinalized() is
true for a null statement, its destructor skipped UntrackStatement() and
left a dangling pointer in the set that a later close() would finalize.
Refs: #65157 (comment)
Refs: https://sqlite.org/wasm/doc/trunk/api-oo1.md
Signed-off-by: Trevor Burnham <[email protected]>
PR-URL: #65157
Fixes: #65149
Reviewed-By: René <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Node.js ships two pre-generated sets of OpenSSL assembly: `asm`, which
contains the AVX-512 routines, and `asm_avx2`, which does not. The
set is picked in deps/openssl/openssl.gyp based on `gas_version` or
`nasm_version`, but configure.py only reports `gas_version` when the
compiler is not clang, because clang uses its own integrated
assembler and has no GNU assembler version to report. Consequently
every clang build silently falls back to the AVX-512-less `asm_avx2`
set, with no warning.
The result is that `ossl_vaes_vpclmulqdq_capable()` is assembled as a
stub that always returns 0, so OpenSSL never selects
`ossl_aes_gcm_encrypt_avx512()` and uses the older AES-NI path
instead. On an Intel Xeon Gold 6548N this costs roughly 1.6x on
AES-256-GCM and 1.8x on both ChaCha20-Poly1305 and RSA-2048 signing.
This is not limited to custom builds: BUILDING.md documents that the
official linux-x64 binaries are produced with clang, and the shipped
v25.x and v26.x binaries contain the stub.
Accept `llvm_version` in the condition, the way
deps/openssl/openssl.gypi already does for the AVX2 set. clang's
integrated assembler has handled AVX512IFMA since 3.9 and VAES /
VPCLMULQDQ since 6.0; 8.0 is used as a conservative floor, well below
the clang 19.1 that Node.js already requires.
PR-URL: #65136
Reviewed-By: Aviv Keller <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Under run({ testTagFilters, isolation: 'process' }) the parent
process's FileTest wrappers have empty tag sets, so any include filter
filtered out the wrappers themselves and no test file was ever
spawned. The same applied to the single re-spawned child in watch mode
with isolation 'none'.
Exempt file wrappers from tag filtering: the filter is re-emitted to
the child process and applied there, matching isolation 'none'
results.
This also removes the testTagFilterExpressions bookkeeping and the
isolation-conditional assignment of testTagFilters, both of which
existed only to keep the parent process from filtering its own file
wrappers. The parent now always holds the canonical filter values and
re-emits them to child processes.
Refs: #63221
Signed-off-by: atlowChemi <[email protected]>
PR-URL: #65170
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
Optimized V8 fast API calls truncate out-of-range pointer BigInts.
Validate them against uintptrMax before invoking the raw function
so optimized calls match the generic and shared-buffer paths.
Signed-off-by: Kamat, Trivikram <[email protected]>
Assisted-by: codex:gpt-5.6-sol
PR-URL: #65032
Fixes: #65031
Reviewed-By: Matteo Collina <[email protected]>
Add a CredentialsBinding declaration for internalBinding('credentials')
and wire it into InternalBindingMap.
Signed-off-by: HoonDongKang <[email protected]>
PR-URL: #65036
Reviewed-By: Daeyeon Jeong <[email protected]>
tls.connect() with malformed ALPNProtocols hit
CHECK_EQ(0, SSL_set_alpn_protos(...)) in the C++ layer and aborted
the process with SIGABRT.
Validate in JS instead, in convertALPNProtocols, so both client and
server fail early with a recoverable ERR_INVALID_ARG_VALUE:
- zero-length string protocols now throw from convertProtocols
- wire-format buffers are checked for zero-length and truncated
entries
- an empty buffer or array is still accepted and means skip ALPN,
matching the historical behavior for []
The C++ CHECK_EQ is left unchanged: once JS has validated the input,
a non-zero SSL_set_alpn_protos return is an internal invariant
failure rather than user-facing input.
Fixes: #65069
Signed-off-by: Sankalp Thakur <[email protected]>
PR-URL: #65076
Reviewed-By: Tim Perry <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
The encode-and-enqueue transform walked the chunk code unit by code
unit, materializing a single-character string per index and building
the output with string concatenation. The only state that crosses
chunks is a trailing high (leading) surrogate, and TextEncoder.encode's
USVString conversion already replaces every interior lone surrogate
with U+FFFD, which is exactly what the spec loop produces. Join a
pending high surrogate with the incoming chunk, hold back a new
trailing high surrogate, and encode the rest in a single native call.
The streaming decode path also reuses a single options object instead
of allocating { stream: true } per chunk.
An encoding-streams benchmark is added since the suite had no
TextEncoderStream/TextDecoderStream row. Encoding improves by ~546%
with 1KB string chunks and ~20% with 16-character chunks; decode is
unchanged.
Signed-off-by: Matteo Collina <[email protected]>
PR-URL: #65414
Reviewed-By: Gürgün Dayıoğlu <[email protected]>
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Mattias Buelens <[email protected]>
Normalize each stateless transform result before passing it to
the next transform in a fused run. This ensures that subsequent
transforms always receive Uint8Array[] batches in both synchronous
and asynchronous pipelines.
Signed-off-by: Kamat, Trivikram <[email protected]>
Assisted-by: codex:gpt-5.6-sol
PR-URL: #65367
Fixes: #65366
Reviewed-By: James M Snell <[email protected]>
readdir({ recursive: true }) asked the binding for names only and then
called internalModuleStat() on every entry to find the directories to
descend into; with withFileTypes it built the Dirents and still stat()ed
every entry that was not already a directory. Both variants also ran
path.join() and path.relative() per entry to build the relative result.
Ask the binding for file types in all cases, descend into directories
directly, and only stat() symbolic links and entries of unknown type
(which is what could point to a directory). The relative name is the
parent's prefix plus the entry name. Results, their order and the
symlink-following behavior are unchanged for fs.readdirSync, fs.readdir
and fs.promises.readdir.
The known_issues test for Buffer paths (#58892) called back without
checking the error; the error now reaches the callback instead of being
thrown from the completion handler, so the test asserts success to keep
expressing the issue.
Signed-off-by: Shelley Vohr <[email protected]>
PR-URL: #65487
Reviewed-By: Yagiz Nizipli <[email protected]>
Reviewed-By: Gürgün Dayıoğlu <[email protected]>
While more readable, the removed closure overhead unlocks 10-20% in
eventtarget.js benchmark.
Signed-off-by: Szymon Łągiewka <[email protected]>
PR-URL: #64473
Reviewed-By: Chemi Atlow <[email protected]>
Notable changes:
benchmark:
* (SEMVER-MINOR) add --analyze mode to compare.js (James M Snell) #65416
crypto:
* update root certificates to NSS 3.126 (Node.js GitHub Bot) #65495
* (SEMVER-MINOR) enable SIV and GCM-SIV modes in Cipher/Decipher APIs (Filip Skokan) #63411
diagnostics_channel:
* mark TracingChannel as stable (Abdelrahman Awad) #64525
lib,src:
* (SEMVER-MINOR) improve histogram implementation (James M Snell) #65024
net:
* (SEMVER-MINOR) improve performance of net.BlockList (James M Snell) #64974
perf_hooks:
* (SEMVER-MINOR) add statistical hypothesis testing to histogram (James M Snell) #65416
repl:
* add basic syntax highlighting (Aviv Keller) #64591
sqlite:
* (SEMVER-MINOR) add StatementSync.prototype.close() (Guilherme Araújo) #64232
* (SEMVER-MINOR) add StatementSync.prototype[Symbol.dispose]() (Guilherme Araújo) #64232
util:
* (SEMVER-MINOR) add non-throwing MIMEType.parse (James M Snell) #64965
zlib:
* (SEMVER-MINOR) add ZipEntry, ZipFile, and ZipBuffer (Philipp Dunkel) #64339
PR-URL: #65551
|
Review requested:
- @nodejs/actions
- @nodejs/build
- @nodejs/performance
- @nodejs/security-wg
- @nodejs/tsc
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
aduh95
added
the
request-ci
Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review.
label
Aug 25, 2026
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
|
❌ Patch coverage is 90.83715% with 220 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.38%. Comparing base (b4f23d3) to head (2161c94).
⚠️ Report is 1 commits behind head on v26.x.
Additional details and impacted files
@@ Coverage Diff @@
## v26.x #65551 +/- ##
==========================================
+ Coverage 90.20% 90.38% +0.17%
==========================================
Files 741 744 +3
Lines 241431 250463 +9032
Branches 45726 47783 +2057
==========================================
+ Hits 217784 226374 +8590
- Misses 15126 15377 +251
- Partials 8521 8712 +191
... and 127 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.
|
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
aduh95
pushed a commit
that referenced
this pull request
Aug 26, 2026
Notable changes:
benchmark:
* (SEMVER-MINOR) add --analyze mode to compare.js (James M Snell) #65416
crypto:
* update root certificates to NSS 3.126 (Node.js GitHub Bot) #65495
* (SEMVER-MINOR) enable SIV and GCM-SIV modes in Cipher/Decipher APIs (Filip Skokan) #63411
diagnostics_channel:
* mark TracingChannel as stable (Abdelrahman Awad) #64525
lib,src:
* (SEMVER-MINOR) improve histogram implementation (James M Snell) #65024
net:
* (SEMVER-MINOR) improve performance of net.BlockList (James M Snell) #64974
perf_hooks:
* (SEMVER-MINOR) add statistical hypothesis testing to histogram (James M Snell) #65416
repl:
* add basic syntax highlighting (Aviv Keller) #64591
sqlite:
* (SEMVER-MINOR) add StatementSync.prototype.close() (Guilherme Araújo) #64232
* (SEMVER-MINOR) add StatementSync.prototype[Symbol.dispose]() (Guilherme Araújo) #64232
util:
* (SEMVER-MINOR) add non-throwing MIMEType.parse (James M Snell) #64965
zlib:
* (SEMVER-MINOR) add ZipEntry, ZipFile, and ZipBuffer (Philipp Dunkel) #64339
PR-URL: #65551
Reviewers
ronag
ronag approved these changes
aduh95
aduh95 approved these changes
Uh oh!
There was an error while loading. Please reload this page.
Labels
release
Issues and PRs related to Node.js releases.
v26.x
Issues that can be reproduced on v26.x or PRs targeting the v26.x-staging branch.
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
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.
|