Unchanged upstream tests
The pinned Solid test files resolve their public entries to SolidLil without source edits. Core, Web, and Store behavior all remain in scope.
Reactive UI runtime
The published port is Solid 2.0’s client, compiled as
@itslil/solidjs. Official js-framework-benchmark keyed
JS is 11,180 B Brotli versus 3,862 B for SolidLil. The sections
below keep the older in-repo 1.9 runtime and LSX evidence.
Two independent gates
The reusable solid-js, solid-js/web, and
solid-js/store browser entries are checked
independently from LSX syntax lowering. Both live in this monorepo;
both the public runtime gate and the 21/21 client LSX gate pass.
Hydration and SSR remain outside this client-only claim.
Compare them as demos:
API vs SolidJS,
LSX vs JSX,
and
the keyed app.
The pinned Solid test files resolve their public entries to SolidLil without source edits. Core, Web, and Store behavior all remain in scope.
JSX-shaped Lilscript UI syntax is credited only where lowering and differential runtime evidence both exist.
Every exact surface shows official and SolidLil Brotli-11 bytes first. A behavior pass can still be an optimization loss.
Archived served-app result
The table counts the full served todolist application in the checked sibling-worktree snapshot. It stays visible as historical evidence but cannot satisfy the new integrated parity gate.
| Artifact | Brotli-11 · primary | gzip-9 | Raw |
|---|---|---|---|
| Solid todolist | 5,479 B | 6,077 B | 15,456 B |
| SolidLil LSX todolist | 3,722 B | 4,226 B | 10,590 B |
The archived SolidLil LSX app is 32.1% smaller Brotli, 30.5% smaller gzip, and 31.5% smaller raw. This is an application result within the old implemented slice, not current full Solid or LSX compatibility.
Behavior evidence
The candidate passes 469/469 unchanged upstream tests across 26 files. A second 112-case Lilscript corpus passes maximum and disabled optimization on the JavaScript target: 224 compiler/runtime executions. C/native are excluded because they do not yet implement the JavaScript exception and Promise semantics required by Solid.
The deterministic gate covers idempotent unmount, stale disposers after slot reuse, keyed/indexed row cleanup, and resources resolving after disposal. After warmup, SolidLil holds a stable eight-owner / sixteen-effect high-water; every slot is returned and the pending queue is empty.
Included today
Explicit exclusions