@loopdive/js2 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/CHANGELOG.md +1425 -0
  2. package/LICENSE +189 -0
  3. package/README.md +451 -0
  4. package/dist/checker/index.d.ts +117 -0
  5. package/dist/checker/language-service.d.ts +39 -0
  6. package/dist/checker/node-capability-map.d.ts +63 -0
  7. package/dist/checker/type-mapper.d.ts +84 -0
  8. package/dist/cjs-rewrite.d.ts +19 -0
  9. package/dist/cli.d.ts +2 -0
  10. package/dist/cli.js +363 -0
  11. package/dist/codegen/accessor-driver.d.ts +97 -0
  12. package/dist/codegen/any-helpers.d.ts +72 -0
  13. package/dist/codegen/array-element-typing.d.ts +46 -0
  14. package/dist/codegen/array-holes.d.ts +69 -0
  15. package/dist/codegen/array-methods.d.ts +68 -0
  16. package/dist/codegen/array-object-proto.d.ts +64 -0
  17. package/dist/codegen/array-reduce-fusion.d.ts +31 -0
  18. package/dist/codegen/array-to-primitive.d.ts +28 -0
  19. package/dist/codegen/async-cps.d.ts +239 -0
  20. package/dist/codegen/async-scheduler.d.ts +349 -0
  21. package/dist/codegen/binary-ops.d.ts +78 -0
  22. package/dist/codegen/binding-info.d.ts +31 -0
  23. package/dist/codegen/builtin-scaffold.d.ts +98 -0
  24. package/dist/codegen/builtin-static-globals.d.ts +8 -0
  25. package/dist/codegen/builtin-tags.d.ts +189 -0
  26. package/dist/codegen/case-convert-native.d.ts +12 -0
  27. package/dist/codegen/case-tables.d.ts +4 -0
  28. package/dist/codegen/class-bodies.d.ts +41 -0
  29. package/dist/codegen/class-member-keys.d.ts +33 -0
  30. package/dist/codegen/class-to-primitive.d.ts +39 -0
  31. package/dist/codegen/closed-method-dispatch.d.ts +42 -0
  32. package/dist/codegen/closures.d.ts +285 -0
  33. package/dist/codegen/coercion-engine.d.ts +154 -0
  34. package/dist/codegen/coercion-plan.d.ts +29 -0
  35. package/dist/codegen/context/bodies.d.ts +4 -0
  36. package/dist/codegen/context/create-context.d.ts +4 -0
  37. package/dist/codegen/context/errors.d.ts +39 -0
  38. package/dist/codegen/context/locals.d.ts +69 -0
  39. package/dist/codegen/context/source-pos.d.ts +5 -0
  40. package/dist/codegen/context/speculative.d.ts +95 -0
  41. package/dist/codegen/context/types.d.ts +1936 -0
  42. package/dist/codegen/custom-iterable.d.ts +34 -0
  43. package/dist/codegen/dataview-native.d.ts +51 -0
  44. package/dist/codegen/date-parse-native.d.ts +13 -0
  45. package/dist/codegen/dead-elimination.d.ts +26 -0
  46. package/dist/codegen/declarations.d.ts +147 -0
  47. package/dist/codegen/deno-api.d.ts +11 -0
  48. package/dist/codegen/destructuring-params.d.ts +102 -0
  49. package/dist/codegen/dyn-read.d.ts +26 -0
  50. package/dist/codegen/eval-tiering.d.ts +19 -0
  51. package/dist/codegen/expressions/assignment.d.ts +61 -0
  52. package/dist/codegen/expressions/builtins.d.ts +26 -0
  53. package/dist/codegen/expressions/calls-closures.d.ts +54 -0
  54. package/dist/codegen/expressions/calls-guards.d.ts +49 -0
  55. package/dist/codegen/expressions/calls-optional.d.ts +4 -0
  56. package/dist/codegen/expressions/calls.d.ts +83 -0
  57. package/dist/codegen/expressions/eval-inline.d.ts +24 -0
  58. package/dist/codegen/expressions/extern.d.ts +67 -0
  59. package/dist/codegen/expressions/fnctor-prototype.d.ts +52 -0
  60. package/dist/codegen/expressions/helpers.d.ts +212 -0
  61. package/dist/codegen/expressions/identifiers.d.ts +57 -0
  62. package/dist/codegen/expressions/late-imports.d.ts +81 -0
  63. package/dist/codegen/expressions/logical-ops.d.ts +18 -0
  64. package/dist/codegen/expressions/misc.d.ts +27 -0
  65. package/dist/codegen/expressions/new-super.d.ts +25 -0
  66. package/dist/codegen/expressions/promise-subclass.d.ts +38 -0
  67. package/dist/codegen/expressions/proto-override.d.ts +63 -0
  68. package/dist/codegen/expressions/unary-updates.d.ts +21 -0
  69. package/dist/codegen/expressions/unary.d.ts +6 -0
  70. package/dist/codegen/expressions.d.ts +31 -0
  71. package/dist/codegen/fallback-telemetry.d.ts +53 -0
  72. package/dist/codegen/fixups.d.ts +80 -0
  73. package/dist/codegen/fmod.d.ts +10 -0
  74. package/dist/codegen/fnctor-escape-gate.d.ts +92 -0
  75. package/dist/codegen/function-body.d.ts +52 -0
  76. package/dist/codegen/generators-native.d.ts +92 -0
  77. package/dist/codegen/helpers/body-references-own-this.d.ts +22 -0
  78. package/dist/codegen/helpers/body-uses-arguments.d.ts +12 -0
  79. package/dist/codegen/helpers/is-strict-function.d.ts +52 -0
  80. package/dist/codegen/host-import-allowlist.d.ts +140 -0
  81. package/dist/codegen/index.d.ts +500 -0
  82. package/dist/codegen/ir-tail-call.d.ts +8 -0
  83. package/dist/codegen/iterator-native.d.ts +44 -0
  84. package/dist/codegen/json-codec-native.d.ts +78 -0
  85. package/dist/codegen/json-runtime.d.ts +35 -0
  86. package/dist/codegen/json-standalone.d.ts +25 -0
  87. package/dist/codegen/linear-uint8-analysis.d.ts +46 -0
  88. package/dist/codegen/linear-uint8-arena.d.ts +7 -0
  89. package/dist/codegen/linear-uint8-codegen.d.ts +103 -0
  90. package/dist/codegen/linear-uint8-signatures.d.ts +26 -0
  91. package/dist/codegen/literals.d.ts +115 -0
  92. package/dist/codegen/map-runtime.d.ts +142 -0
  93. package/dist/codegen/math-helpers.d.ts +7 -0
  94. package/dist/codegen/member-get-dispatch.d.ts +42 -0
  95. package/dist/codegen/member-set-dispatch.d.ts +28 -0
  96. package/dist/codegen/native-proto.d.ts +98 -0
  97. package/dist/codegen/native-regex.d.ts +158 -0
  98. package/dist/codegen/native-strings.d.ts +146 -0
  99. package/dist/codegen/new-target.d.ts +30 -0
  100. package/dist/codegen/node-fs-api.d.ts +47 -0
  101. package/dist/codegen/number-format-native.d.ts +9 -0
  102. package/dist/codegen/number-ryu.d.ts +27 -0
  103. package/dist/codegen/object-ops.d.ts +94 -0
  104. package/dist/codegen/object-runtime.d.ts +171 -0
  105. package/dist/codegen/parse-number-native.d.ts +10 -0
  106. package/dist/codegen/peephole.d.ts +6 -0
  107. package/dist/codegen/property-access.d.ts +294 -0
  108. package/dist/codegen/raw-wasi-api.d.ts +13 -0
  109. package/dist/codegen/regex/bytecode.d.ts +140 -0
  110. package/dist/codegen/regex/casefold.d.ts +41 -0
  111. package/dist/codegen/regex/compile.d.ts +51 -0
  112. package/dist/codegen/regex/parse.d.ts +76 -0
  113. package/dist/codegen/regex/unicode.d.ts +42 -0
  114. package/dist/codegen/regex/vm.d.ts +24 -0
  115. package/dist/codegen/regexp-standalone.d.ts +350 -0
  116. package/dist/codegen/registry/error-types.d.ts +38 -0
  117. package/dist/codegen/registry/imports.d.ts +46 -0
  118. package/dist/codegen/registry/types.d.ts +59 -0
  119. package/dist/codegen/set-algebra.d.ts +17 -0
  120. package/dist/codegen/set-runtime.d.ts +74 -0
  121. package/dist/codegen/shared.d.ts +111 -0
  122. package/dist/codegen/stack-balance.d.ts +43 -0
  123. package/dist/codegen/statements/control-flow.d.ts +25 -0
  124. package/dist/codegen/statements/destructuring.d.ts +177 -0
  125. package/dist/codegen/statements/exceptions.d.ts +11 -0
  126. package/dist/codegen/statements/functions.d.ts +1 -0
  127. package/dist/codegen/statements/index.d.ts +1 -0
  128. package/dist/codegen/statements/loops.d.ts +7 -0
  129. package/dist/codegen/statements/nested-declarations.d.ts +78 -0
  130. package/dist/codegen/statements/shared.d.ts +38 -0
  131. package/dist/codegen/statements/tdz.d.ts +43 -0
  132. package/dist/codegen/statements/variables.d.ts +3 -0
  133. package/dist/codegen/statements.d.ts +9 -0
  134. package/dist/codegen/string-builder.d.ts +131 -0
  135. package/dist/codegen/string-ops.d.ts +87 -0
  136. package/dist/codegen/struct-accessor-closure.d.ts +36 -0
  137. package/dist/codegen/symbol-native.d.ts +55 -0
  138. package/dist/codegen/temporal-native.d.ts +8 -0
  139. package/dist/codegen/timsort.d.ts +2 -0
  140. package/dist/codegen/type-coercion.d.ts +123 -0
  141. package/dist/codegen/typeof-delete.d.ts +38 -0
  142. package/dist/codegen/uri-encoding-native.d.ts +33 -0
  143. package/dist/codegen/value-tags.d.ts +74 -0
  144. package/dist/codegen/walk-instructions.d.ts +20 -0
  145. package/dist/codegen/weak-collections-runtime.d.ts +16 -0
  146. package/dist/codegen/with-scope.d.ts +106 -0
  147. package/dist/codegen-linear/c-abi.d.ts +74 -0
  148. package/dist/codegen-linear/context.d.ts +86 -0
  149. package/dist/codegen-linear/index.d.ts +28 -0
  150. package/dist/codegen-linear/layout.d.ts +39 -0
  151. package/dist/codegen-linear/runtime.d.ts +161 -0
  152. package/dist/codegen-linear/simd.d.ts +7 -0
  153. package/dist/compiler/define-substitution.d.ts +27 -0
  154. package/dist/compiler/early-errors/assignment.d.ts +26 -0
  155. package/dist/compiler/early-errors/context.d.ts +17 -0
  156. package/dist/compiler/early-errors/duplicates.d.ts +20 -0
  157. package/dist/compiler/early-errors/index.d.ts +11 -0
  158. package/dist/compiler/early-errors/labels.d.ts +13 -0
  159. package/dist/compiler/early-errors/module-rules.d.ts +36 -0
  160. package/dist/compiler/early-errors/node-checks.d.ts +7 -0
  161. package/dist/compiler/early-errors/predicates.d.ts +140 -0
  162. package/dist/compiler/early-errors/tdz.d.ts +17 -0
  163. package/dist/compiler/import-manifest.d.ts +18 -0
  164. package/dist/compiler/output.d.ts +46 -0
  165. package/dist/compiler/validation.d.ts +45 -0
  166. package/dist/compiler.d.ts +48 -0
  167. package/dist/define-substitution-BcUeKC2A.js +109 -0
  168. package/dist/emit/binary.d.ts +50 -0
  169. package/dist/emit/c-header.d.ts +23 -0
  170. package/dist/emit/canonical-recgroup.d.ts +86 -0
  171. package/dist/emit/encoder.d.ts +28 -0
  172. package/dist/emit/object.d.ts +14 -0
  173. package/dist/emit/opcodes.d.ts +464 -0
  174. package/dist/emit/sourcemap.d.ts +33 -0
  175. package/dist/emit/wat.d.ts +6 -0
  176. package/dist/env.d.ts +46 -0
  177. package/dist/import-resolver.d.ts +68 -0
  178. package/dist/index.d.ts +486 -0
  179. package/dist/index.js +755 -0
  180. package/dist/ir/alloc-registry.d.ts +75 -0
  181. package/dist/ir/analysis/encoding.d.ts +38 -0
  182. package/dist/ir/analysis/escape.d.ts +32 -0
  183. package/dist/ir/analysis/lattice.d.ts +72 -0
  184. package/dist/ir/analysis/ownership.d.ts +31 -0
  185. package/dist/ir/analysis/stack-alloc.d.ts +20 -0
  186. package/dist/ir/backend/bytecode-emitter.d.ts +237 -0
  187. package/dist/ir/backend/bytecode-vm.d.ts +74 -0
  188. package/dist/ir/backend/emitter.d.ts +121 -0
  189. package/dist/ir/backend/handles.d.ts +133 -0
  190. package/dist/ir/backend/legality.d.ts +9 -0
  191. package/dist/ir/backend/linear-emitter.d.ts +41 -0
  192. package/dist/ir/backend/wasmgc-emitter.d.ts +43 -0
  193. package/dist/ir/builder.d.ts +401 -0
  194. package/dist/ir/from-ast.d.ts +192 -0
  195. package/dist/ir/index.d.ts +16 -0
  196. package/dist/ir/integration.d.ts +27 -0
  197. package/dist/ir/lower.d.ts +203 -0
  198. package/dist/ir/nodes.d.ts +1452 -0
  199. package/dist/ir/passes/alloc-discipline.d.ts +19 -0
  200. package/dist/ir/passes/constant-fold.d.ts +7 -0
  201. package/dist/ir/passes/dead-code.d.ts +18 -0
  202. package/dist/ir/passes/inline-small.d.ts +7 -0
  203. package/dist/ir/passes/monomorphize.d.ts +21 -0
  204. package/dist/ir/passes/simplify-cfg.d.ts +19 -0
  205. package/dist/ir/passes/tagged-union-types.d.ts +45 -0
  206. package/dist/ir/passes/tagged-unions.d.ts +22 -0
  207. package/dist/ir/propagate.d.ts +135 -0
  208. package/dist/ir/select.d.ts +81 -0
  209. package/dist/ir/types.d.ts +832 -0
  210. package/dist/ir/verify-alloc.d.ts +18 -0
  211. package/dist/ir/verify.d.ts +7 -0
  212. package/dist/link/index.d.ts +11 -0
  213. package/dist/link/isolation.d.ts +24 -0
  214. package/dist/link/linker.d.ts +37 -0
  215. package/dist/link/reader.d.ts +158 -0
  216. package/dist/link/resolver.d.ts +19 -0
  217. package/dist/optimize.d.ts +54 -0
  218. package/dist/optimize.js +262 -0
  219. package/dist/position-map.d.ts +64 -0
  220. package/dist/process-stdin-prelude.d.ts +16 -0
  221. package/dist/resolve.d.ts +82 -0
  222. package/dist/runtime/builtins.d.ts +1 -0
  223. package/dist/runtime-C-4q_KwU.js +164438 -0
  224. package/dist/runtime-containment.d.ts +6 -0
  225. package/dist/runtime-eval.d.ts +132 -0
  226. package/dist/runtime-instantiate.d.ts +16 -0
  227. package/dist/runtime.d.ts +128 -0
  228. package/dist/runtime.js +12 -0
  229. package/dist/shape-inference.d.ts +20 -0
  230. package/dist/treeshake.d.ts +17 -0
  231. package/dist/ts-api.d.ts +30 -0
  232. package/dist/wit-generator.d.ts +18 -0
  233. package/package.json +187 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,1425 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ### Added: relocatable standalone CLI bundle (#1775, GH #986 follow-up)
