Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/src/app/limitations/page.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ These are rejected at compile time with an `SC` code, a code frame, and usually

- Loose `==`/`!=` comparisons compile between two numbers, two strings, or two booleans, and for the `x == null`/`x != null` nullish idiom. Other coercing comparisons are rejected — use `===`/`!==`.
- Block- and function-scoped `using` and `await using` compile for statically represented classes with zero-parameter disposal methods and for the supported FileHandle, timer, immediate, child-process, and readline handles. Array `for (using ... of ...)` loops compile. Top-level and switch-clause declarations, disposal through an engine-held package value, and the `DisposableStack` constructors remain fenced; a caught `SuppressedError` exposes its Node-compatible `name` and `message`, while its `error` and `suppressed` payload properties remain outside the static catch surface.
- Typed async generator functions and methods compile with lazy execution, `await`, direct `yield`, queued `.next()`/`.return()`/`.throw()` requests, and `for await`. Async `yield*` delegation and arbitrary structural async-iterator objects remain fenced; write an explicit `for await` loop for delegation. The `node:timers/promises` `setInterval(delay, value)` async iterator compiles, while its AbortSignal options remain fenced.
- Generics monomorphize when the target resolves statically. The remaining edges include generic functions declared inside another function, generic class expressions, generic classes whose base depends on their own type parameters, and generic methods that would require dynamic dispatch.
- Generic function values must be pinned at use to a concrete signature and come from a never-reassigned binding; unpinned or rebound values remain fenced. Built-in and standard-library functions often have call-only lowerings, so values such as `const g = Math.floor` are rejected — call them directly.

Expand Down
2 changes: 1 addition & 1 deletion docs/src/generated/node-v24-compatibility-meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
"schemaVersion": 3,
"nodeVersion": "24.15.0",
"nodeCommit": "848430679556aed0bd073f2bc263331ad84fa119",
"artifactVersion": "a8a777761f1b2e39b04c",
"artifactVersion": "981ad58e8b022358310b",
"rowCount": 3662
}
10 changes: 5 additions & 5 deletions docs/src/generated/node-v24-compatibility.json
Original file line number Diff line number Diff line change
Expand Up @@ -1058,9 +1058,9 @@
"apiEntries": 25,
"static": {
"supported": 0,
"partial": 19,
"partial": 20,
"refused": 0,
"not-implemented": 6,
"not-implemented": 5,
"by-design": 0,
"unreviewed": 0,
"not-applicable": 0
Expand Down Expand Up @@ -78290,9 +78290,9 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"detail": "No static compiler lowering is registered for this API yet.",
"verification": "registry-gap"
"status": "partial",
"detail": "Implemented by a dedicated static compiler/runtime path.",
"verification": "test-backed"
},
"dynamic": {
"status": "partial",
Expand Down
84 changes: 55 additions & 29 deletions internal/compatibility/generated/node-v24-backlog.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
"tiers": {
"static": {
"replace-refusal": 73,
"verify-gap": 2760,
"audit-partial": 375,
"verify-gap": 2759,
"audit-partial": 376,
"classify": 3,
"implement": 93
},
Expand Down Expand Up @@ -45352,7 +45352,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -45391,7 +45392,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -45430,7 +45432,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -45537,7 +45540,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -45576,7 +45580,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -45615,7 +45620,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85484,7 +85490,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85523,7 +85530,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85562,7 +85570,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85601,7 +85610,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85640,7 +85650,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85679,7 +85690,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85718,7 +85730,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85757,7 +85770,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85788,12 +85802,17 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:timers",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-dedicated:timersPromises.setInterval",
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
"status": "partial",
Expand Down Expand Up @@ -85930,7 +85949,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -85967,7 +85987,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -86004,7 +86025,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -86142,7 +86164,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -86179,7 +86202,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -86216,7 +86240,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down Expand Up @@ -86253,7 +86278,8 @@
"tests": [
"tests/corpus/1804-timers-module.ts",
"tests/corpus/1805-timer-callback-args.ts",
"tests/corpus/2093-timers-promises.ts"
"tests/corpus/2093-timers-promises.ts",
"tests/corpus/2852-timers-promises-interval.ts"
]
},
"dynamic": {
Expand Down
Loading
Loading