Rework lib/internal/webidl.js into a documented shared converter module
that follows the Web IDL conversion algorithms more closely.
Improvements:
- Add documented converters and helper factories for primitive values,
dictionaries, enums, sequences, interfaces, required arguments,
integers, `Uint8Array`, and `BufferSource`.
- Move WebCrypto onto the shared converters, while keeping compatibility
wrappers for its existing `BufferSource` and `BigInteger` behavior.
- Use shared converters from Blob, Performance, Web Locks, and
structured clone option handling.
- Add benchmarks for `ConvertToInt` and WebCrypto Web IDL converter hot
paths.
- Add focused tests for core converters, WebCrypto converters, integer
conversion, and buffer source behavior.
Fixes:
- Make the shared `BufferSource` and `Uint8Array` converters reject
resizable `ArrayBuffer` and growable `SharedArrayBuffer` backing
stores unless explicitly allowed. WebCrypto preserves its legacy
resizable backing-store behavior through compatibility wrappers until
a semver-major follow-up can opt in to the stricter behavior.
- Use Web IDL `ToNumber` and `ToString` behavior for BigInt, Symbol, and
object primitive conversion.
- Use exact BigInt modulo for 64-bit `ConvertToInt` wrapping and
document the final Number approximation behavior.
- Normalize mathematical modulo results to `+0` where Web IDL requires
it.
- Process inherited dictionaries in least-derived to most-derived order,
sorting members only within each dictionary level.
- Use `IteratorComplete` truthiness for sequence conversion.
- Cover detached buffers, resizable-backed views, growable-backed views,
cross-realm buffer sources, mutation-after-call behavior, inherited
dictionary member order, and sequence iterator completion behavior.
Signed-off-by: Filip Skokan <panva.ip@gmail.com>
PR-URL: #62979
Backport-PR-URL: #63563
Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Uh oh!
There was an error while loading. Please reload this page.
doc: remove list of versions inBUILDING.md27c1c1ddoc: document the latest-vX.x schemaececd80doc: add Hmac.digest() documentation-only deprecation (DEP0206)7d81419sqlite: keep source database alive during backup30e71c7module: fix sync hook short-circuit in require() in imported CJS69df688test: use ERM to destroy sqlite database handles after tests64efbfddoc,sqlite: document entryPoint argument for loadExtensione369886doc: update release steps when post-release failsaaef29etls: add unsupported renegotiation error94e5f63quic: remove unused binding variable in session.cc4b367cbdoc: clarify SEA platform support excludes darwin-x64a95fc1flib: refactor internal webidl converters1c16b45crypto: strengthen argument CHECKs in TurboSHAKEe8a55celib: cleanup stateless diffiehellman key handlingc05f382test: update tls/crypto behaviour expectations when using BoringSSL61b20f6http: avoid stream listeners on idle agent sockets44c8ebc2026-06-23, Version 24.18.0 'Krypton' (LTS)20da4ae01ecf45to20da4aeCompareFailed to start CI
https://github.com/nodejs/node/actions/runs/27995253754CI: https://ci.nodejs.org/job/node-test-pull-request/74376/
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
CI: https://ci.nodejs.org/job/node-test-pull-request/74379/
Uh oh!
There was an error while loading. Please reload this page.
Results:
no space left on deviceduring build - build does not occur in the shared directory used for other builds). I've disabled both of those machines temporarily.There is not enough space on the disk) - ✅ based onpath-to-regexphaving been flaky previously - about 20% success rate onrhel9-s390x.Based on the above I have disabled the following three machines temporarily for analysis and to do another clean base run at https://ci.nodejs.org/job/citgm-smoker/nodes=win-vs2022_clang/3738/ but I don't feel it necessary to block on this:
📦 https://ci-release.nodejs.org/job/iojs+release/11881/Failed due to nodejs/build#4380📦 https://ci-release.nodejs.org/job/iojs+release/11887/nodes=osx13-release-pkg/
📦
https://ci-release.nodejs.org/job/iojs+release/11892/nodes=rhel8-arm64-release/https://ci-release.nodejs.org/job/iojs+release/11893/nodes=rhel8-arm64-release/Hi @sxa
Is there an expected date to release this new version?
20da4aeinto v24.xUh oh!
There was an error while loading. Please reload this page.
2026-06-23, Version 24.18.0 'Krypton' (LTS)9f23e70Working on v24.18.19de263aLabels
20 participants