6
+
7
+ - Added `pnpm run build:standalone-cli`, which writes
8
+ `dist/js2wasm-standalone.mjs` for `deno compile` / `bun build --compile`
9
+ workflows. This build bundles the core compiler dependencies and injects
10
+ TypeScript's `lib.*.d.ts` files into the existing bundled-lib hook, so the
11
+ generated file does not need to stay next to `node_modules/typescript/lib`.
12
+ - Standalone bundles now get the package version injected at build time, so
13
+ `--version` does not rely on `../package.json` after the file is moved.
14
+ - Binaryen is now an optional peer/dev dependency and is no longer bundled into
15
+ the standalone CLI artifact; `-O` can use an installed `binaryen` package or a
16
+ `wasm-opt` binary on PATH, and the emitted `.wasm` can be optimized afterward.
17
+ - The standalone docs now recommend `--minify`, which brings the no-Binaryen
18
+ bundle down to roughly 8.5 MB before native runtime embedding.
19
+
20
+ ### Breaking: `compile()` API is now async (#1757)
21
+
22
+ - The public compiler entry points — `compile`, `compileMulti`, `compileFiles`,
23
+ `compileToWat`, `compileProject`, and `createIncrementalCompiler().compile`
24
+ (plus the lower-level `compileSource` / `compileMultiSource` /
25
+ `compileFilesSource`) — now return a `Promise`. **Every caller must `await`
26
+ them.** A synchronous `compileSourceSync` (no Binaryen optimization) is
27
+ retained for the few contexts that cannot await (the `eval` host shim).
28
+ - **Why:** the optional Binaryen optimizer now loads via
29
+ `await import("binaryen")` instead of a synchronous `require`. Binaryen ships
30
+ a top-level `await` that a sync `require` cannot load, which is what blocked
31
+ embedding it in a `bun build --compile` / `deno compile` standalone binary
32
+ (GH #986). With the async path the optimizer is bundled and the single-file
33
+ binary runs `--optimize` with Binaryen embedded — no `wasm-opt` on `PATH`
34
+ required. Follow-up to the #1756 `createRequire` stopgap.
35
+
36
+ Migration: `const r = compile(src)` → `const r = await compile(src)`.
37
+
38
+ ### Repository rename
39
+
40
+ - The repo has been renamed `loopdive/js2wasm` → `loopdive/js2`.
41
+ GitHub provides a permanent redirect for the old URL, so existing
42
+ clones and PR links continue to work. New clones and CI should use
43
+ the new name. The `loopdive/js2wasm-baselines` baselines repo is
44
+ tracked separately and will be renamed in a follow-up.
45
+
46
+ ## Historical sprint tags
47
+
48
+ This file records the historical sprint boundary tags created from the sprint history in `plan/sprints/` and the Git history on `main`.
49
+
50
+ Tagging method:
51
+
52
+ - Use an explicit sprint-closing commit when one exists, for example `sprint-31 suspend`.
53
+ - Otherwise use the closest `main` snapshot that matches the documented sprint boundary and/or the archived `test262` run for that sprint.
54
+ - `sprint/32`, `sprint/34`, and `sprint/35` were not tagged because their sprint docs are still planning or incomplete.
55
+ - `sprint/33` does not exist in the current sprint history.
56
+
57
+ ## Current test262 status
58
+
59
+ Latest complete archived full-suite entry: `20260331-215747` from [benchmarks/results/runs/index.json](/Users/thomas/Documents/Arbeit/Startup/Projekte/Mosaic/code/@loopdive/ts2wasm/benchmarks/results/runs/index.json)
60
+
61
+ - Pass rate: `15,155 / 48,174` = `31.5%`
62
+ - Previous full-suite entry: `15,246 / 48,174` = `31.7%`
63
+ - Note: [benchmarks/results/test262-report.json](/Users/thomas/Documents/Arbeit/Startup/Projekte/Mosaic/code/@loopdive/ts2wasm/benchmarks/results/test262-report.json) currently points to a missing target, so the pass rate above is sourced from the run index rather than the symlink.
64
+
65
+ ## Sprint history
66
+
67
+ ## Sprint 0 - v0.0.0
68
+
69
+ - Tags: `sprint/0`, `v0.0.0`
70
+ - Date range: 2026-02-27 to 2026-03-10
71
+ - Goal: Build the compiler, runtime, playground, and first conformance baseline before structured sprint tracking began.
72
+ - Worked on: Turned the initial prototype into a real TypeScript-to-Wasm toolchain: core AOT compilation, CLI and playground, import resolution and stdlib growth, classes/closures/async-await/destructuring, relocatable object emission and multi-memory linking, linear-memory backend work, fast mode, native strings and arrays, gradual typing, npm/package resolution, SIMD and benchmark infrastructure, and the first serious test262 subset runs that reached the 550-pass baseline used by Sprint 1.
73
+ - Baseline: project bootstrap / no recorded sprint baseline
74
+ - Final result: pre-Sprint-1 baseline established at `550` test262 passes
75
+ - test262: `550` pass (100% of compilable tests at that point)
76
+
77
+ ### Issues worked on
78
+
79
+ - #31 Default number type to i32, promote to f64 only when needed
80
+ - #33 Relocatable Wasm Object File (.o) Emission
81
+ - #34 Multi-Memory Module Linker with Isolation Validation
82
+ - #35 Class inheritance with extends and super
83
+ - #36 Static class members
84
+ - #37 Getter/Setter Properties on User-Defined Classes
85
+ - #38 Implement `instanceof` operator
86
+ - #39 Labeled Break and Continue
87
+ - #40 String Enums
88
+ - #41 typeof as Expression
89
+ - #42 Comma operator support
90
+ - #43 void Expression
91
+ - #44 Source Map Generation
92
+ - #45 Error reporting with source locations
93
+ - #46 Linear-memory compilation backend
94
+ - #47 importedStringConstants support
95
+ - #49 Default parameter values
96
+ - #50 Nullish and logical assignment operators
97
+ - #51 Functional array methods (filter, map, reduce, forEach, find)
98
+ - #52 String.split() method
99
+ - #53 Numeric separators
100
+ - #54 Map and Set collections
101
+ - #55 Function expressions
102
+ - #56 Tuples
103
+ - #57 Class expressions
104
+ - #58 Iterators and for...of with custom iterables
105
+ - #59 Abstract classes
106
+ - #60 RegExp via host imports
107
+ - #61 Object.keys / Object.values / Object.entries
108
+ - #62 JSON.parse / JSON.stringify via host
109
+ - #63 Promise.all / Promise.race
110
+ - #64 Generators and yield
111
+ - #65 Computed property names
112
+ - #67 Closed import objects — replace Proxy with compiler manifest
113
+ - #68 DOM containment — scope wasm module access to a subtree
114
+ - #69 Safe mode — restrict TypeScript to a secure subset
115
+ - #70 Fast mode — optimize for performance with restricted TypeScript
116
+ - #71 Fast mode — WasmGC-native strings
117
+ - #72 Fast mode — WasmGC-native arrays
118
+ - #73 Benchmark — JS vs host-call vs GC-native vs linear-memory performance
119
+ - #74 WASM SIMD support for string and array operations
120
+ - #75 Slice-based string views for substring/trim/slice
121
+ - #76 Rope/cons-string for O(1) concatenation
122
+ - #77 Object literals, spread, and structural typing
123
+ - #78 Standard library coverage — builtins and static methods
124
+ - #79 Gradual typing — boxed `any` with runtime dispatch
125
+ - #80 JS file compilation via `.d.ts` types and TS inference
126
+ - #81 npm package resolution and tree-shaking
127
+ - #83 Test262 conformance subset
128
+ - #85 Variadic `Math.min` / `Math.max`
129
+ - #87 Math.round negative zero preservation
130
+ - #88 Test262 coverage — language/expressions
131
+ - #89 Test262 coverage — language/statements
132
+ - #90 Test262 coverage — built-ins/Array
133
+ - #91 Test262 coverage — built-ins/Number
134
+ - #92 Test262 coverage — language/types (coercion)
135
+ - #93 Test262 coverage — built-ins/Object
136
+ - #94 Test262 coverage — language/function-code
137
+ - #95 Test262 coverage — built-ins/isNaN + isFinite
138
+ - #96 Test262 coverage — built-ins/JSON
139
+ - #97 NaN/undefined/null truthiness in boolean contexts
140
+ - #98 Proper ToInt32 modular arithmetic for bitwise operations
141
+ - #99 Externref arithmetic, comparison, and control flow
142
+ - #100 Mutable closure captures via ref cells
143
+ - #101 Test262 — language/statements remaining
144
+ - #102 Test262 — language/expressions remaining
145
+ - #103 Test262 — built-ins/String prototype methods
146
+ - #104 Test262 — language/ top-level categories
147
+ - #105 Test262 — built-ins/Map, built-ins/Set, built-ins/Promise
148
+ - #106 Test262 — built-ins/Object extended + built-ins/Array constructor
149
+ - #107 Fix codegen null-dereference crashes (90 occurrences)
150
+ - #109 Tagged template literals
151
+
152
+ ## Sprint 1 - v0.1.0
153
+
154
+ - Tags: `sprint/1`, `v0.1.0`
155
+ - Date range: 2026-03-11 (morning) to 2026-03-11 (morning)
156
+ - Goal: First test262 conformance push — language feature coverage
157
+ - Worked on: Built the first serious test262 push: harness improvements, BigInt support, private class members, arguments/valueOf/toString behavior, object literal accessors, destructuring, IIFE support, and broad operator/coercion fixes.
158
+ - Baseline: 550 pass (100% of compilable tests at the time)
159
+ - Final result: 1,509 pass / ~23,000 total
160
+ - test262: `550 -> 1,509` pass
161
+ - Delta: +959 pass (+174% from 550)
162
+
163
+ ### Issues worked on
164
+
165
+ - #116 Unskip implemented features in test262 runner
166
+ - #117 String comparison support in test262 harness
167
+ - #118 compareArray.js test262 harness include
168
+ - #119 assert.throws support in test262 harness
169
+ - #120 undefined/void 0 comparison support
170
+ - #121 Function.prototype.call/apply
171
+ - #122 arguments object
172
+ - #123 Wrapper object constructors: new Number/String/Boolean (648 tests)
173
+ - #124 delete operator via undefined sentinel (232 tests)
174
+ - #125 Object.defineProperty / property descriptors (106 tests)
175
+ - #126 valueOf/toString coercion
176
+ - #127 Private class members (#field, #method)
177
+ - #128 BigInt type
178
+ - #129 propertyHelper.js test262 harness (341 tests)
179
+ - #130 Usage-based shape inference + call/apply inlining
180
+ - #131 String concatenation with variables
181
+ - #132 Logical operators returning values (short-circuit)
182
+ - #133 typeof runtime comparison
183
+ - #134 Switch fallthrough
184
+ - #135 Ternary/conditional returning non-boolean values
185
+ - #136 Loose equality (== / !=)
186
+ - #137 Object literal getter/setter
187
+ - #138 valueOf/toString coercion on comparison operators
188
+ - #139 valueOf/toString coercion on arithmetic operators
189
+ - #140 Object computed property names not working at runtime
190
+ - #141 Tagged template literal runtime failures
191
+ - #142 Assignment destructuring failures
192
+ - #143 for-loop edge cases
193
+ - #144 new expression with class expressions
194
+ - #145 allowJs type flexibility — boolean/string/void as number
195
+ - #148 Element access (bracket notation) on struct types
196
+ - #150 ClassDeclaration in statement positions
197
+ - #151 `this` keyword in class methods for test262
198
+ - #152 Setter return value error in allowJs mode
199
+ - #154 while/do-while loop condition evaluation
200
+ - #155 Logical-and/logical-or short-circuit returns wrong value
201
+ - #156 Conditional (ternary) expression evaluation
202
+ - #157 void expression returns wrong value
203
+ - #158 String concatenation with non-string operands
204
+ - #159 Call expression edge cases
205
+ - #160 Math method edge cases
206
+ - #161 Compound assignment edge cases
207
+ - #162 switch statement matching
208
+ - #163 return statement edge cases
209
+ - #164 variable declaration edge cases
210
+ - #165 function statement hoisting and edge cases
211
+ - #166 `in` operator runtime failures
212
+ - #167 typeof edge cases
213
+ - #168 equality operators with null/undefined
214
+ - #169 Arrow function edge cases
215
+ - #170 Class expression/declaration edge cases
216
+ - #171 Boolean() edge cases
217
+ - #172 Array.isArray edge case
218
+
219
+ ## Sprint 2 - v0.2.0
220
+
221
+ - Tags: `sprint/2`, `v0.2.0`
222
+ - Date range: 2026-03-11 (afternoon) to 2026-03-11 (afternoon)
223
+ - Goal: Runtime failure reduction — 167 failures and ~1,200 compile errors
224
+ - Worked on: Focused on runtime failure reduction: type coercion edge cases, built-in method compile errors, computed/class property names, `.call()` support, tagged template caching, for-of destructuring, and member increment/decrement.
225
+ - Baseline: 1,509 pass
226
+ - Final result: ~1,509+ pass (merged same day as Sprint 1)
227
+ - test262: incremental, no isolated archived run
228
+ - Delta: Primarily reduced runtime failures and compile errors
229
+
230
+ ### Issues worked on
231
+
232
+ - #175 Bug: Negative zero not preserved in arithmetic operations
233
+ - #177 - Bug: Spread operator in new expressions
234
+ - #180 JS var re-declaration: "Subsequent variable declarations must have the same type"
235
+ - #181 Unsupported `new Object()` and `new Function()` constructor calls
236
+ - #183 Template literal type coercion wasm errors
237
+ - #184 - Function arity mismatch: "not enough arguments on the stack"
238
+ - #185 Unary plus on non-numeric types
239
+ - #186 `typeof null` returns wrong value
240
+ - #187 String prototype methods: heavy test skipping due to include filters
241
+ - #191 `assert` not found: tests using raw `assert()` calls
242
+ - #193 Coalesce operator wasm type mismatch
243
+ - #195 Prefix/postfix increment/decrement compile errors
244
+ - #196 Try/catch/finally: 66 compile errors
245
+ - #197 Statement-level `if` compile errors
246
+ - #200 JSON.parse/JSON.stringify: 24 compile errors
247
+ - #203 LEB128 encoding overflow for large type indices
248
+ - #205 String.prototype.indexOf type coercion errors
249
+ - #207 Class statement/expression runtime failures
250
+ - #208 Computed property names with complex expressions
251
+ - #209 While/do-while with string/object loop conditions and labeled block break
252
+ - #210 for-of destructuring runtime failures
253
+ - #211 Function.length and undefined comparison edge cases
254
+ - #212 Tagged template object caching
255
+ - #213 New expression spread arguments and module-level init collection
256
+ - #214 String relational ops and unary plus coercion
257
+ - #215 Modulus operator edge cases
258
+ - #216 More modulus and numeric coercion edge cases
259
+ - #217 While/do-while with string/object loop conditions and labeled block break
260
+ - #218 Remove Boolean() skip filter
261
+ - #219 Additional Boolean runtime fixes
262
+ - #220 ClassDeclaration in all statement positions
263
+ - #221 .call() and comma-operator indirect call patterns
264
+ - #222 Hoist var declarations from destructuring patterns
265
+ - #223 Computed property names in classes
266
+ - #224 Member increment/decrement on class properties
267
+
268
+ ## Sprint 3 - v0.3.0
269
+
270
+ - Tags: `sprint/3`, `v0.3.0`
271
+ - Date range: 2026-03-11 (evening) to 2026-03-11 (evening)
272
+ - Goal: Zero runtime failures, ~1,500 CE reduction
273
+ - Worked on: Consolidated fixes around string comparison, object `valueOf` coercion, BigInt cross-type equality, nested hoisting, `in` operator runtime behavior, object destructuring, and private-field diagnostics.
274
+ - Baseline: ~1,509 pass
275
+ - Final result: merged same session, incremental improvements
276
+ - test262: incremental, merged same session
277
+ - Delta: 13 issues marked done
278
+
279
+ ### Issues worked on
280
+
281
+ - #225 String comparison in equality ops
282
+ - #226 valueOf coercion on object literal comparisons
283
+ - #227 BigInt comparison/equality with Number and Infinity
284
+ - #228 BigInt equality with Number and Infinity
285
+ - #231 Remove overly broad typeof skip filter
286
+ - #233 Nested function hoisting in loops/switch
287
+ - #236 Super/derived-class diagnostic suppression
288
+ - #240 More super/derived-class diagnostic suppression
289
+ - #244 In operator runtime failures
290
+ - #245 String comparison in switch statements
291
+ - #246 Missing struct fields in for-of object destructuring
292
+ - #247 Null/undefined arithmetic correct results
293
+ - #248 Logical op tests around valueOf coercion
294
+ - #251 Equivalence test expansion
295
+ - #252 Additional equivalence tests
296
+ - #253 Remove overly broad loose inequality skip filter
297
+ - #254 Private class field assignment diagnostic suppression
298
+ - #255 More equivalence coverage
299
+ - #256 Unknown function: f -- locally declared functions not found
300
+
301
+ ## Sprint 4 - v0.4.0
302
+
303
+ - Tags: `sprint/4`, `v0.4.0`
304
+ - Date range: 2026-03-11 to 2026-03-12
305
+ - Goal: Diagnostic suppression, bracket notation, destructuring, compound assignment
306
+ - Worked on: Reduced compile errors with batch diagnostic suppression while extending dynamic property fallback, bracket writes, destructuring scope handling, anonymous struct registration, arrow/default params, complex for-loop heads, and logical/compound assignment lowering.
307
+ - Baseline: ~1,509 pass
308
+ - Final result: incremental (same multi-day session)
309
+ - test262: incremental, multi-day session
310
+ - Delta: Major reduction in compile errors from diagnostic suppression
311
+
312
+ ### Issues worked on
313
+
314
+ - #257 Unsupported call expression -- double/triple nested calls
315
+ - #258 Unsupported call expression -- double/triple nested calls
316
+ - #259 ClassDeclaration in block scope
317
+ - #261 New expression with inline/anonymous class expressions
318
+ - #262 Batch diagnostic suppression for Sprint 4
319
+ - #263 Dynamic property access fallback
320
+ - #264 Bracket notation write path for const keys
321
+ - #265 Additional diagnostic suppression
322
+ - #266 Scope resolution for multi-variable destructuring
323
+ - #267 Suppress yield-outside-generator diagnostics
324
+ - #268 Suppress TS2548 iterator protocol diagnostic
325
+ - #269 Strict-mode reserved word diagnostic suppression
326
+ - #270 Reserved word/strict-mode diagnostic suppression
327
+ - #272 Re-lookup funcIdx after arg compilation
328
+ - #273 Anonymous class expressions in new expressions
329
+ - #275 Comma operator unused diagnostic suppression
330
+ - #276 Additional assignability diagnostic suppression
331
+ - #277 Type coercion before local.set/local.tee
332
+ - #278 Auto-register anonymous struct types
333
+ - #279 Arrow function destructuring params and defaults
334
+ - #280 Function expression name binding and closure call
335
+ - #281 Object literal method names and spread ordering
336
+ - #282 Scan top-level statements for string literals
337
+ - #283 Compound assignment type coercion
338
+ - #284 Nested destructuring and rest elements in for-of
339
+ - #285 Complex for-loop initializers
340
+ - #286 Logical assignment compile errors -- nullish and short-circuit
341
+ - #316 Runtime failure -- array element access out of bounds
342
+
343
+ ## Sprint 5 - v0.5.0
344
+
345
+ - Tags: `sprint/5`, `v0.5.0`
346
+ - Date range: 2026-03-12 to 2026-03-12
347
+ - Goal: Deep runtime fixes — coercion, equality, assignment, instanceof
348
+ - Worked on: Tightened runtime semantics: Wasm type-mismatch repair, nested class/function positioning, `instanceof`, default parameter initialization for methods/constructors, assignment result semantics, BigInt/string comparison, unary minus and `-0`, and Math intrinsics in pure Wasm.
349
+ - Baseline: building on Sprint 4
350
+ - Final result: incremental improvements in runtime correctness
351
+ - test262: incremental runtime gains
352
+ - Delta: 25+ issues resolved in one session
353
+
354
+ ### Issues worked on
355
+
356
+ - #178 Resolve Wasm validation errors for type mismatches
357
+ - #234 ClassDeclaration in nested/expression positions
358
+ - #235 Function.name prefers own name over variable name for named expressions
359
+ - #238 Named class expressions in new expressions
360
+ - #239 Bracket notation field resolution for struct types
361
+ - #250 Function declarations inside for-loop bodies
362
+ - #260 Preserve non-null ref type in conditional expressions
363
+ - #274 Function .name property access
364
+ - #289 Bare identifier/assignment initializers in for-in
365
+ - #290 instanceof with class hierarchies and expression operands
366
+ - #292 number_toString import for any-typed string +=
367
+ - #293 Default parameter initialization for class constructors/methods
368
+ - #294 Assignment expressions return RHS value
369
+ - #295 BigInt vs String comparison
370
+ - #296 Strict equality cross-type comparison
371
+ - #297 Switch statement fall-through with default in non-last position
372
+ - #298 Nested function mutable captures and capture param padding
373
+ - #299 Loose equality null == undefined
374
+ - #301 Saturating float-to-int truncation
375
+ - #302 Math.min/max zero-argument edge cases
376
+ - #303 parseInt edge cases
377
+ - #304 Unary minus coercion and -0 preservation
378
+ - #306 Prefix/postfix inc/dec on member expressions
379
+ - #308 bigint-to-string coercion and ambiguous addition fallback
380
+ - #315 Re-read local type after func expr update
381
+ - #317 Issue 317
382
+ - #318 Issue 318
383
+ - #319 Issue 319
384
+ - #320 Issue 320
385
+ - #321 Issue 321
386
+ - #322 Issue 322
387
+ - #323 Native type annotations — type i32 = number
388
+
389
+ ## Sprint 6 - v0.6.0
390
+
391
+ - Tags: `sprint/6`, `v0.6.0`
392
+ - Date range: 2026-03-13 to 2026-03-13
393
+ - Goal: Test262 expansion, generator fixes, test infrastructure, equivalence tests
394
+ - Worked on: Expanded the compiler and runner together: more test262 categories, negative-test support, generator and `new.target` fixes, Promise construction, object introspection, type inference from call sites, dead import elimination, and runner profiling.
395
+ - Baseline: building on Sprint 5
396
+ - Final result: significant test262 category expansion
397
+ - test262: `1,952` pass, `2,248` compilable
398
+ - Delta: 80+ issues resolved across Sprint 5-6 session
399
+
400
+ ### Issues worked on
401
+
402
+ - #121 Function.prototype.call/apply
403
+ - #138 valueOf/toString coercion on comparison operators
404
+ - #139 valueOf/toString coercion on arithmetic operators
405
+ - #141 Tagged template literal runtime failures
406
+ - #142 Assignment destructuring failures
407
+ - #143 for-loop edge cases
408
+ - #146 Unknown identifier resolution from scope/hoisting issues
409
+ - #147 Function.name property
410
+ - #149 Additional call expression patterns
411
+ - #165 function statement hoisting and edge cases
412
+ - #176 Unicode escape sequences in property names
413
+ - #179 Generator yield in module mode
414
+ - #182 Arrow function closure type coercion errors
415
+ - #188 instanceof compile errors
416
+ - #189 new.target meta-property
417
+ - #190 Array destructuring assignment patterns
418
+ - #194 Logical assignment operators
419
+ - #198 Switch statement compile errors and type coercion
420
+ - #199 Labeled statement compile errors
421
+ - #201 Object.keys/values/entries
422
+ - #202 Var hoisting tests
423
+ - #227 BigInt comparison/equality with Number and Infinity
424
+ - #228 BigInt equality with Number and Infinity
425
+ - #229 Global index corruption when late string imports shift globals
426
+ - #230 Computed property names with let/var variable keys
427
+ - #232 Module-level object literal methods
428
+ - #237 i64 boxing/unboxing coercion paths for AnyValue
429
+ - #241 yield-as-identifier diagnostics
430
+ - #243 Array destructuring assignment and nested patterns
431
+ - #249 typeof Math constants and Math.round precision
432
+ - #261 New expression with inline/anonymous class expressions
433
+ - #267 Suppress yield-outside-generator diagnostics
434
+ - #279 Arrow function destructuring params and defaults
435
+ - #287 Spread stack corruption and callback destructuring
436
+ - #288 try/catch/finally runs finally on exception in catch body
437
+ - #291 in operator fallback with variable keys
438
+ - #300 Struct ref in template expressions toString coercion
439
+ - #305 ref/ref_null type mismatch resolution
440
+ - #307 Promise.resolve/reject/new
441
+ - #309 Test262 harness expansion
442
+ - #310 Remove 16 overly conservative test262 skip filters
443
+ - #311 String.prototype category expansion in test262 runner
444
+ - #312 Number prototype method categories in test262 runner
445
+ - #313 Add new test262 expression categories
446
+ - #314 Compile-time profiling in test262 runner
447
+ - #318 Issue 318
448
+ - #319 Issue 319
449
+ - #320 Issue 320
450
+
451
+ ## Sprint 7 - v0.7.0
452
+
453
+ - Tags: `sprint/7`, `v0.7.0`
454
+ - Date range: 2026-03-13 (continued) to 2026-03-13 (continued)
455
+ - Goal: Runtime failure patterns — null guards, skip filter cleanup, gap coverage
456
+ - Worked on: Continued runtime cleanup with null guards, `_FIXTURE` filtering, property introspection, wrapper constructors, `delete`, `super` calls, global/globalThis handling, accessor edge cases, graceful extern fallbacks, and a large gap-analysis issue wave.
457
+ - Baseline: building on Sprint 6
458
+ - Final result: ~6,366 pass (first test262 run recorded at end of day)
459
+ - test262: later history records first end-of-day `~6,366` pass
460
+ - Delta: Major jump from skip filter cleanup and new test categories
461
+
462
+ ### Issues worked on
463
+
464
+ - #324 Runtime test failures with wrong return values
465
+ - #325 Array rest destructuring null deref
466
+ - #326 Array destructuring bounds checking
467
+ - #327 Object-to-primitive coercion for increment/decrement
468
+ - #328 OmittedExpression for array holes/elision
469
+ - #330 ClassExpression in assignment positions
470
+ - #331 Strict mode eval/arguments diagnostic suppression
471
+ - #332 Skip _FIXTURE helper files in test262
472
+ - #334 Private class fields/methods and accessor compound assignment
473
+ - #335 Track bracket/brace depth in stripThirdArg/stripUndefinedAssert
474
+ - #336 for-of object destructuring on non-struct refs
475
+ - #337 Null guards to runtime property/element access
476
+ - #338 Negative test support in test262 runner
477
+ - #341 Property introspection (hasOwnProperty, propertyIsEnumerable)
478
+ - #342 Array.prototype.method.call/apply patterns
479
+ - #344 Wrapper constructors new Number/String/Boolean
480
+ - #347 Function/class .name property completion
481
+ - #348 Null/undefined arithmetic coercion
482
+ - #349 String() constructor as function
483
+ - #352 Delete operator expression
484
+ - #355 Object.keys with numeric-string keys
485
+ - #357 IIFE and call expression tagged templates
486
+ - #358 Issue 358
487
+ - #359 Gap coverage issue
488
+ - #361 Runtime `in` operator for array index bounds
489
+ - #362 Issue 362
490
+ - #367 Remove overly broad string concatenation skip filter
491
+ - #368 `this` in global scope
492
+ - #369 globalThis identifier
493
+ - #375 super.method() and super.prop in class methods
494
+ - #377 Getter/setter accessor edge cases
495
+ - #378 Graceful fallback for inc/dec on unresolvable access
496
+ - #379 Tuple/destructuring type errors
497
+ - #380 Unknown variable/function in test scope
498
+ - #381 Downgrade "never nullish" diagnostic
499
+ - #382 Spread argument in super/function calls
500
+ - #385 Array method optional args
501
+ - #386 Gap coverage issue
502
+
503
+ ## Sprint 8 - v0.8.0
504
+
505
+ - Tags: `sprint/8`, `v0.8.0`
506
+ - Date range: 2026-03-16 to 2026-03-16
507
+ - Goal: Property access, element access, class inheritance, skip filter removal
508
+ - Worked on: Deepened property and element access support: externref/class/struct element reads and writes, tagged template identity, arrow-function `.call()` behavior, `import.meta`, narrower skip filters, fallback assignment targets, and class inheritance/property initialization fixes.
509
+ - Baseline: ~6,366 pass (from 2026-03-18 run, likely lower on 03-16)
510
+ - Final result: incremental (no test262 run recorded this day)
511
+ - test262: no dedicated full run archived
512
+ - Delta: 50+ issues resolved, major element/property access improvements
513
+
514
+ ### Issues worked on
515
+
516
+ - #153 BigInt cross-type comparison tests
517
+ - #173 BigInt comparison support follow-up
518
+ - #174 BigInt comparison support follow-up
519
+ - #204 Miscellaneous runtime fixes
520
+ - #329 Runtime failure pattern
521
+ - #331 Strict mode eval/arguments diagnostic suppression
522
+ - #337 Null guards to runtime property/element access
523
+ - #339 Runtime failure pattern
524
+ - #340 Runtime failure pattern
525
+ - #343 Runtime failure pattern
526
+ - #344 Wrapper constructors new Number/String/Boolean
527
+ - #345 Runtime failure pattern
528
+ - #346 Issue 346
529
+ - #350 Test coverage improvements
530
+ - #351 Test coverage improvements
531
+ - #353 Test coverage improvements
532
+ - #354 Test coverage improvements
533
+ - #356 Remove overly broad skip filter
534
+ - #357 IIFE and call expression tagged templates
535
+ - #358 Issue 358
536
+ - #359 Gap coverage issue
537
+ - #360 Remove overly broad skip filters (closure-as-value, JSON.stringify)
538
+ - #362 Issue 362
539
+ - #363 Tagged template .raw property and identity
540
+ - #364 .call()/.apply() on arrow functions and module-level closures
541
+ - #365 Additional gap coverage
542
+ - #366 Additional gap coverage
543
+ - #370 Additional gap coverage
544
+ - #371 Compile import.meta expressions
545
+ - #372 Additional gap coverage
546
+ - #373 Remove outdated loop condition skip filters
547
+ - #374 Additional gap coverage
548
+ - #376 Additional gap coverage
549
+ - #383 Downgrade tolerated syntax diagnostics
550
+ - #384 ES2021+ string/array method type declarations
551
+ - #387 Graceful fallback for unsupported assignment targets
552
+ - #388 Element access on externref
553
+ - #389 Element access on class instances
554
+ - #390 Assignment to non-array types (70 CE)
555
+ - #391 Downgrade TS7053 index signature diagnostic
556
+ - #392 Graceful fallback for unknown field access on class structs
557
+ - #393 Compound assignment on externref element access
558
+ - #395 Function references callable via closure wrapping
559
+ - #396 Null guards for struct dereference traps
560
+ - #397 Additional fix
561
+ - #398 Inherit parent field initializers and accessors
562
+ - #399 Additional fix
563
+ - #400 Additional fix
564
+ - #401 Additional fix
565
+ - #402 Additional fix
566
+ - #403 Additional fix
567
+ - #404 Additional fix
568
+ - #405 Additional fix
569
+ - #406 Additional fix
570
+ - #407 Additional fix
571
+
572
+ ## Sprint 9 - v0.9.0
573
+
574
+ - Tags: `sprint/9`, `v0.9.0`
575
+ - Date range: 2026-03-17 to 2026-03-17
576
+ - Goal: Async/await, for-in, try-catch, class features, prototype chain
577
+ - Worked on: Large compiler wave across async/await, for-in, try/catch/finally, class fields/methods, operator semantics, runtime error handling, and the start of React scheduler compilation work.
578
+ - Baseline: building on Sprint 8
579
+ - Final result: no test262 run recorded for this date
580
+ - test262: no dedicated full run archived
581
+ - Delta: 39 issues touched
582
+
583
+ ### Issues worked on
584
+
585
+ - #408 Async/await compilation improvement
586
+ - #409 Async/await compilation improvement
587
+ - #410 Async/await compilation improvement
588
+ - #411 Async/await compilation improvement
589
+ - #412 Async/await compilation improvement
590
+ - #413 For-in loop enhancement
591
+ - #414 For-in loop enhancement
592
+ - #415 For-in loop enhancement
593
+ - #416 For-in loop enhancement
594
+ - #417 Try/catch/finally edge case
595
+ - #418 Try/catch/finally edge case
596
+ - #419 Try/catch/finally edge case
597
+ - #420 Try/catch/finally edge case
598
+ - #421 Class method/field fix
599
+ - #422 Class method/field fix
600
+ - #423 Class method/field fix
601
+ - #425 Various operator and expression fix
602
+ - #427 Various operator and expression fix
603
+ - #428 Various operator and expression fix
604
+ - #429 Various operator and expression fix
605
+ - #430 Various operator and expression fix
606
+ - #431 Various operator and expression fix
607
+ - #432 Various operator and expression fix
608
+ - #433 Various operator and expression fix
609
+ - #434 Various operator and expression fix
610
+ - #435 Various operator and expression fix
611
+ - #436 Various operator and expression fix
612
+ - #438 Additional fix
613
+ - #441 Additional fix
614
+ - #444 Additional runtime improvement
615
+ - #445 Additional runtime improvement
616
+ - #446 Additional runtime improvement
617
+ - #447 Additional runtime improvement
618
+ - #448 Additional runtime improvement
619
+ - #455 Compile React to Wasm
620
+ - #458 Additional issue
621
+ - #459 Additional issue
622
+ - #460 Additional issue
623
+ - #461 Additional issue
624
+
625
+ ## Sprint 10 - v0.10.0
626
+
627
+ - Tags: `sprint/10`, `v0.10.0`
628
+ - Date range: 2026-03-18 (morning) to 2026-03-18 (morning)
629
+ - Goal: React compilation milestones, expression parser, playground improvements
630
+ - Worked on: Landed major real-world compilation milestones: React scheduler/fiber/hooks/custom renderer work, expression-parser demos, Symbol/WeakMap support, interactive conformance report work, and the first recorded large-scale test262 baseline.
631
+ - Baseline: ~6,366 pass (test262 run at 21:35 UTC)
632
+ - Final result: 6,366 pass / 23,021 total (first recorded run)
633
+ - test262: `6,366 / 23,021`
634
+ - Delta: baseline established
635
+
636
+ ### Issues worked on
637
+
638
+ - #437 Continued fix from previous session
639
+ - #439 Generator .return()/.throw() methods and diagnostic downgrade
640
+ - #440 Handle dynamic import() expressions gracefully
641
+ - #449 Add ref.as_non_null before call_ref
642
+ - #450 Benchmark/maths milestone
643
+ - #451 Lodash utilities compile to Wasm
644
+ - #452 Expression parser / TypeScript compiler pattern tests
645
+ - #453 Three.js math and benchmark suite
646
+ - #454 pako zlib kernels compile to Wasm
647
+ - #455 Compile React to Wasm
648
+ - #456 Symbol.iterator/toPrimitive as compile-time constants
649
+ - #457 WeakMap/WeakSet support via extern class infrastructure
650
+ - #462 Null narrowing in if-statements
651
+ - #463 Self-referencing struct types for linked lists/fiber trees
652
+ - #464 Array bounds check elimination
653
+ - #465 Inline small functions at call sites
654
+ - #466 Local reuse via temp-local free list
655
+ - #467 Constant folding for binary expressions on numeric literals
656
+ - #468 Interactive conformance report with drill-down
657
+ - #469 React hooks state machine compiles to Wasm
658
+ - #470 f64/i32-to-externref coercion in expression statement context
659
+ - #471 Basic Symbol() support
660
+ - #472 Additional issue
661
+ - #473 Additional issue
662
+ - #474 Remove delete operator skip filter
663
+ - #475 Additional issue
664
+ - #476 Narrow hasOwnProperty.call skip filter
665
+ - #477 verifyEqualTo/verifyNotEqualTo propertyHelper stubs
666
+ - #478 assert_throws shim correctness
667
+ - #479 Additional issue
668
+ - #480 Additional issue
669
+ - #481 Resolve well-known symbols in element access
670
+ - #482 Dispatch [Symbol.toPrimitive] in type coercion
671
+ - #483 typeof Symbol() and narrower Symbol skip filter
672
+ - #484 Additional issue
673
+ - #485 Additional issue
674
+ - #486 Additional issue
675
+ - #487 Additional issue
676
+ - #488 propertyHelper transforms for hasOwnProperty/propertyIsEnumerable
677
+
678
+ ## Sprint 11 - v0.11.0
679
+
680
+ - Tags: `sprint/11`, `v0.11.0`
681
+ - Date range: 2026-03-18 (afternoon/evening) to 2026-03-18 (afternoon/evening)
682
+ - Goal: Massive feature push — WASI, native strings, WIT, tail calls, SIMD, type annotations
683
+ - Worked on: Added major architecture/features rather than immediate conformance: WASI target support, native strings, WIT generation, tail-call optimization, peephole optimization, SIMD plumbing, native type annotations, TypedArray/ArrayBuffer work, and broader async/generator coverage.
684
+ - Baseline: 6,366 pass / 23,021 total
685
+ - Final result: 6,366 pass / 23,025 total (second run, minimal change)
686
+ - test262: `6,366 / 23,025`
687
+ - Delta: +0 pass (feature additions, not test262 focused)
688
+
689
+ ### Issues worked on
690
+
691
+ - #493 Narrow prototype chain skip filter
692
+ - #494 Remove stale skip filters
693
+ - #495 Array-like objects with numeric keys
694
+ - #496 eval() and new Function() source transform for test262
695
+ - #497 Dynamic import() via host-side module loading
696
+ - #498 Proxy via type-aware compilation with trap inlining (70 tests)
697
+ - #499 with statement via static identifier dispatch
698
+ - #500 Remove cross-realm skip filter
699
+ - #501 Complete test262 baseline run and pin results
700
+ - #502 Quick wins: narrow stale skip filters
701
+ - #503 Runner safe-write: don't corrupt report on crash
702
+ - #504 Auto-generated README feature coverage + benchmark tables
703
+ - #505 Playground: integrate test262 results into test262 browser panel
704
+ - #506 Remove redundant conformance-report.html
705
+ - #507 Run benchmark suite and generate latest.json
706
+ - #508 ts2wasm-jwt: pure Wasm JWT decode + HS256 verify
707
+ - #509 Post-fix error analysis: create issues from fresh test262 run
708
+ - #510 TS parse errors from test wrapping
709
+ - #511 Wasm validation: call/call_ref type mismatch
710
+ - #512 RuntimeError: illegal cast
711
+ - #513 Fix any-typed equality: object/ref identity broken in __any_strict_eq and externref path
712
+ - #514 Generator/async-gen 'options is not defined'
713
+ - #515 Wasm validation: uninitialized non-defaultable local + struct.get/set type errors
714
+ - #516 struct.new argument count mismatch in class constructors
715
+ - #517 Unsupported call expression: class/generator/built-in method calls
716
+ - #518 Cannot destructure: not an array type
717
+ - #519 Internal error: targetLocal is not defined
718
+ - #520 Delete operator: operand must be optional
719
+ - #521 Yield keyword not recognized in nested contexts
720
+ - #522 Object.keys() requires struct type argument
721
+ - #523 Internal compiler errors: undefined property access
722
+ - #524 Type '{}' missing Function properties
723
+ - #525 RuntimeError: illegal cast
724
+ - #526 RuntimeError: dereferencing a null pointer
725
+ - #527 Fix test262 script: use tsx instead of node
726
+ - #528 Test262 runner -- show progress when starting each batch
727
+ - #529 Speed up test262 runner with parallel workers + compilation cache
728
+ - #530 Unsupported call expression — remaining CE bucket
729
+ - #531 Issue 531
730
+ - #532 Wasm validation: call type mismatch -- string addition folded to numeric
731
+ - #533 Wasm validation: struct.get on null ref type
732
+ - #534 Fix addUnionImports func index shift for parent function bodies
733
+ - #535 'delete' cannot be called on identifier in strict mode
734
+ - #536 Spread types may only be created from object types
735
+ - #537 TypeScript diagnostic suppressions for test262
736
+ - #538 PrivateIdentifier + new.target unsupported
737
+ - #539 Issue 539
738
+ - #540 Array out of bounds guards
739
+ - #541 Async flag skip filter blocks many tests
740
+ - #542 Negative test skip blocks many tests
741
+ - #543 propertyHelper.js + hasOwnProperty.call skip filters
742
+ - #544 Remove/narrow stale skip filters
743
+ - #545 Hang-risk skip filters
744
+ - #546 Remaining skip filters cleanup
745
+ - #547 Restore search/filter UI in report.html
746
+ - #548 Security: WAT string injection + memory bounds validation
747
+ - #549 Security: playground path traversal via symlinks
748
+ - #550 Security: XSS via error messages in report.html
749
+ - #551 Issue 551
750
+ - #552 Issue 552
751
+ - #553 Division by zero missing in constant folding
752
+ - #554 JSONL concurrent write corruption from parallel workers
753
+ - #555 Cache invalidation misses uncommitted source changes
754
+ - #556 Performance: O(n^2) struct deduplication in ensureStructForType
755
+
756
+ ## Sprint 12 - v0.12.0
757
+
758
+ - Tags: `sprint/12`, `v0.12.0`
759
+ - Date range: 2026-03-19 (early) to 2026-03-19 (early)
760
+ - Goal: Test262 category expansion, continued feature work
761
+ - Worked on: Recovered from skip-filter regression by refining category coverage, removing stale skips, expanding test262 harness coverage, and fixing runtime/compiler failure patterns across the newly widened suite.
762
+ - Baseline: 5,753 pass / 22,974 total (regression from skip filter changes)
763
+ - Final result: 5,797 pass / 22,974 total → 7,139 pass / 22,974 total
764
+ - test262: `5,753 -> 7,139 / 22,974`
765
+ - Delta: +1,386 pass during the day
766
+
767
+ ### Issues worked on
768
+
769
+ - #124 delete operator via undefined sentinel (232 tests)
770
+ - #125 Object.defineProperty / property descriptors (106 tests)
771
+ - #323 Native type annotations — type i32 = number
772
+ - #498 Proxy via type-aware compilation with trap inlining (70 tests)
773
+ - #557 Performance: repeated instruction tree traversal for index shifting
774
+ - #558 Performance: add hash-based function type deduplication
775
+ - #559 Addition/subtraction result not coerced to externref before call
776
+ - #560 BigInt + Number mixed arithmetic leaves stack dirty
777
+ - #561 Math.hypot closure captures ref instead of f64
778
+ - #562 Addition/subtraction valueOf coercion + Math special values
779
+ - #563 Unsupported call expression
780
+ - #564 Worker crashed -- tests lost to worker process crashes
781
+ - #565 Wrong return value bucket
782
+ - #566 Null pointer dereference (853 FAIL) - local index shift not recursive
783
+ - #567 Wasm validation: struct.get on null ref type
784
+ - #568 Wasm validation: local.set type mismatch
785
+ - #569 Issue 569
786
+ - #570 Issue 570
787
+ - #571 struct.new argument count mismatch
788
+ - #572 Internal compiler errors
789
+ - #573 struct.get on null ref in class tests
790
+ - #574 Worker crashed -- tests lost to worker process crashes
791
+ - #575 Class statement tests all return 0
792
+ - #576 TEST_CATEGORIES covers only a subset of previously-tested tests
793
+ - #577 Run test262 in a worktree to avoid mid-run code changes
794
+ - #578 WASI target: console.log -> fd_write, process.exit -> proc_exit
795
+ - #579 Issue 579
796
+ - #580 Issue 580
797
+ - #581 struct.get on ref.null in Wasm:test function
798
+ - #582 local.set type mismatch in class methods
799
+ - #583 Stack not empty at fallthrough in Wasm:test
800
+ - #584 Null pointer dereference in many tests
801
+ - #585 RuntimeError: illegal cast
802
+ - #586 Deduplicate array method callbacks
803
+ - #587 Deduplicate destructuring code
804
+ - #588 Finally block executes multiple times instead of once
805
+ - #589 ref.as_non_null on ref.null always traps
806
+ - #590 Generator for-of-string missing return depth update
807
+ - #591 Split expressions.ts into focused modules
808
+ - #592 Consolidate AST collection passes into single visitor
809
+ - #593 Minor security/correctness fixes across emit + runtime
810
+ - #594 Mark WasmGC struct types as final for V8 devirtualization
811
+ - #595 Integer loop inference: emit i32 loop counters
812
+ - #596 Eliminate unnecessary ref.cast when type is statically known
813
+ - #679 Dual string backend: js-host mode vs standalone mode
814
+
815
+ ## Sprint 13 - v0.13.0
816
+
817
+ - Tags: `sprint/13`, `v0.13.0`
818
+ - Date range: 2026-03-19 (afternoon/evening) to 2026-03-19 (afternoon/evening)
819
+ - Goal: Continued test262 improvement, 53 session issues finalized
820
+ - Worked on: Finalized the large issue wave from error analysis, documented runtime failure patterns, and expanded the exercised test262 surface from roughly 23k tests to nearly 48k.
821
+ - Baseline: 7,139 pass / 22,974 total
822
+ - Final result: 9,560 pass / 47,983 total (test set nearly doubled)
823
+ - test262: `9,560 / 47,983`
824
+ - Delta: +2,421 pass, test suite expanded from ~23K to ~48K tests
825
+
826
+ ### Issues worked on
827
+
828
+ - #597 Type-specialized arithmetic skips AnyValue for non-addition ops
829
+ - #598 Regression tests for typed export signatures
830
+ - #599 Decouple native WasmGC strings from fast mode
831
+ - #600 Generate WIT interface files from TypeScript types
832
+ - #601 Binaryen wasm-opt post-processing pass
833
+ - #602 Emit return_call for tail-position calls
834
+ - #603 Remove stale skip filters blocking ~2,500 tests
835
+ - #604 add asyncHelpers.js shim
836
+ - #605 bypass shouldSkip for runtime negative tests
837
+ - #606 expand test262 harness with tcoHelper, deepEqual, throwsAsync
838
+ - #607 Issue 607
839
+ - #608 TypedArray constructor and element access support
840
+ - #609 cover all test262 directories in TEST_CATEGORIES
841
+ - #610 Issue 610
842
+ - #611 Null guards for undefined AST nodes + duplicate escapeWatString
843
+ - #612 suppress async iterator diagnostics for for-await-of
844
+ - #613 suppress TS2551 property-with-suggestion diagnostic
845
+ - #614 ArrayBuffer/DataView/TypedArray in compileNewExpression
846
+ - #615 Issue 615
847
+ - #616 suppress TS2689 for Iterator/Generator extends
848
+ - #617 prevent drop on empty stack for async void calls
849
+ - #618 triage umbrella
850
+ - #619 handle class element AST nodes in statement/expression compilers
851
+ - #620 Issue 620
852
+ - #621 graceful fallback for unsupported call expressions
853
+ - #622 null guard in destructureParamObject
854
+ - #623 increase worker timeout and per-test timeout
855
+ - #624 prevent dynamic field addition to class struct types
856
+ - #625 detect no-op coerceType to prevent local.set type mismatch
857
+ - #626 coerce call/call_ref arguments to match signatures
858
+ - #627 handle void RHS in logical operators
859
+ - #628 generator yield validation via fctx.isGenerator
860
+ - #629 tuple struct destructuring in function/method parameters
861
+ - #630 skip Temporal API tests
862
+ - #631 prototype chain patterns for class instances
863
+ - #632 emit empty string for RegExp flags
864
+ - #633 extend shape inference into try/catch/loop/switch blocks
865
+ - #634 promote captured locals to globals for object literal accessors
866
+ - #642 architecture/platform issue
867
+ - #643 atomic report writes for test262 runner
868
+ - #644 platform issue
869
+ - #645 additional issue
870
+ - #646 additional issue
871
+ - #647 additional issue
872
+ - #648 additional issue
873
+ - #649 additional fix
874
+ - #650 additional issue
875
+ - #651 additional issue
876
+
877
+ ## Sprint 14 - v0.14.0
878
+
879
+ - Tags: `sprint/14`, `v0.14.0`
880
+ - Date range: 2026-03-20 (early) to 2026-03-20 (early)
881
+ - Goal: Dual-mode backends, compiler infrastructure
882
+ - Worked on: Established the dual-mode backend direction: dual string and RegExp backend work, broader compiler infrastructure changes, and architecture principles later documented for the project.
883
+ - Baseline: 9,560 pass / 47,983 total
884
+ - Final result: 10,444 pass / 47,773 total
885
+ - test262: `10,444 / 47,773`
886
+ - Delta: +884 pass
887
+
888
+ ### Issues worked on
889
+
890
+ - #123 Wrapper object constructors: new Number/String/Boolean (648 tests)
891
+ - #333 Additional previously blocked issue
892
+ - #490 Additional fix
893
+ - #635 architecture/compiler issue
894
+ - #636 architecture/compiler issue
895
+ - #637 architecture/compiler issue
896
+ - #638 Reverse type map / platform issue
897
+ - #649 additional fix
898
+ - #652 Compile-time ARC
899
+ - #653 additional issue
900
+ - #654 additional issue
901
+ - #655 additional issue
902
+ - #656 additional issue
903
+ - #657 additional issue
904
+ - #658 additional issue
905
+ - #659 additional issue
906
+ - #660 additional issue
907
+ - #661 Temporal / coercion issue bucket
908
+ - #662 additional issue
909
+ - #663 additional issue
910
+ - #664 additional issue
911
+ - #665 additional issue
912
+ - #668 additional fix
913
+ - #669 additional fix
914
+ - #670 additional fix
915
+ - #679 Dual string backend: js-host mode vs standalone mode
916
+ - #682 Dual RegExp backend
917
+
918
+ ## Sprint 15 - v0.15.0
919
+
920
+ - Tags: `sprint/15`, `v0.15.0`
921
+ - Date range: 2026-03-20 (continued) to 2026-03-20 (continued)
922
+ - Goal: Type tracking, backlog cleanup, MCP channel server
923
+ - Worked on: Pushed on type tracking and tooling: backlog cleanup, MCP channel server integration, more compiler fixes, and broad type-flow work that drove a large pass-count jump across partial/full runs.
924
+ - Baseline: 10,444 pass / 47,773 total
925
+ - Final result: 10,974 pass → 15,244 pass (by end of day runs)
926
+ - test262: `10,974 -> 15,244`
927
+ - Delta: +530 to +4,800 (variable due to partial runs)
928
+
929
+ ### Issues worked on
930
+
931
+ - #672 Additional fix
932
+ - #673 Additional fix
933
+ - #676 Compiler improvement
934
+ - #677 Compiler improvement
935
+ - #678 Compiler improvement
936
+ - #683 Type tracking issue
937
+ - #686 Closure capture types
938
+ - #687 Live-streaming report / tooling
939
+ - #688 Extract property access / split index.ts umbrella
940
+ - #689 additional issue
941
+ - #690 additional issue
942
+ - #691 additional issue
943
+ - #692 additional issue
944
+ - #693 Issue 693
945
+ - #694 additional issue
946
+ - #695 Error classification improvement
947
+ - #696 Classify runtime errors
948
+ - #697 Ref/ref_null / error classification issue
949
+ - #698 property access fallback and setter dispatch coercion
950
+ - #699 Compiler pool
951
+ - #700 Reuse ts.CompilerHost across compilations (~25% speedup)
952
+
953
+ ## Sprint 16 - v0.16.0
954
+
955
+ - Tags: `sprint/16`, `v0.16.0`
956
+ - Date range: 2026-03-21 to 2026-03-21
957
+ - Goal: Error classification, type coercion, equivalence tests
958
+ - Worked on: Focused on error classification, ref/ref_null coercion, property-access correctness, equivalence-test expansion, and compile-error reduction while stabilizing the enlarged 48k suite.
959
+ - Baseline: ~15,244 pass (from 03-20 evening run)
960
+ - Final result: 15,232 pass / 48,097 total
961
+ - test262: `15,232 / 48,097`
962
+ - Delta: roughly stable (±0 from baseline)
963
+
964
+ ### Issues worked on
965
+
966
+ - #695 Error classification improvement
967
+ - #697 Ref/ref_null / error classification issue
968
+ - #702 issue
969
+ - #703 issue
970
+ - #704 issue
971
+ - #705 issue
972
+ - #706 issue
973
+ - #707 issue
974
+ - #708 issue
975
+ - #709 issue
976
+ - #710 issue
977
+ - #711 issue
978
+ - #712 issue
979
+ - #713 issue
980
+ - #714 conformance progress graph with historical trend tracking
981
+ - #715 issue
982
+ - #716 issue
983
+ - #717 issue
984
+ - #718 issue
985
+ - #719 issue
986
+ - #720 missing coercion paths to coercionInstrs
987
+ - #721 issue
988
+ - #722 issue
989
+ - #723 issue
990
+ - #724 TypeError for Object.defineProperty on non-configurable properties
991
+ - #725 fall back to __extern_get when ref.cast fails in property access
992
+
993
+ ## Sprint 17 - v0.17.0
994
+
995
+ - Tags: `sprint/17`, `v0.17.0`
996
+ - Date range: 2026-03-22 (morning) to 2026-03-22 (morning)
997
+ - Goal: expressions.ts refactoring, goal system
998
+ - Worked on: Refactored the oversized `expressions.ts`, added goal-system groundwork, and changed pieces of property access, lib handling, and exception flow, but incurred a measurable regression during the refactor.
999
+ - Baseline: 15,232 pass / 48,097 total
1000
+ - Final result: 14,757 pass / 48,097 total → 14,720 pass / 48,102 total
1001
+ - test262: `15,232 -> 14,720 / 48,102`
1002
+ - Delta: -512 pass (regression, likely from refactoring)
1003
+
1004
+ ### Issues worked on
1005
+
1006
+ - #726 Multi-struct dispatch for property access on wrong-type GC objects
1007
+ - #728 Null dereference should throw TypeError instead of trapping
1008
+ - #739 assertion sub-classification follow-up
1009
+ - #740 read lib.d.ts from typescript package at runtime
1010
+ - #741 split index.ts / extract modules
1011
+ - #742 Extract and refactor compileCallExpression
1012
+ - #745 Promise/async handling / RegExp flags null behavior
1013
+ - #746 Inline property tables / hash all codegen files
1014
+ - #747 Escape analysis / Object.defineProperty host import + transforms
1015
+ - #748 propertyHelper.js value checks in test262 preamble
1016
+ - #750 extern.convert_any at call sites for ref→externref mismatch
1017
+ - #751 monomorphization issue
1018
+ - #754 issue already fixed by prior work
1019
+
1020
+ ## Sprint 18 - v0.18.0
1021
+
1022
+ - Tags: `sprint/18`, `v0.18.0`
1023
+ - Date range: 2026-03-22 (afternoon/evening) to 2026-03-22 (afternoon/evening)
1024
+ - Goal: DAG-based goal system, milestone migration, issue renumbering
1025
+ - Worked on: Shifted planning/infrastructure from milestones to a DAG-style goal system, renumbered and audited issue streams, and stabilized the branch after the prior refactor regression.
1026
+ - Baseline: 14,720 pass / 48,102 total
1027
+ - Final result: 14,720 pass / 48,102 total (stable)
1028
+ - test262: `14,720 / 48,102`
1029
+ - Delta: ~0 (infrastructure/planning focused)
1030
+
1031
+ ### Issues worked on
1032
+
1033
+ - #761 Rest/spread destructuring
1034
+ - #762 Generator .next(value) arguments are silently ignored
1035
+ - #763 RegExp runtime methods
1036
+ - #764 Immutable global / Temporal-related issue
1037
+ - #765 issue
1038
+ - #766 Symbol.iterator protocol
1039
+ - #767 Equivalence test coverage
1040
+ - #768 renumbered session issue
1041
+ - #769 renumbered session issue
1042
+ - #770 verifyProperty transform
1043
+ - #771 externref-backed arguments object to preserve param types
1044
+ - #772 renumbered session issue
1045
+ - #773 Monomorphize functions
1046
+ - #776 Yield in expression position leaves value on stack
1047
+ - #777 fixupModuleGlobalIndices / immutable global CEs
1048
+
1049
+ ## Sprint 19 - v0.19.0
1050
+
1051
+ - Tags: `sprint/19`, `v0.19.0`
1052
+ - Date range: 2026-03-23 to 2026-03-23
1053
+ - Goal: Equivalence tests, RegExp, skip filter work
1054
+ - Worked on: Worked on equivalence coverage for RegExp/Promise/Proxy/WeakMap, skip-filter cleanup, struct/call coercion fixes, and failure-pattern analysis; the sprint dipped first and then recovered strongly.
1055
+ - Baseline: 14,720 pass / 48,102 total
1056
+ - Final result: 14,120 pass / 48,102 total → 15,997 pass / 49,642 total
1057
+ - test262: `14,120 -> 15,997 / 49,642`
1058
+ - Delta: Variable — initial regression then recovery to +1,277
1059
+
1060
+ ### Issues worked on
1061
+
1062
+ - #767 Equivalence test coverage
1063
+ - #774 Additional fix / already-fixed cleanup
1064
+
1065
+ ## Sprint 20 - v0.20.0
1066
+
1067
+ - Tags: `sprint/20`, `v0.20.0`
1068
+ - Date range: 2026-03-24 to 2026-03-24
1069
+ - Goal: Light maintenance day
1070
+ - Worked on: Mostly maintenance and targeted repair work between larger sessions, with very low commit volume and no archived full-suite run.
1071
+ - Baseline: 15,997 pass / 49,642 total
1072
+ - Final result: no test262 run recorded
1073
+ - test262: no archived full run
1074
+
1075
+ ### Issues worked on
1076
+
1077
+ - No specific issues were recorded for this sprint.
1078
+
1079
+ ## Sprint 21 - v0.21.0
1080
+
1081
+ - Tags: `sprint/21`, `v0.21.0`
1082
+ - Date range: 2026-03-25 to 2026-03-25
1083
+ - Goal: Mutable closure captures, assertion failures, type errors
1084
+ - Worked on: Addressed mutable closure captures, assertion-failure patterns, TypeError/null-trap behavior, early error detection, regex-based assert routing, and several compiler error-model fixes.
1085
+ - Baseline: ~15,997 pass / 49,642 total
1086
+ - Final result: 15,410 pass / 49,663 total
1087
+ - test262: `15,410 / 49,663`
1088
+ - Delta: -587 from peak (expanded test coverage exposing new failures)
1089
+
1090
+ ### Issues worked on
1091
+
1092
+ - #729 generator return values dropped
1093
+ - #730 TypeError for destructuring null/undefined and new on arrows
1094
+ - #731 function/class .name property infrastructure
1095
+ - #732 hasOwnProperty/propertyIsEnumerable correctness
1096
+ - #734 Array method correctness edge cases
1097
+ - #738 instanceof to host for unresolvable constructors
1098
+ - #771 externref-backed arguments object to preserve param types
1099
+ - #775 null dereferences throw catchable TypeError instead of trapping
1100
+ - #779 Wrong values / boxed captures written in outer scope
1101
+ - #780 null guards to throw TypeError instead of trapping
1102
+ - #781 __async_iterator for for-await-of
1103
+ - #782 detect JS undefined in destructuring defaults
1104
+ - #783 throw TypeError when destructuring null/undefined
1105
+ - #784 early error checks for rest elements, await/yield identifiers, strict reserved words
1106
+ - #785 null guards for for-of array/string struct.get
1107
+ - #786 Multi-assertion failures / boxed capture propagation / wrong AnyValue→f64 unboxing
1108
+ - #787 NaN sentinel for f64 default parameter checks
1109
+ - #788 modularize src/ into focused subfolder structure
1110
+
1111
+ ## Sprint 22 - v0.22.0
1112
+
1113
+ - Tags: `sprint/22`, `v0.22.0`
1114
+ - Date range: 2026-03-26 (morning) to 2026-03-26 (morning)
1115
+ - Goal: Compile-away principle, new issues, memory files
1116
+ - Worked on: Established the “compile away, don’t emulate” principle while landing null-guard fixes, TDZ checks, `verifyProperty` handling, ref.cast safety, iterator protocol work, memory/process notes, and a new batch of issue triage.
1117
+ - Baseline: 15,410 pass / 49,663 total
1118
+ - Final result: 15,579 pass / 49,833 total
1119
+ - test262: `15,579 / 49,833`
1120
+ - Delta: +169 pass
1121
+
1122
+ ### Issues worked on
1123
+
1124
+ - #494 Remove stale skip filters
1125
+ - #766 Symbol.iterator protocol
1126
+ - #770 verifyProperty transform
1127
+ - #778 Illegal cast failures
1128
+ - #789 Null guard only throws TypeError for genuinely null refs
1129
+ - #790 TDZ checks in closures and for-loop let/const
1130
+ - #791 Detect SyntaxErrors that ES spec requires but TS parser accepts
1131
+ - #792 Export exception tag and multi-struct dispatch for emitGuardedRefCast
1132
+ - #793 class/elements compilation hang investigation
1133
+ - #794 nested binding patterns with defaults in destructuring
1134
+ - #795 externref unbox/string-concat coercion for boxed captures
1135
+ - #796 destructuring default value checks in param destructuring
1136
+ - #797 Property descriptor work
1137
+ - #798 foreign JS exceptions / rethrow instruction
1138
+ - #799 prototype chain walk for property access
1139
+ - #800 compile-away typeof / null guards / TDZ analysis
1140
+ - #801 tuple literals in destructuring defaults
1141
+ - #811 issue
1142
+ - #812 Test262Error extern class
1143
+ - #813 private member name collision
1144
+ - #815 Regression from patch-rescue commits
1145
+
1146
+ ## Sprint 23 - v0.23.0
1147
+
1148
+ - Tags: `sprint/23`, `v0.23.0`
1149
+ - Date range: 2026-03-26 (afternoon/evening) to 2026-03-26 (afternoon/evening)
1150
+ - Goal: Push toward 20K pass, team protocol improvements
1151
+ - Worked on: Continued the same fix wave with more honest measurement discipline: cache-clearing, repeated full-suite verification, and team/protocol updates that corrected previously inflated counts.
1152
+ - Baseline: 15,579 pass / 49,833 total
1153
+ - Final result: 15,362 pass / 49,834 total (full run)
1154
+ - test262: `15,362 / 49,834`
1155
+ - Delta: -217 pass (honest measurement after cache clear)
1156
+
1157
+ ### Issues worked on
1158
+
1159
+ - #789 Null guard only throws TypeError for genuinely null refs
1160
+ - #790 TDZ checks in closures and for-loop let/const
1161
+ - #791 Detect SyntaxErrors that ES spec requires but TS parser accepts
1162
+ - #792 Export exception tag and multi-struct dispatch for emitGuardedRefCast
1163
+ - #793 class/elements compilation hang investigation
1164
+ - #794 nested binding patterns with defaults in destructuring
1165
+ - #795 externref unbox/string-concat coercion for boxed captures
1166
+ - #796 destructuring default value checks in param destructuring
1167
+ - #797 Property descriptor work
1168
+ - #798 foreign JS exceptions / rethrow instruction
1169
+ - #799 prototype chain walk for property access
1170
+ - #800 compile-away typeof / null guards / TDZ analysis
1171
+ - #801 tuple literals in destructuring defaults
1172
+ - #802 issue
1173
+ - #803 issue
1174
+ - #804 issue
1175
+ - #805 issue
1176
+ - #806 issue
1177
+ - #807 issue
1178
+ - #808 issue
1179
+ - #809 issue
1180
+ - #810 issue
1181
+ - #811 issue
1182
+ - #812 Test262Error extern class
1183
+ - #813 private member name collision
1184
+ - #815 Regression from patch-rescue commits
1185
+
1186
+ ## Sprint 24 - v0.24.0
1187
+
1188
+ - Tags: `sprint/24`, `v0.24.0`
1189
+ - Date range: 2026-03-27 (early morning) to 2026-03-27 (early morning)
1190
+ - Goal: valueOf recursion fixes, depth limiter, String/prototype unblocking
1191
+ - Worked on: Unblocked `String.prototype` and valueOf-heavy tests with recursion depth limiting, SyntaxError early-error checks, RangeError validation, JS-`undefined` emission fixes, and better runtime error classification.
1192
+ - Baseline: ~15,182 pass / 49,840 total
1193
+ - Final result: 14,169 pass → 14,616 pass / 49,880 total
1194
+ - test262: `14,616 / 49,880`
1195
+ - Delta: +447 pass (from session start of 14,169)
1196
+
1197
+ ### Issues worked on
1198
+
1199
+ - #675 Dynamic import
1200
+ - #696 Classify runtime errors
1201
+ - #701 resolveWasmType recursion depth guard
1202
+ - #733 RangeError validation
1203
+ - #736 SyntaxError gaps / early error checks
1204
+ - #737 Emit JS undefined instead of null for missing args/uninit vars
1205
+ - #816 String/prototype compilation hang investigation
1206
+
1207
+ ## Sprint 25 - v0.25.0
1208
+
1209
+ - Tags: `sprint/25`, `v0.25.0`
1210
+ - Date range: 2026-03-27 (afternoon) to 2026-03-27 (afternoon)
1211
+ - Goal: Wave 4 merge, class/elements unblocking, worker thread execution
1212
+ - Worked on: Merged the wave-4 fixes: broader destructuring coverage, RegExp host-import methods, ref.cast guarding, removal of class/elements hang workarounds, and replacement of direct execution with a worker-thread Wasm pool.
1213
+ - Baseline: 14,616 pass / 49,880 total
1214
+ - Final result: 15,197 pass / 49,881 total (+1,028 session gain)
1215
+ - test262: `15,197 / 49,881`
1216
+ - Delta: +581 from sprint start, +1,028 from session start (14,169)
1217
+
1218
+ ### Issues worked on
1219
+
1220
+ - #761 Rest/spread destructuring
1221
+ - #763 RegExp runtime methods
1222
+ - #766 Symbol.iterator protocol
1223
+ - #778 Illegal cast failures
1224
+ - #789 Null guard only throws TypeError for genuinely null refs
1225
+ - #793 class/elements compilation hang investigation
1226
+ - #815 Regression from patch-rescue commits
1227
+ - #817 let/const in loop and try/catch bodies
1228
+ - #818 additional issue
1229
+ - #819 Multi-file compilation for _FIXTURE tests via compileMulti
1230
+ - #820 TypeError / null dereference failures
1231
+ - #821 additional issue
1232
+ - #822 Wasm type mismatch compile errors (907 CE)
1233
+ - #823 additional issue
1234
+
1235
+ ## Sprint 26 - v0.26.0
1236
+
1237
+ - Tags: `sprint/26`, `v0.26.0`
1238
+ - Date range: 2026-03-27 (evening) to 2026-03-28 (early)
1239
+ - Goal: Exception tag fix, honest baseline, multi-file compilation
1240
+ - Worked on: Exposed stale-cache inflation, fixed exception-tag and multi-file compilation issues, revisited arguments/default/null-deref behavior, and reset the project onto an honest worker-thread baseline.
1241
+ - Baseline: 15,197 pass / 49,881 total (stale cache)
1242
+ - Final result: 13,289 pass / 36,828 total (fresh run with worker threads)
1243
+ - test262: sprint document records `13,289 / 36,828`; tag uses the nearest preserved boundary snapshot
1244
+ - Delta: Honest baseline established — previous 15,197 was stale cache
1245
+
1246
+ ### Issues worked on
1247
+
1248
+ - #779 Wrong values / NaN sentinel defaults / closure semantics
1249
+ - #819 Multi-file compilation for _FIXTURE tests via compileMulti
1250
+ - #820 TypeError / null dereference failures
1251
+ - #822 Wasm type mismatch compile errors (907 CE)
1252
+
1253
+ ## Sprint 27 - v0.27.0
1254
+
1255
+ - Tags: `sprint/27`, `v0.27.0`
1256
+ - Date range: 2026-03-28 (morning/afternoon) to 2026-03-28 (morning/afternoon)
1257
+ - Goal: Test262 infrastructure overhaul — precompiler, caching, vitest runner
1258
+ - Worked on: Overhauled test262 infrastructure: standalone precompiler, two-phase compile/run flow, compiler pools sized to cores, batch JSONL writes, split compile/run logs, disk cache, Vitest integration, and targeted skip policy cleanup.
1259
+ - Baseline: 13,289 pass (honest baseline)
1260
+ - Final result: 17,612 pass / 48,086 total → 18,546 pass / 48,086 total
1261
+ - test262: `17,612 -> 18,546 / 48,086`
1262
+ - Delta: +4,323 to +5,257 from honest baseline
1263
+
1264
+ ### Issues worked on
1265
+
1266
+ - #674 SharedArrayBuffer and Atomics
1267
+ - #832 Upgrade to TypeScript 6.x to support Unicode 16.0.0 identifiers
1268
+ - #833 Consider sloppy mode support for legacy octal escapes and non-strict code
1269
+ - #834 ES2025 Set methods
1270
+ - #835 Unknown extern class: Error types
1271
+ - #836 Tagged templates with non-PropertyAccess tag expressions
1272
+ - #837 Stage 3: Map/WeakMap upsert
1273
+ - #838 BigInt64Array / BigUint64Array typed arrays
1274
+
1275
+ ## Sprint 28 - v0.28.0
1276
+
1277
+ - Tags: `sprint/28`, `v0.28.0`
1278
+ - Date range: 2026-03-28 (evening) to 2026-03-29 (early)
1279
+ - Goal: PO analysis, runtime fix wave, closure semantics
1280
+ - Worked on: Combined PO-guided analysis with runtime/compiler fixes for computed properties, accessor correctness, iterator close protocol, safe externref destructuring, closure capture semantics, callback detection, and runtime trap diagnostics.
1281
+ - Baseline: 18,546 pass / 48,086 total
1282
+ - Final result: 18,117 pass / 47,835 total → 18,186 pass / 47,782 total
1283
+ - test262: `18,117 -> 18,186 / 47,782`
1284
+ - Delta: -360 to -429 from peak (but more honest/complete runs)
1285
+
1286
+ ### Issues worked on
1287
+
1288
+ - #848 Class computed property and accessor correctness
1289
+ - #850 Object-to-primitive conversion missing: valueOf/toString not called
1290
+ - #851 Iterator close protocol not implemented
1291
+ - #852 Destructuring parameters cause null_deref and illegal_cast
1292
+ - #857 wasm_compile: 'fn is not a function' in Array callback methods
1293
+ - #859 Map.forEach callback captures are immutable snapshots
1294
+ - #860 Promise executor and property-assigned functions not compiled as host callbacks
1295
+ - #861 Playground: fs module externalized error in browser
1296
+ - #862 Empty error message failures: iterator/destructuring step-err tests
1297
+ - #863 decodeURI/encodeURI failures
1298
+ - #864 WeakMap/WeakSet invalid key errors
1299
+
1300
+ ## Sprint 29 - v0.29.0
1301
+
1302
+ - Tags: `sprint/29`, `v0.29.0`
1303
+ - Date range: 2026-03-29 to 2026-03-29
1304
+ - Goal: Team infrastructure, agent roles, checklists, runtime fixes
1305
+ - Worked on: Mixed compiler fixes with team/process infrastructure: array callback semantics, for-of defaults, math methods, AggregateError, URI imports, WeakMap boxing, caller-side default-param refactor, ff-only merge rules, agent roles, and checklist-driven workflow.
1306
+ - Baseline: 18,167 pass / 47,797 total
1307
+ - Final result: 18,284 pass / 48,088 total
1308
+ - test262: `18,284 / 48,088`
1309
+ - Delta: +117 pass from baseline
1310
+
1311
+ ### Issues worked on
1312
+
1313
+ - #825 Null dereference failures
1314
+ - #827 Array callback methods: 'fn is not a function' Wasm compile error
1315
+ - #836 Tagged templates with non-PropertyAccess tag expressions
1316
+ - #839 return_call stack args and type mismatch in class constructors
1317
+ - #840 Array.prototype.concat/push/splice require 0-arg support
1318
+ - #841 Unsupported Math methods: sumPrecise, cosh, sinh, tanh, f16round
1319
+ - #843 super keyword in object literals and edge cases
1320
+ - #844 Unsupported new expression for built-in classes
1321
+ - #846 assert.throws not thrown: built-in methods accept invalid arguments silently
1322
+ - #847 for-await-of / for-of destructuring produces wrong values
1323
+ - #849 Mapped arguments object does not sync with named parameters
1324
+ - #854 Iterator protocol: null next/return/throw methods
1325
+ - #856 Expected TypeError but got wrong error type
1326
+ - #863 decodeURI/encodeURI failures
1327
+ - #864 WeakMap/WeakSet invalid key errors
1328
+ - #865 Console wrapper for fd_write in JavaScript environments
1329
+ - #866 Regression: NaN sentinel interferes with toString/valueOf and explicit NaN arguments
1330
+ - #867 Playground: interactive test262 conformance explorer with inline errors
1331
+ - #868 Playground: lazy-load test262 tree and file contents on demand
1332
+ - #869 Refactor default params: caller-side insertion instead of sNaN sentinel
1333
+ - #870 Playground: Monaco web workers fail to load, UI freezes
1334
+ - #871 Playground: default example throws WebAssembly.Exception at runtime
1335
+ - #872 Test262 report data should only update on complete runs
1336
+ - #873 Design dev branch protocol for agent merge workflow
1337
+
1338
+ ## Sprint 30 - v0.30.0
1339
+
1340
+ - Tags: `sprint/30`, `v0.30.0`
1341
+ - Date range: 2026-03-29 to 2026-03-29
1342
+ - Goal: High-impact test262 fixes targeting 40%+ pass rate
1343
+ - Worked on: Targeted the biggest remaining test262 wins: computed class properties/accessors, for-of destructuring, `assert.throws` validation, array callback methods, destructuring null-deref repair, plus verifyProperty diagnosis and stronger merge/test discipline.
1344
+ - Baseline: 18,284 pass / 48,088 total (38.0%)
1345
+ - Final result: 18,599 pass / 48,088 total (38.7%)
1346
+ - test262: `18,599 / 48,088`
1347
+ - Delta: +315 pass, -64 CE
1348
+
1349
+ ### Issues worked on
1350
+
1351
+ - #822 Wasm type mismatch compile errors (907 CE)
1352
+ - #824 Compilation timeouts: tests exceed compile limit
1353
+ - #825 Null dereference failures
1354
+ - #827 Array callback methods: 'fn is not a function' Wasm compile error
1355
+ - #846 assert.throws not thrown: built-in methods accept invalid arguments silently
1356
+ - #847 for-await-of / for-of destructuring produces wrong values
1357
+ - #848 Class computed property and accessor correctness
1358
+ - #850 Object-to-primitive conversion missing: valueOf/toString not called
1359
+ - #852 Destructuring parameters cause null_deref and illegal_cast
1360
+ - #857 wasm_compile: 'fn is not a function' in Array callback methods
1361
+ - #866 Regression: NaN sentinel interferes with toString/valueOf and explicit NaN arguments
1362
+
1363
+ ## Sprint 31 - v0.31.0
1364
+
1365
+ - Tags: `sprint/31`, `v0.31.0`
1366
+ - Date range: 2026-03-30 to 2026-03-30
1367
+ - Goal: Re-apply sprint-31 fixes without regressions. Test262 between EVERY merge.
1368
+ - Worked on: Re-ran the previous sprint under a stricter safe-first protocol, focusing on tail-call guards, sNaN/ToPrimitive fixes, WasmGC iterable support, equivalence-test infrastructure, and “test262 after every merge” process enforcement before the sprint was suspended.
1369
+ - Baseline: 15,246 pass / 48,174 total (31.7%) — honest baseline, no cache, negative test bug fixed
1370
+ - Final result: baseline `15,246 / 48,174`; latest archived full run `15,155 / 48,174`
1371
+ - test262: baseline `15,246 / 48,174`; latest archived full run `15,155 / 48,174`
1372
+
1373
+ ### Issues worked on
1374
+
1375
+ - #822 Wasm type mismatch compile errors (907 CE)
1376
+ - #826 Illegal cast failures
1377
+ - #828 Unexpected undefined AST node in compileExpression
1378
+ - #839 return_call stack args and type mismatch in class constructors
1379
+ - #851 Iterator close protocol not implemented
1380
+ - #854 Iterator protocol: null next/return/throw methods
1381
+ - #862 Empty error message failures: iterator/destructuring step-err tests
1382
+ - #866 Regression: NaN sentinel interferes with toString/valueOf and explicit NaN arguments
1383
+ - #868 Playground: lazy-load test262 tree and file contents on demand
1384
+ - #876 Sprint dashboard — kanban board, burndown, agent status, metrics
1385
+ - #877 Agile criteria — Definition of Ready, Definition of Done, velocity tracking
1386
+ - #891 Apply test262 infrastructure learnings to equivalence tests
1387
+
1388
+ ## Sprint 52 - v0.52.0
1389
+
1390
+ - Tags: `sprint/52`, `v0.52.0`
1391
+ - Date range: 2026-05-20
1392
+ - Goal: Spec-completeness continuation + host platform imports — spec gap fixes, WASI extensions, Node.js/browser host imports, method closure caching, builtin subclassing
1393
+ - Baseline: 22,412 pass / 43,160 total (51.9%) at v0.41.0
1394
+ - Final result: 28,171 pass / 43,160 total (65.3%)
1395
+ - test262: `28,171 / 43,160`
1396
+ - Delta: +5,759 pass from v0.41.0 baseline (+25.7 pp)
1397
+
1398
+ ### Highlights
1399
+
1400
+ - **Node.js host imports**: `fs.readFileSync`/`writeFileSync`/`existsSync` (gated behind `--allow-fs`), `crypto.randomBytes`/`randomUUID`, `console.error`/`warn` stderr routing, `process.argv`/`env`/`cwd`/`exit`, `__dirname`/`__filename`/`import.meta.url`
1401
+ - **Browser host imports**: `fetch`, `setTimeout`/`setInterval`/`clearTimeout`, `localStorage`/`sessionStorage`, `crypto.getRandomValues`, export return-type interop
1402
+ - **WASI extensions**: stdin via `fd_read`, console stderr via `fd_write`, `environ_get`/`environ_sizes_get`, `clock_time_get`, async stubs
1403
+ - **Builtin subclassing**: `instanceof Sub` and `instanceof Parent` both true for `class Sub extends Map/Float32Array/WeakRef/Set` (tag-chain runtime approach)
1404
+ - **Method closure caching**: fixes repeated `obj.method` creating new function objects each time
1405
+ - **Spec gap fixes**: assignment-operator destructuring completion, rest-parameter destructuring, `ToNumber`/`ToNumeric` coercion, named-evaluation destructuring defaults, for-loop per-iteration let binding, iterator protocol destructuring close, private reference readonly TypeError, `Object.defineProperty` descriptor fidelity, `Array.prototype` generic arraylike, `Promise` combinators, generator prototype, `Array.fromAsync`, and 30+ more
1406
+ - **Test262 CI**: 3× speedup via cross-PR baseline cache and per-scope test filter; sharded run time ~8 min
1407
+ - **ESLint valid-wasm plugin**: `@loopdive/eslint-plugin-js2` package entries fixed
1408
+
1409
+ ### Issues worked on (done)
1410
+
1411
+ - #1392 Refresh benchmarks — browser runtime hang
1412
+ - #1394 Method closure caching
1413
+ - #1396 for-of destructuring externref array defaults
1414
+ - #1397 Static dispatch on method reassignment
1415
+ - #1398 Report edition filter and category table
1416
+ - #1400 ESLint package entry valid-wasm
1417
+ - #1431 Assignment-operator destructuring completion
1418
+ - #1432 Parameter list rest destructuring
1419
+ - #1434 ToNumber/ToNumeric unary coercion
1420
+ - #1437 Math numeric edge cases
1421
+ - #1455 Subclassing builtins — instanceof and prototype chain
1422
+ - #1481 WASI stdin fd_read
1423
+ - #1491 Node.js fs host imports (non-WASI)
1424
+ - #1493 Node.js console.error/warn stderr routing
1425
+ - #1521 Test262 CI speedup — cross-PR cache and scope filter