Skip to content

Repository files navigation

Eliscript logo

Eliscript

Eliscript is an Emacs Lisp-flavored language that compiles to modern JavaScript. The seed compiler runs in plain Emacs, emits standard ECMAScript modules, and bootstraps a compiler written in Eliscript itself.

Documentation · Core documentation · Getting started · Language reference · Library API · Playground · Roadmap · Acceptance evidence · Specifications

Quick Start

Building from source needs Emacs 29 or newer and Bun 1.4 or newer. The compiled compiler ships in the release tarball, so a consumer needs only Node 24 or Bun; the package is prepared and rehearsed, and the first publication is pending.

bun install --frozen-lockfile
./bin/eliscript --output dist/basic.mjs examples/basic/main.eli
bun run dist/basic.mjs

A whole project compiles as one graph, with --source-map for an external Source Map v3:

./bin/eliscript-build --root . --out-dir dist/project \
  examples/stdlib-cli/main.eli
bun run dist/project/examples/stdlib-cli/main.mjs

The daily commands are ./bin/eliscript-check for type and protocol checks, ./bin/eliscript-format for canonical formatting, ./bin/eliscript-eval for evaluation, ./bin/eliscript-watch for rebuilds, and ./bin/eliscript-org for Org sources. Each has a documented page in the documentation.

What Works Today

Area State
Compiler Emacs Lisp seed, reproducible self-hosted compiler, deterministic formatter, versioned canonical IR, Source Maps that name .eli files
Language Tail calls, macros, modules, protocols, records, deftype/reify, case/condp, multi-arity named, anonymous, async, and portable functions
Data Persistent List, Vector, Map, Set, and Queue with value equality; transients; lazy sequences; transducers
Runtime Host-free runtime semantics, frozen regular expressions, a long-lived Emacs-to-JavaScript worker
Browser An in-memory multi-file compile host, a module worker, and a compiler bundled for the browser — the playground compiles and runs Eliscript in the page
Editor eliscript-mode and an evaluation REPL
Applications The proving-ground site and the packaged Action built from it, plus React, Org, and Vite probes as replaceable application evidence

Project Status

The retained core acceptance audit records 35 of 35 mandatory criteria passing, 0 incomplete, 0 failed, with all five evidence groups complete and no blocking defects: acceptance/report.md. Implementation units through M12: Reliability, Security, and Performance are complete, and core stabilization and the retained audit are done. Progress is reported from acceptance units rather than from elapsed time, in Evidence-derived maturity progress.

Known gaps, stated rather than implied:

  • The Linux x64 compatibility cells are optional in the contract and carry no retained reports; macOS arm64 is the required acceptance platform.
  • The proving-ground specifications are marked In progress: the application is exercised by its tests and published, and its own acceptance set is not complete.
  • Publication is prepared and not performed: no tag, no registry release, and no Marketplace listing exists yet.

Contracts

The published surface and the compatibility it must keep are recorded as machine-checked registries: contracts/public-surface.json (0044), contracts/compatibility-matrix.json (0045), and the retained baseline in contracts/compatibility-baseline.json (0046).

Repository Guide

Path Purpose
bin/ Command-line entry points
compiler/ Emacs Lisp seed compiler
bootstrap/ Compiler implementation written in Eliscript
runtime/ Value, protocol, collection, and worker runtime
stdlib/ Portable Eliscript standard library
platform/ Host capability packages for Node, Bun, and the browser
browser/ In-memory compile host and its module worker
editor/ Emacs major mode and editor integration
examples/ Language, project, browser, and application probes
docs/ Documentation source and the published site
specs/ Numbered design contracts and the specification catalog
contracts/ Public surface, compatibility, and baseline registries
acceptance/ Retained audits, platform records, and the final artifact
tests/ ERT, Bun, fixtures, and conformance evidence
benchmarks/ Reviewed performance evidence and host fingerprints
tools/ Build, verification, and integration tooling

Development

make byte-compile       # Emacs Lisp with warnings as errors
make test-core          # contracts and the framework-neutral suite
make test-applications  # maintained application consumers
make check-browsers     # three engines against the generated site

bun run test runs both test partitions. Generated output under dist/ is never committed; contract checks compare it against its sources instead.

Contributing describes the workflow, and docs/README.md is the documentation hub.

License

GPL-3.0-or-later. The compiler and standard library ship as source alongside the generated output they produce, which is the preferred form for modification.

Releases

Packages

Contributors

Languages