monaco-editor 0.56.0 · LilScript port · not 100% feature parity

Monaco,
by submodule.

An independent LilScript editor that implements a large slice of monaco-editor@0.56.0. It is not 100% feature parity. Size rows are a library comparison: JS keeps ESM exports, Lil keepers call public class methods so export class does not DCE to nothing. Headline JS is Vite 8 / Oxc. esbuild and Terser are scored on the same sources. CSS-only monaco files are excluded. Ratio is LilScript Brotli-11 / JS Brotli-11.

npm install @itslil/monaco-editor
editor/common · 219 files · Brotli-11 · Lil / Vite 8 Oxc ×

992modules ported / 994
median Lil / Oxc
Vite 8Oxc minify (headline)
tscofficial Microsoft worker

Headline is the largest JS folder, independently compiled, other monaco imports external. JS minified with Vite 8 Oxc. esbuild 0.28.1 and Terser 5.50.0 are on the same files. Ratio is LilScript Brotli / JS Brotli. Not 100% feature parity.

piece tree text model monarch find fold hover suggest markers official ts.worker solid tsx not full parity

Fair comparison

Folders,
not the kitchen sink.

Each runtime monaco-editor-core file is minified three ways — Vite 8 / Oxc, esbuild, Terser — with other monaco imports left external. Lil is compiled as js-module with keepers so public constructors and methods stay live. That is the same retention as an ESM library, not an app tree-shake. CSS-only / re-export JS files are left out. Tiny Lil rows are incomplete ports. Folders are listed largest Vite/Oxc Brotli first. Ratio is Lil Brotli / Vite 8 Oxc Brotli.

Folder · .lil on GitHub Files Vite 8 / Oxc esbuild Terser Lil Brotli Lil / Oxc

Folder names open the conversion table. The .lil mark opens that folder on GitHub. Headline ratio is LilScript Brotli-11 / Vite 8 Oxc Brotli-11.

Every module, one conversion

JS in,
.lil out.

Each monaco-editor-core file has a matching LilScript file in src/. Left side is Microsoft’s JS at the pinned VS Code commit. Right side is the .lil on GitHub. Filter a folder from the table above, or search.

JS module · vscode .lil conversion · GitHub Vite 8 / Oxc Lil Brotli Lil / Oxc

Same sources, three JS minifiers

Vite 8 Oxc
vs the rest.

Latest Vite on npm is 8.2.1. Its default client minify is Oxc (Rolldown 1.2.4). The other two lanes are esbuild 0.28.1 and Terser 5.50.0. Lil is not post-minified with those tools. Ratio is Lil Brotli / that JS lane.

JS minifier Version Raw gzip-9 Brotli-11 Lil / JS

nontest-entire-module

Independent
modules.

The catalog sum of those standalone compiles. File pairs below use the same keepers on Lil and the same three JS minifiers. Still not the shipped editor, and still not feature parity.

Lane Files JS minify Raw gzip-9 Brotli-11 Lil / JS
File pair · .lil Vite 8 / Oxc esbuild Terser Lil Brotli Lil / Oxc

Same chrome, two editors

Look at
the drift.

Open both. Type in src/App.tsx — Solid TSX goes through the official Microsoft TypeScript worker on both pages. Catalog numbers use Vite 8 / Oxc. Menus and some commands will not match. That is the current port.

Diagnostic · do not headline

Whole IDE
bytes.

Production ide.js plus workers. The JS workbench is scored with Vite 8 / Oxc, esbuild, and Terser. Lil language hosts are compiled LilScript; TypeScript is the same Microsoft ts.worker on both pages. Ratio is Lil Brotli / that JS lane.

Artifact JS raw JS Brotli Lil raw Lil Brotli Lil / JS

Not 100% feature parity. The Lil editor is a LilScript runtime plus a monaco-editor-core catalog, not monaco-editor with a few files swapped. Official tsc is unchanged. Context-menu items and several contrib surfaces still differ. Submodule rows above are the size comparison: Vite 8 Oxc on JS, with esbuild and Terser beside it. Ratio is Lil / JS Brotli.

README ↗

Zero runtime dependencies

Install the
current port.

npm install @itslil/monaco-editor