Measured ports
Same work. Count the bytes.
These are libraries and apps we rewrote in LilScript to see what the compiler actually does. Numbers are Brotli-11 of the selected JavaScript, scored with the same stock zlib / official Brotli binaries. Typical complete ports sit around 5–10% smaller. The cards also show the larger cuts and the rows that have not moved, or have moved the wrong way.
Monaco · VS Code’s editor
monaco-editor 0.56, JavaScript versus LilScript.
The JS page is npm monaco-editor. The Lil page is
compiled from ports/monaco/entry.lil plus 992
catalog modules. Workers except TypeScript are LilScript; both
pages still load Microsoft ts.worker so diagnostics
match. The view is a functioning editor — create, type, undo,
find, fold, hover, suggest — not a claim that every VS Code
workbench feature is present.
Frameworks and apps
Runnable products, with a scope line on each card.
Solid 2.0 vs SolidLil
Official js-framework-benchmark keyed table. Solid 2.0 on the left, compiler-only SolidLil on the right.
solid-js Core
Archived 1.9 open-world Core row. Current published port is Solid 2.0 on the SolidLil lab.
solid-js Store
Archived 1.9 Store surface. Not the current Solid 2.0 client row.
Lastro
Parcel Market versus the accessibility-matched Astro control.
Motion
mix / wrap / stagger / spring. Live carousel and spring fixtures in the Motion lab. Full DOM package is still backlog.
Solid todolist
Archived JSX vs LSX todolist. −32% Brotli. Not the current integrated lab gate.
Complete and exact entrypoints
Published roots, same input domain.
Eligible rows beat npm/Vite and public-API Closure ADVANCED on the selected codec, and stay within 1.05× on the isolated runtime gate.
gl-matrix
Complete ESM namespace and setMatrixArrayType.
murmurhash-js
MurmurHash 2 and 3. Reusable API, not an app-specialized kernel.
js-levenshtein
Full root. Eligible on size and throughput.
clamp + lerp
Both published roots compiled together.
@emotion/hash
Published root versus Vite and Closure ADVANCED.
robust-predicates
Large typed suite. The cut is closer to the 5–10% band.
Nano ID
Published browser entrypoint. Effectively tied.
mitt
Complete default-export surface. Currently a few Brotli bytes up.
clsx
Recursive class-name builder. Size gate is open on Brotli.
Selected surfaces
Not the whole package. Still a real rewrite.
These rows implement a declared subset. They are useful pressure tests. They are not “we replaced Preact.”
immer
produce path used by the app contract.
Preact 10
Selected render surface, not the full Preact package.
Redux Toolkit
Store core used by the contract. Not the full toolkit.
Zod 3
Schema parse surface in the app. Not complete Zod.
Acorn 8
Parser subset required by the contract app.
@motionone/easing
Full published easing root. Smaller than Vite and Closure; the isolated throughput gate is still just over 1.05×.
Published · not smaller
jQuery 3.7.1 is published. It is not smaller yet.
The public-library row is a pressure test: host-heavy, string keys,
a plugin facade. Behavior lanes for core, deferred, data, events,
selectors, ajax, and effects are in the repo. The current
Brotli-oriented compiler output is larger than npm
jquery.min.js. That is stated here so the other cards
stay honest.
Parse API
marked 18.0.10, scored without the extension system.
The parse API, GFM and CommonMark HTML, 660/660 against
marked@18.0.10. This port has no use().
Official JavaScript is the parse-only 18.0.10 sources, then Oxc and
Terser, mangling on and off. The published LilScript artifact is
the compiler-selected ESM — not bundled, not post-minified, and
still smaller on raw, gzip-9, and Brotli-11 than either minifier,
while parsing the same corpus faster in Chromium.
Open the pairs
Left is the original. Right is the compile.
These are the hosted comparisons. When this site is on GitHub Pages, they are the github.io URLs.
yeargun.github.io/solidlil
Solid 2.0 client lab and the official keyed table (11,180 B → 3,862 B).
Open SolidLil Motionyeargun.github.io/motionlil
16 paired Motion fixtures.
Open Motionlil MobXyeargun.github.io/mobxlil
MobX 7 public API, official tests, size vs Vite 8 Oxc.
Open MobXlil jQueryyeargun.github.io/jquerylil
jQuery 3.7.1 drop-in. Official min is still 1.13× smaller on Brotli.
Open jQuerylil markedyeargun.github.io/markedlil
marked 18.0.10 parse API. 9,580 B vs parse-only official Oxc 10,092 B, not the full use() package.
yeargun.github.io/monacolil
Submodule catalog and the paired editors.
Open Monacolil This siteIn-repo demos
Lastro, hashes, algorithms, Closure pairs — Solid keyed, Motion carousel.
Browse demosMore tables. Filterable corpus: library lab, benchmarks, explorer. Delivery architecture: Lilpack. Language: syntax and behavior.