Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
13ce4c0
ci: add test262 baseline regression gate job
wuchendi Oct 18, 2026
8683b6f
L2 merge: test262 T4 CI test262 job (bkd/ixxbupg8) [l1-mn1fy0fr-20261…
wuchendi Oct 18, 2026
031dffe
ci: run web workflow on push/PR and rebuild stale wasm in ensure-wasm
wuchendi Oct 18, 2026
0f50026
L2 merge: ci: web.yml push/PR triggers + ensure-wasm stale rebuild (b…
wuchendi Oct 18, 2026
1b65e9c
web: back __promise/__then/__now in the JS shim and drain microtasks …
wuchendi Oct 18, 2026
d7e5dcc
L2 merge: web: shim __promise/__then/__now parity + vitest (bkd/l2tmv…
wuchendi Oct 18, 2026
9cdea00
test262: add runner core library crate
wuchendi Oct 18, 2026
caa97ce
L2 merge: test262 T1 runner core library (bkd/gizwha7j) [l1-mn1fy0fr-…
wuchendi Oct 18, 2026
3fd9494
test262: pinned fetch script, jsc harness shims and feature denylist
wuchendi Oct 18, 2026
71f76c8
cli: node-like run/-p/build modes with exit codes 2/1
wuchendi Oct 18, 2026
ba8e035
L2 merge: cli: node-like run/-p/build modes, exit codes 2/1, convert …
wuchendi Oct 18, 2026
31913d0
Throw TypeError on member access of null/undefined
wuchendi Oct 18, 2026
970a29b
Classify every tag-0 NaN as a number in equality kernels
wuchendi Oct 18, 2026
7d6cd1d
L2 merge: Make !== and != exact negations of === and == (bkd/hgujhui2…
wuchendi Oct 18, 2026
3b9def5
test262: make assertion shims capture-free and move compareArray into…
wuchendi Oct 18, 2026
c31c71a
L2 merge: test262 T2 harness shims, denylist, pinned fetch (bkd/xygri…
wuchendi Oct 18, 2026
6e445e9
Grow guest memory on demand and report exhaustion as RangeError
wuchendi Oct 18, 2026
69819f7
Merge bkd/ti3a67j3 into bkd/zijfsn53
wuchendi Oct 18, 2026
d3ae513
Drop redundant checked flag from index store emitter
wuchendi Oct 18, 2026
294c06c
L2 merge: Grow guest memory on demand with RangeError on OOM (bkd/hpo…
wuchendi Oct 18, 2026
a18c3b2
test262: add executor, CLI and assert.throws constructor rewrite
wuchendi Oct 18, 2026
86efa32
test262: record initial baseline and history
wuchendi Oct 18, 2026
c55b081
Make nullish method calls, member updates and builtin reads runtime-c…
wuchendi Oct 18, 2026
bdda1d9
L2 merge: Throw TypeError on member access of null/undefined (bkd/ncl…
wuchendi Oct 18, 2026
522c8c7
L2 merge: test262 T3 executor, CLI, real run, baseline (bkd/zijfsn53)…
wuchendi Oct 18, 2026
def2787
Merge bkd/1db1xx1y: runtime correctness (memory growth, nullish TypeE…
wuchendi Oct 18, 2026
a908001
Merge bkd/muzwygat: node-like CLI, browser shim parity, web CI [l1-mn…
wuchendi Oct 18, 2026
5dd256d
Merge bkd/ti3a67j3: test262 subset runner, baseline gate, CI job [l1-…
wuchendi Oct 18, 2026
9590447
Let direct calls tolerate missing and extra arguments
wuchendi Oct 18, 2026
328fd33
L2 merge: Direct calls tolerate missing and extra arguments (bkd/mvn3…
wuchendi Oct 18, 2026
4635949
Store top-level bindings used by top-level functions in module cells
wuchendi Oct 18, 2026
68bb3d5
Merge branch 'bkd/9tk6e6rf' into bkd/9griwmz0
wuchendi Oct 18, 2026
f31f856
L2 merge: Top-level functions capturing top-level bindings callable f…
wuchendi Oct 18, 2026
a68c987
Canonicalize NaN at every f64 rebox site
wuchendi Oct 18, 2026
46294b2
L2 merge: Canonicalize NaN at every f64 rebox site (bkd/gwfwq0dy) [l1…
wuchendi Oct 18, 2026
35111be
Merge bkd/9tk6e6rf into bkd/bivnw546
wuchendi Oct 18, 2026
9b4843c
Apply ToNumber in arithmetic, unary, update and relational operators
wuchendi Oct 18, 2026
0ab03f8
L2 merge: ToNumber for arithmetic, unary, update and relational opera…
wuchendi Oct 18, 2026
f4f6bb2
Merge bkd/9tk6e6rf into bkd/l79iny8p
wuchendi Oct 18, 2026
5c845a9
test262: refresh baseline after semantics fixes
wuchendi Oct 18, 2026
1b39855
L2 merge: Regenerate test262 baseline on final semantics tree (bkd/l7…
wuchendi Oct 18, 2026
0d68566
Merge bkd/9tk6e6rf: NaN canonicalization, top-level capture, call ari…
wuchendi Oct 18, 2026
2695b95
docs(emit): describe emitter comments in present tense without campai…
wuchendi Oct 18, 2026
f8fce34
docs: drop campaign tags from jsc-core ir/abi/codegen comments
wuchendi Oct 18, 2026
54e0c31
Sweep campaign tags from jsc-core run module and integration tests
wuchendi Oct 18, 2026
adbd70a
docs: describe jsc CLI tests and @cdlab/jsc shim in present tense
wuchendi Oct 18, 2026
3b8e63f
docs: rewrite README for the current product
wuchendi Oct 18, 2026
3a2b224
L2 merge: docs-reset: rewrite README.md for the current product (bkd/…
wuchendi Oct 18, 2026
5cde823
docs: rewrite DESIGN.md as a current-state technical spec
wuchendi Oct 18, 2026
a6d81b8
L2 merge: docs-reset: rewrite DESIGN.md as current-state spec (bkd/ud…
wuchendi Oct 18, 2026
4511ee9
L2 merge: docs-reset: sweep campaign tags from jsc-core emit comments…
wuchendi Oct 18, 2026
29ef922
L2 merge: docs-reset: sweep campaign tags from jsc-core ir/abi/codege…
wuchendi Oct 18, 2026
1bf4866
L2 merge: docs-reset: sweep campaign tags from jsc-core run module an…
wuchendi Oct 18, 2026
fbd2fec
Merge bkd/vx9un357 into bkd/dhmzdn9i
wuchendi Oct 18, 2026
f059535
L2 merge: docs-reset: sweep campaign tags from jsc CLI, test262, wasm…
wuchendi Oct 18, 2026
5e2bee3
Merge bkd/vx9un357 into bkd/tn9jhb7s
wuchendi Oct 18, 2026
d20d499
Drop tags from yield diagnostics and describe current Math.pow lowering
wuchendi Oct 18, 2026
c10d5cd
Merge bkd/vx9un357 into bkd/vs9sn33t
wuchendi Oct 18, 2026
5ccd883
jsc-test262: match outcome docs to current Uncaught stderr format
wuchendi Oct 18, 2026
c0af5de
Exclude test262 harness shims from biome
wuchendi Oct 18, 2026
fcb5071
L2 merge: docs-reset: exclude test262 harness shims from biome (bkd/v…
wuchendi Oct 18, 2026
1bc9bd1
L2 merge: docs-reset: drop tags from yield diagnostics and fix stale …
wuchendi Oct 18, 2026
1514da5
L2 merge: docs-reset: fix stale stderr format in jsc-test262 outcome …
wuchendi Oct 18, 2026
3a9c11b
Merge bkd/vx9un357
wuchendi Oct 18, 2026
844c80e
test262: align outcome test fixtures with real uncaught stderr
wuchendi Oct 18, 2026
f8a3c76
L2 merge: docs-reset: align jsc-test262 outcome test fixtures with re…
wuchendi Oct 18, 2026
550fe3e
Merge bkd/vx9un357: docs reset to current state, strip campaign histo…
wuchendi Oct 18, 2026
178b630
chore(deps): bump swc family to swc_common 26, swc_ecma_ast 29, swc_e…
wuchendi Oct 19, 2026
5a9bca1
codegen: per-iteration bindings for captured C-style for (let/const) …
wuchendi Oct 19, 2026
d85cdce
L2 merge: for-let: per-iteration bindings for captured C-style for lo…
wuchendi Oct 19, 2026
6a88472
L2 merge: frontend: bump swc family to latest majors (bkd/dyopg1tj) […
wuchendi Oct 19, 2026
bd17e8f
Merge bkd/8h7854j5
wuchendi Oct 19, 2026
67d7221
frontend: reject recoverable swc parse errors
wuchendi Oct 19, 2026
81ddf14
chore(deps): bump JS dependencies to latest and regenerate bun.lock
wuchendi Oct 19, 2026
809e5a2
chore(deps): bump Rust toolchain to 1.99.1
wuchendi Oct 19, 2026
3acf139
L2 merge: deps-latest 4: JS deps + bun.lock (bkd/em8mx21f) [l1-mn1fy0…
wuchendi Oct 19, 2026
7162bbd
test262: refresh baseline after swc bump and recoverable parse errors
wuchendi Oct 19, 2026
3ada4b4
L2 merge: deps-latest 1: Rust toolchain 1.99.1 (bkd/u1mrfawv) [l1-mn1…
wuchendi Oct 19, 2026
bdca50e
L2 merge: frontend: reject recoverable swc parse errors (bkd/c0fb9ztz…
wuchendi Oct 19, 2026
ed251b7
Merge bkd/kxks7kgh
wuchendi Oct 19, 2026
5116b83
chore(deps): bump actions/checkout to v7 and actions/cache to v6
wuchendi Oct 19, 2026
add8015
L2 merge: deps-latest 5: GitHub Actions latest majors (bkd/372c0nn9) …
wuchendi Oct 19, 2026
a3a05c7
Merge bkd/8h7854j5
wuchendi Oct 19, 2026
5fbe9f3
chore(deps): bump wasmtime 46.0.1 -> 49.0.3
wuchendi Oct 19, 2026
957df3a
frontend: add TypeScript dialect with type stripping
wuchendi Oct 19, 2026
8a89a61
L2 merge: deps-latest 2: wasmtime 49 (bkd/vxg7h7kj) [l1-mn1fy0fr-2026…
wuchendi Oct 19, 2026
ed679c5
Merge branch 'bkd/kxks7kgh' into bkd/dryfefmz
wuchendi Oct 19, 2026
457ff54
chore(deps): bump wasm-encoder/wasmparser 0.262, clap 4.6.7, anyhow 1…
wuchendi Oct 19, 2026
20d239e
L2 merge: frontend: TypeScript dialect with type stripping (bkd/am2tk…
wuchendi Oct 19, 2026
ee4e622
Merge bkd/8h7854j5
wuchendi Oct 19, 2026
e706199
docs: describe TypeScript dialect support in README and DESIGN
wuchendi Oct 19, 2026
d9dd1d6
L2 merge: deps-latest 3: wasm-encoder/wasmparser/clap/anyhow/wasm-bin…
wuchendi Oct 19, 2026
43918af
L2 merge: frontend: document TypeScript support in README and DESIGN …
wuchendi Oct 19, 2026
f23508c
Merge branch 'bkd/8h7854j5' into bkd/3vjuq108
wuchendi Oct 19, 2026
063cb13
docs: update test262 result to 5230 / 22992
wuchendi Oct 19, 2026
925f9b9
L2 merge: frontend: update stale test262 result in README and DESIGN …
wuchendi Oct 19, 2026
178ccd5
Merge bkd/8h7854j5: swc bump, reject recoverable parse errors, TypeSc…
wuchendi Oct 19, 2026
d89d675
Merge main (F landed) into bkd/xsb1gei8 [l1-mn1fy0fr-20261018041900]
wuchendi Oct 19, 2026
b90d3b5
Merge bkd/xsb1gei8
wuchendi Oct 19, 2026
eb09697
test262: refresh baseline after per-iteration for bindings
wuchendi Oct 19, 2026
d92c17a
L2 merge: for-let: test262 baseline refresh on synced branch (bkd/8ct…
wuchendi Oct 19, 2026
2d66b76
Merge bkd/xsb1gei8: per-iteration let/const bindings in for loops [l1…
wuchendi Oct 19, 2026
5ce9c51
chore(deps): sync deps-latest (bkd/kxks7kgh) with main (F+G)
wuchendi Oct 19, 2026
01c90c8
L2 merge: deps-latest 6: sync main (F+G) + all gates (bkd/0g4mfxor) […
wuchendi Oct 19, 2026
f1d4ac9
Merge bkd/kxks7kgh: upgrade toolchain, wasmtime, all Rust/JS dependen…
wuchendi Oct 19, 2026
5a97d3c
feat(emit): throw TypeError on absent-property writes and array OOB s…
wuchendi Oct 19, 2026
804c0a5
test262: refresh baseline after absent-property write guard; update docs
wuchendi Oct 19, 2026
88fa6cc
L2 merge: dynamic-property-guard: TypeError on unknown-property write…
wuchendi Oct 19, 2026
59aca71
Merge bkd/mzdhg7s5: throw TypeError on writes to unknown properties a…
wuchendi Oct 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 40 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
#
# This gate only checks the Rust workspace, so it runs only when Rust-relevant
# files change (paths allowlist below). Changes to the JS/TS monorepo
# (package.json, apps/**, packages/**, scripts/**) and docs do NOT trigger it.
# (package.json, apps/**, packages/**, scripts/**) and docs do NOT trigger it,
# except scripts/test262-fetch.sh, which pins the test262 checkout.

name: CI

Expand All @@ -21,6 +22,8 @@ on:
- "rustfmt.toml"
- "deny.toml"
- "_typos.toml"
- "tests/test262/**"
- "scripts/test262-fetch.sh"
- ".github/workflows/ci.yml"
pull_request:
paths: *rust-paths
Expand All @@ -34,13 +37,13 @@ jobs:
name: rust (fmt + clippy + test + deny + shear + typos)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

# Toolchain is pinned to 1.96.0 (matches rust-toolchain.toml / MSRV).
- name: Install toolchain 1.96.0
# Toolchain is pinned to 1.99.1 (matches rust-toolchain.toml / MSRV).
- name: Install toolchain 1.99.1
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.96.0
toolchain: 1.99.1
components: rustfmt, clippy

- name: Cache cargo build
Expand Down Expand Up @@ -76,5 +79,37 @@ jobs:
- name: Supply-chain (cargo-deny)
run: cargo deny check

test262:
name: test262 (baseline regression gate)
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- uses: actions/checkout@v7

- name: Install toolchain 1.99.1
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.99.1

- name: Cache cargo build
uses: Swatinem/rust-cache@v2

# The pinned test262 SHA lives in the fetch script, so key on its hash.
- name: Cache test262 checkout
uses: actions/cache@v6
with:
path: .tmp/test262
key: test262-${{ hashFiles('scripts/test262-fetch.sh') }}

- name: Fetch test262
run: bash scripts/test262-fetch.sh

- name: Build jsc (release)
run: cargo build --release -p jsc

# Fails if any test passing in tests/test262/baseline.txt regressed.
- name: Check against baseline
run: cargo run --release -p jsc-test262 -- --check

# NOTE: portable musl / multi-platform release binaries are built by
# release.yml on `v*` tags (and manual dispatch), not on every push.
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

- name: Install toolchain 1.96.0 (+ musl target)
- name: Install toolchain 1.99.1 (+ musl target)
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.96.0
toolchain: 1.99.1
targets: x86_64-unknown-linux-musl

- name: Install musl tools
Expand Down
25 changes: 20 additions & 5 deletions .github/workflows/web.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,24 @@
name: Web

# Frontend/JS-side quality gate for the monorepo (packages/jsc + apps/jsc-web).
# MANUAL only — run it from the Actions tab (workflow_dispatch) when you want to
# check the JS/TS side. The push/PR Rust gate lives in ci.yml.
# Runs on push to main and on pull requests when JS/TS or wasm inputs change
# (paths allowlist below), and manually via workflow_dispatch. The Rust
# workspace gate lives in ci.yml.
on:
push:
branches: [main]
paths: &web-paths
- "crates/**"
- "packages/**"
- "apps/**"
- "scripts/**"
- "Cargo.toml"
- "Cargo.lock"
- "package.json"
- "bun.lock"
- ".github/workflows/web.yml"
pull_request:
paths: *web-paths
workflow_dispatch:

env:
Expand All @@ -14,14 +29,14 @@ jobs:
name: biome + typecheck + build + test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v7

# The @cdlab/jsc package loads a wasm-bindgen artifact that is gitignored,
# so build it first (needs Rust + wasm-pack).
- name: Install toolchain 1.96.0 (+ wasm target)
- name: Install toolchain 1.99.1 (+ wasm target)
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.96.0
toolchain: 1.99.1
targets: wasm32-unknown-unknown

- uses: Swatinem/rust-cache@v2
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -202,3 +202,6 @@ apps/*/dist/
# bun / vite caches
.vite/
*.tsbuildinfo

# Local scratch: test262 checkout (scripts/test262-fetch.sh) and other tool output
.tmp/
Loading
Loading