feat: add static async iteration parity (#328)

This commit is contained in:
Chris Tate
2026-09-15 00:03:07 -05:00
committed by GitHub
parent 2bd2e6f54c
commit 5a782a6150
29 changed files with 1320 additions and 186 deletions
@@ -8,8 +8,8 @@
"tiers": {
"static": {
"replace-refusal": 73,
"verify-gap": 2759,
"audit-partial": 379,
"verify-gap": 2756,
"audit-partial": 382,
"classify": 3,
"implement": 89
},
@@ -80003,12 +80003,15 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:stream",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:stream.readable",
"tests": [
"tests/corpus/1746-stream-for-await.ts",
"tests/corpus/2861-readable-iterator-close.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -80102,12 +80105,15 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:stream",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:stream.readable.iterator",
"tests": [
"tests/corpus/1746-stream-for-await.ts",
"tests/corpus/2861-readable-iterator-close.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -102830,12 +102836,14 @@
"priority": "high",
"tiers": {
"static": {
"status": "not-implemented",
"action": "verify-gap",
"verification": "registry-gap",
"confidence": "low",
"source": "compiler-unmatched:webstreams",
"tests": []
"status": "partial",
"action": "audit-partial",
"verification": "test-backed",
"confidence": "high",
"source": "compiler-feature:webstreams.readableStream.values",
"tests": [
"tests/corpus/2862-web-readable-async-iteration.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -1107,9 +1107,9 @@
"apiEntries": 137,
"static": {
"supported": 0,
"partial": 31,
"partial": 33,
"refused": 0,
"not-implemented": 106,
"not-implemented": 104,
"by-design": 0,
"unreviewed": 0,
"not-applicable": 0
@@ -1443,9 +1443,9 @@
"apiEntries": 88,
"static": {
"supported": 0,
"partial": 2,
"partial": 3,
"refused": 2,
"not-implemented": 84,
"not-implemented": 83,
"by-design": 0,
"unreviewed": 0,
"not-applicable": 0
@@ -93874,7 +93874,9 @@
"tests": [
"tests/corpus/1685-stream-readable-basics.ts",
"tests/corpus/1688-stream-writable-basics.ts",
"tests/corpus/1814-stream-pipeline.cjs"
"tests/corpus/1746-stream-for-await.ts",
"tests/corpus/1814-stream-pipeline.cjs",
"tests/corpus/2861-readable-iterator-close.ts"
]
},
"dynamic": {
@@ -96610,8 +96612,12 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:stream"
"status": "partial",
"evidence": "compiler-feature:stream.readable",
"tests": [
"tests/corpus/1746-stream-for-await.ts",
"tests/corpus/2861-readable-iterator-close.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -96691,8 +96697,12 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:stream"
"status": "partial",
"evidence": "compiler-feature:stream.readable.iterator",
"tests": [
"tests/corpus/1746-stream-for-await.ts",
"tests/corpus/2861-readable-iterator-close.ts"
]
},
"dynamic": {
"status": "not-implemented",
@@ -120156,6 +120166,7 @@
"status": "partial",
"evidence": "derived:descendants",
"tests": [
"tests/corpus/2862-web-readable-async-iteration.ts",
"tests/harness/fetch-conformance.test.ts"
]
},
@@ -120675,8 +120686,11 @@
"inherited": true
},
"static": {
"status": "not-implemented",
"evidence": "compiler-unmatched:webstreams"
"status": "partial",
"evidence": "compiler-feature:webstreams.readableStream.values",
"tests": [
"tests/corpus/2862-web-readable-async-iteration.ts"
]
},
"dynamic": {
"status": "not-implemented",
+3
View File
@@ -596,6 +596,9 @@ function publicDetail(tier) {
if (source.startsWith("compiler-feature:")) {
if (tier.status === "not-applicable") return "Node configuration or documentation that does not map to a compiled program API.";
if (tier.status === "not-implemented") return "Not implemented in scriptc's static module-loader subset yet.";
if (source.startsWith("compiler-feature:stream.") || source.startsWith("compiler-feature:webstreams.")) {
return "Implemented for the documented static async-iteration subset.";
}
return "Implemented for the documented scriptc module-loader subset.";
}
if (source.startsWith("compiler-chapter-policy:")) {
+5 -1
View File
@@ -32,6 +32,8 @@
"syntax.await-using-declarations": ["tests/corpus/2842-await-using.ts"],
"syntax.for-using-of": ["tests/corpus/2845-for-using-of.ts"],
"syntax.finally-abrupt-completions": ["tests/corpus/2840-finally-completions.ts"],
"syntax.for-await-readable-streams": ["tests/corpus/2861-readable-iterator-close.ts", "tests/corpus/2862-web-readable-async-iteration.ts"],
"syntax.for-await-class-async-iterators": ["tests/corpus/2863-class-async-iterator.ts"],
"node-builtin.assert": ["tests/corpus/1600-assert-passing.ts", "tests/corpus/1609-assert-async.ts"],
"node-builtin.async_hooks": ["tests/corpus/2213-async-local-storage.cjs"],
"node-builtin.buffer": ["tests/corpus/1402-buffer-encodings.ts", "tests/corpus/1660-buffer-read-write-num.ts"],
@@ -54,7 +56,7 @@
"node-builtin.process": ["tests/corpus/990-process-basics.ts", "tests/corpus/2314-process-introspection.ts"],
"node-builtin.querystring": ["tests/corpus/957-builtins-namespace.ts"],
"node-builtin.readline": ["tests/corpus/1475-readline-closed-stdin.ts"],
"node-builtin.stream": ["tests/corpus/1685-stream-readable-basics.ts", "tests/corpus/1814-stream-pipeline.cjs", "tests/corpus/2629-stream-consumers.ts"],
"node-builtin.stream": ["tests/corpus/1685-stream-readable-basics.ts", "tests/corpus/1746-stream-for-await.ts", "tests/corpus/1814-stream-pipeline.cjs", "tests/corpus/2629-stream-consumers.ts", "tests/corpus/2861-readable-iterator-close.ts"],
"node-builtin.string_decoder": ["tests/corpus/1662-string-decoder-encodings.ts"],
"node-builtin.test": ["tests/harness/node-test.test.ts"],
"node-builtin.timers": ["tests/corpus/1804-timers-module.ts", "tests/corpus/2093-timers-promises.ts"],
@@ -88,6 +90,8 @@
{ "chapter": "fs", "signatures": ["`filehandle[Symbol.asyncDispose]()`"], "status": "partial", "evidence": ["tests/corpus/2844-node-disposable-resources.ts"] },
{ "chapter": "readline", "signatures": ["`rl[Symbol.dispose]()`"], "status": "partial", "evidence": ["tests/corpus/2844-node-disposable-resources.ts"] },
{ "chapter": "timers", "signatures": ["`immediate[Symbol.dispose]()`", "`timeout[Symbol.dispose]()`"], "status": "partial", "evidence": ["tests/corpus/2844-node-disposable-resources.ts"] },
{ "chapter": "stream", "signatures": ["`readable[Symbol.asyncIterator]()`", "`readable.iterator([options])`"], "status": "partial", "evidence": ["tests/corpus/1746-stream-for-await.ts", "tests/corpus/2861-readable-iterator-close.ts"] },
{ "chapter": "webstreams", "signatures": ["`readableStream.values([options])`"], "status": "partial", "evidence": ["tests/corpus/2862-web-readable-async-iteration.ts"] },
{ "chapter": "typescript", "symbols": ["type"], "status": "supported", "evidence": ["tests/corpus/2702-type-import-link-static/main.ts", "tests/corpus/2703-type-import-link-static-reexport/main.ts", "tests/corpus/2704-type-import-link-static-success/main.ts", "tests/corpus/2707-type-import-link-static-default-reexport/main.ts", "tests/harness/errors.test.ts"] }
],
"dedicated": [