Find when a Lispex feature arrived or a program's behavior changed. For what you can use today, open the current product catalog.
For example, read v1.20.0 below to find changes to output and resource termination. Its development records are v1.19.1 through v1.19.5, in the expandable section after the public releases.
How to read versions
X.Y.0 is the first release of a minor version, such as v1.21.0.
A patch release, X.Y.Z with a positive Z, contains compatible fixes applied to that version line.
Development checkpoints, such as the v1.19.5 record below, are identified separately from published releases.
The entries describe features at the time of each version. For present commands, platforms, and support, use the catalog and CLI reference.
Contributing release notes
Add confirmed changes to the relevant entry as they become known. The v1.21.0 entry gathers its features, quality improvements, and LIL/LIT retirement. A development commit does not by itself create a patch release. A fix delivered on an older version line belongs to that line's release notes after it is applied and checked there.
Describe the user's input, resulting behavior, and any compatibility change. Correct an earlier description when new facts establish an omission or error, while preserving the published version and its original files. Before and after a file release, compare the included source and behavior with the installation steps, downloads, version labels, and release notes. Keep those pages current as fixes and further details become available.
Terms used in the records
| Term | Meaning |
|---|---|
| Native | The installed Lispex executable |
| Lispex Interpreter / Lispex VM | Current source interpreter / Lispex bytecode executor |
| Rust tree / Rust VM | Earlier names for Lispex Interpreter / Lispex VM; original records keep these names |
| LIL / LIT | Retired interpreters written in Lispex / Topaz; LIL ran on the Rust interpreter |
| Topaz VM / AOT | Earlier Topaz-based executor for Lispex bytecode / compilation through Topaz to native programs |
| Core IR | An intermediate representation that resolves which variable each name refers to |
| VM | A virtual machine that executes prepared instructions |
| AOT | Ahead-of-time compilation into a program that runs without the original source |
| ABI | Binary calling interface |
| DSSE | Dead Simple Signing Envelope, a signed record container |
| MCP | Model Context Protocol, used to connect a local tool server |
| WASM | The binary program format used by browser and embedded runtimes |
| Portable core | A portable record binding the inputs and result of one execution |
Public releases
v1.21.0 · Focused execution and LIL/LIT retirement
LIL and LIT completed their role in internal cross-validation and were retired to reduce future maintenance costs. Source execution uses Lispex Interpreter, and verified Lispex bytecode uses Lispex VM. These current names distinguish the engines from LIL/LIT and the former Topaz VM/AOT companions. The decision and full-profile evaluators retain their separate profiles, ABI, value codec, cancellation, and resource limits. Vouch, SICP, images, and Topaz embedding continue with these engines. Historical source, research records, receipts, artifacts, and versioned manuals are preserved.
v1.20.0 · Resource usage and output
Rust and LIL record five resource usage counters. Recursion safety exhaustion is reported as resource termination. Native, npm, WASM, and Playground render successful forms in order. Ordinary runtime errors preserve earlier output; resource termination returns empty output and status 2. Browser results include output, diagnostics, ok, and exit_status. SICP link previews use new artwork.
v1.19.0 · Meaning Graph v1
Meaning Graph v1 and Meaning Environment v1 add shared variables for letrec, internal definitions, rest arguments, set!, and define. They support tail calls, one-shot upward escape through call/cc, and outward cleanup through dynamic-wind. meaning-diff compares output, values, warnings, and errors separately from Vouch.
v1.18.0 · SICP runtime and course
Publishes the separate SICP runtime as @lispex/sicp@1.0.0, with lispex sicp run and the sicp.io course. Native and import-free WASM provide fixed resource limits, structured execution records, and exact traces. Features include memoized streams, mutable Unicode strings, repeatable real-number calculations, arbitrary-precision numbers, chapter data and derived syntax, deterministic SVG, and cooperative schedule exploration. The eight chapter systems are the metacircular, analyzing, lazy, and amb evaluators, logic query system, register machine, explicit-control evaluator, and compiler.
v1.17.0 · Refund application handoff
Publishes a ready-made refund example with local keys, recipient policies, and authenticated decision exchange. Its Image-based Vouch workflow passes six values to the application: two refund inputs, request ID, actor, action, and expiry. It rejects mixed protocols.
v1.16.0 · Full embedded evaluator
Publishes a separate import-free evaluator for all 205 procedures in lispex-profile-1.5. It has distinct resource counters and component identifiers. Native provides prepare, evaluate, inspect, verify, and replay, with fresh instances for execution. The distribution includes portable reference inputs and results, a redistribution archive, and retained release dependency records.
v1.15.0 · Authenticated decision exchange
Publishes authenticated decision exchange with a refund example, Native authoring handoff, Ed25519 issuer records, recipient policies, and canonical .lpxdecision bundles. Native provides the full workflow; npm provides inspection and authentication.
v1.14.0 · JSON decision workflow
Publishes JSON rule execution with separate limits, atomic rule run, inspection and verification without execution, and replay in a fresh instance. Includes a shared refund example and a licensed evaluator redistribution archive.
v1.13.0 · Embedded evaluator
Publishes Native lispex embed prepare/evaluate/inspect/verify with an import-free evaluator and separate preparation and evaluation limits. Fixes this evaluator's language profile, resource accounting, binary calling interface, value codec, and portable record format. Adds /llms.txt and a sitemap for current documentation.
v1.12.0 · Local MCP tools
Publishes Native MCP tools for installed reference lookup, trusted-source evaluation with size and time limits, diagnostics, and fixed execution comparisons. Includes a public primer and tool descriptor over standard input and output.
v1.11.0 · Companion installation
Publishes the execution catalog, stored-ZIP installer, and downloads of pinned Topaz VM and AOT compiler packages for macOS ARM64. The installed products support relocation.
v1.10.0 · Execution selection and diagnostics
Publishes Native inventory, diagnostics, measurements, and selection locks without local paths. Locks select reference interpretation, Rust VM, Topaz VM, or AOT execution.
v1.9.0 · Bytecode, compilation, and lessons
Publishes beginner lessons, LIL support for all 205 procedures, Core IR, verified bytecode, and the Rust VM. Includes source formatting, compiled Vouch tied to the request, Topaz VM/AOT execution, and comparison of four execution methods.
v1.8.0 · Lispex Images
Publishes Lispex Images across Native, npm, Node/browser WASM, and the local Playground using the same Rust implementation. Canonical images supply exact source bytes to request-bound Vouch.
v1.7.0 · Request-bound Vouch
Publishes request-bound Vouch. Users derive identifiers, create policies, issue bundles, and authenticate in Native or npm. Authentication can compare separately supplied source and input. Native re-execution and the decision gate use that external request.
v1.6.0 · Vouch bundles and policies
Combines portable bundle v0, key-specific source policy v1, shared Rust source identifiers and policy tools, and authentication of raw signed records or bundles.
v1.5.0 · LIL and LIT
Publishes LIL and LIT execution with 84/205 tracked procedures each, a joint record for three implementation families, and coordinated Native, npm, WASM, and Playground distribution.
v1.4.0 · Runtime and distribution
Aligns Native, npm, WASM, and Playground behavior. Adds apply and multiple-value execution to the checked evaluator, configurable work budgets for execution records, and pinned Native downloads.
v1.3.0 · Decision records
Publishes decision records for the checked language profile, offline verification, and comparison of recorded cases.
v1.2.0 · First consolidated v1
Publishes the first consolidated v1 with recoverable raise, guard, and with-exception-handler errors in Native, Node/WASM, and Playground. The initial work on 2026-06-28 and 2026-06-29 supplied repeatable source reading, hygienic normalization, and evaluation through a trampoline. The language includes exact integers and rationals, finite reals, stable rendering, one-shot upward call/cc, dynamic-wind, multiple values, proper-tail apply, and R7RS-shaped procedures.
Development checkpoints
Expand the minor number you need. These are development records; use the public release list above to choose a published version.
v1.19.x development records
v1.19.1–v1.19.5 were included in public v1.20.0. Meaning Graph and Meaning Environment development used the v1.18.0 identity before publication as v1.19.0.
| Version | Change |
|---|---|
| v1.19.5 | Adds usage counters for frontend transitions, tokens, normalization steps, machine transitions, and output bytes in Rust and LIL. Aligns diagnostic families and reports recursion safety exhaustion as non-tail-call-depth. Aligns whole-source output in Native, npm, WASM, and Playground. Updates SICP link-preview artwork. |
| v1.19.4 | Product manifests describe supported behavior. Execution records distinguish schema identifiers from contract identifiers and include the full identity fields. LIL standard output matches Rust. Batch execution writes explicit output only; the whole-source CLI also renders successful top-level values. Normalizer diagnostics retain their original phase. |
| v1.19.3 | An unbound name produces E300 at its original source position when execution first needs its value. Unused unbound names are accepted. Output committed before the error is preserved. |
| v1.19.2 | Empty source, whitespace, comments, or their combination form an empty program. It returns zero values, empty output, and status 0. |
| v1.19.1 | Nested begin forms at top level or among internal definitions are expanded in source order within one definition scope. A define inside an expression-context begin remains a static error. |
v1.16.x development records
| Version | Change |
|---|---|
| v1.16.6 | Development checks covered the installed Native and npm refund example. |
| v1.16.5 | Adds the final application handoff, a file manifest, the 26-file refund archive, a separate Native archive reader, and a walkthrough in three languages. |
| v1.16.4 | Adds Native workspace status for the 26-file inventory, 25-entry manifest, eight work slots checked for existence, and two fixed candidate command names. The walkthrough presents decision exchange first and Image-based Vouch separately. |
| v1.16.3 | Native and npm create and check recipient policies directly from one reviewed public key and four explicit serialized constraints. The result matches the existing directory-based policy bytes. The sample's source record uses lispex.recipient-sample-provenance/v1. |
| v1.16.2 | Native creates Ed25519 keys from the operating system's cryptographic random source in a new caller-named directory. Native and npm inspect the same public SPKI DER key and report separate decision-issuer and Vouch identifiers. |
| v1.16.1 | Defines the 26-file refund workspace: 21 core files and five unchanged files from its predecessor. Three refund facts map separately to portable strings and canonical decisions. |
v1.15.x development records
| Version | Change |
|---|---|
| v1.15.8 | Fixes the full evaluator component for this version and supplies a component handoff to Topaz. LPXART01 and LPXFAR01 remain separate formats with reference inputs and results, redistribution archives, retention, and release dependency records. |
| v1.15.7 | Adds the separate full-profile WASM evaluator without imports. Native prepare, evaluate, inspect, verify, and replay use a fresh instance for each execution. |
| v1.15.6 | All 205 procedures receive runtime resource permits in six cost classes: Fixed, Numeric, Text, Collection, Effect, and GuestCalling. |
| v1.15.5 | Completes resource-aware snapshots, callback vectors, output buffers, and list, vector, and string construction for the 18 procedures that call user code. Allocation failures and work-budget exhaustion produce diagnostics. |
| v1.15.4 | The 18 procedures that call user code run through explicit virtual-machine control frames. They use defined work limits and avoid recursion in the calling host. |
| v1.15.3 | Defines full-profile resource costs for all 205 procedures. A separate iterative result encoder supports every portable data tag in value codec v1. |
| v1.15.2 | One generated registry of 205 procedures supplies both installed procedures and their Core IR identifiers. |
| v1.15.1 | Records the full evaluator's reader, forms, instructions, values, diagnostics, and 205 procedures. Identifies which existing formats it reuses. |
v1.14.x development records
| Version | Change |
|---|---|
| v1.14.6 | Development checks covered installed Native and npm decision exchange, relocation, and replay. The results were recorded in a product report. |
| v1.14.5 | Adds the seven-file .lpxdecision bundle. Native supports issue, inspect, authenticate, and replay. npm supports inspect and authenticate. |
| v1.14.4 | Adds a separate Ed25519 issuer-signed record over the exact portable core bytes. Recipients create and check policies. Native authenticates without executing the rule. |
| v1.14.3 | Adds the Playground refund mode with one-click input changes and three source-containing handoffs for Native authoring. |
| v1.14.2 | Separates development, published product, documentation, language-profile, and distribution version identifiers. Browser, Native, landing-page, and three-language refund examples use one source of data. |
| v1.14.1 | Moves Lispex Images to Sunlit Amber v2 image, profile, and codebook formats across Native, npm, public WASM, Playground, and supplied examples. |
v1.13.x development records
| Version | Change |
|---|---|
| v1.13.4 | Connects the supplied refund rule, strict JSON conversion, atomic decision directory, inspection, verification, and replay in an installed Native workflow. Covers relocation and rejected or tampered input. The landing page and three languages use the same example. |
| v1.13.3 | Adds lispex rule inspect, verify, and replay for the five-file decision directory. Checks prepared bytecode and its connection to the result. Replay runs once in a fresh instance. |
| v1.13.2 | Native lispex rule run combines source bytes, strict JSON input, separate preparation and evaluation limits, and the built-in evaluator. It writes the decision directory atomically. |
| v1.13.1 | Adds the shared refund example and JSON-to-value conversion that rejects duplicate keys and inexact numbers. |
v1.12.x development records
| Version | Change |
|---|---|
| v1.12.4 | Fixes the evaluator's language profile, repeatable work and logical-allocation accounting, import-free WASM calling interface, and portable core schema for this version. |
| v1.12.3 | Adds Native lispex embed prepare, evaluate, inspect, and verify with one embedded import-free WASM evaluator. Preparation and evaluation have separate limits. Each operation gets a fresh Store and Instance; completed evaluations include canonical result-value bytes. |
| v1.12.2 | Adds a reproducible import-free WASM evaluator package, a value-only binary calling interface, and canonical prepared bytecode. Each request owns its execution state. Three supplied policy rules run in fresh Rust VM instances. |
| v1.12.1 | Replaces generic step and allocation limits with four preparation axes and ten evaluation axes. Removes consumed usage from the candidate portable core. Adds Node and Rust reference vectors and three policy examples. |
v1.11.x development records
| Version | Change |
|---|---|
| v1.11.3 | Development checks covered the four installed MCP tools, E100/E303/E321 consistency with the CLI, denied host permissions, request isolation, resource termination and recovery, and comparison results. |
| v1.11.2 | Adds lispex_compare_routes with tree-rust, rust-topaz, and all-four comparison sets. Companion tools are accepted only at startup. Each request builds a new AOT product and explicitly reports agreement or disagreement. |
| v1.11.1 | Adds lispex mcp serve using MCP 2025-11-25. Its three Native tools provide installed language reference lookup, trusted-source Rust evaluation with size and time limits, and diagnostic lookup. |
v1.10.x development records
| Version | Change |
|---|---|
| v1.10.4 | Adds an end-to-end example for installing both companion tools, building AOT, listing and measuring four execution methods, locking selection, diagnosis, and execution. The same VM/AOT lock files work after relocation. |
| v1.10.3 | Adds routes fetch --route aot-compiler for the eight-file Topaz 5.11 compiler package on macOS ARM64. It checks the immutable release manifest. The compiler works after relocation and builds repeatable AOT products that run without source. |
| v1.10.2 | Adds Native routes fetch, an embedded official catalog, and a reproducible Topaz 5.11 VM package for aarch64-apple-darwin. |
| v1.10.1 | Adds Native routes install, lispex.route-catalog/v1, and lispex.route-installation/v1 without local paths. Topaz VM and AOT compiler packages use a canonical ZIP format without compression. |
v1.9.x development records
| Version | Change |
|---|---|
| v1.9.3 | Adds routes run with a selection lock and a common structured result for all four execution methods. The reference interpreter remains the compatible default and recovery option. |
| v1.9.2 | Native routes measure samples the reference interpreter, Rust VM, pinned Topaz VM, and pinned AOT. It keeps measurements separate from the canonical comparison report. |
| v1.9.1 | Adds Native routes inventory, routes lock, and routes doctor for the four execution methods. Lock creation preserves existing files. |
v1.8.x development records
| Version | Change |
|---|---|
| v1.8.20 | Adds Native compare-routes over one source and input, with matching AOT product checks and explicit execution of all four methods. The lispex.route-comparison/v1 report records semantic and comparable-resource differences without overwriting an existing report. Fixes AOT procedure-call charging and structured resource errors. Reproducible macOS executable finalization records strip/sign tool identifiers and updates the Topaz artifact binding. |
| v1.8.19 | Adds full-profile Lispex-to-Topaz AOT on Native macOS ARM64. It generates readable Topaz and source maps and checks exact installed Topaz/Rust build tools. build, inspect, validate, and run support source-free products with full-width u64 resources, diagnostics, warnings, and five visible zero fallback counters. |
| v1.8.18 | Adds Native bytecode run --engine topaz --topaz-vm on macOS ARM64 for the installed Topaz 5.11 lispex-topaz-vm/v1. compare-vms compares execution of one verified bytecode file. Optimized Native builds retain all Core IR and bytecode compilation operations. |
| v1.8.17 | Adds Native lispex fmt, quiet --check, safe --write, and Format Document integration in VS Code/Open VSX. Formatting preserves comments, pragmas, tokens, and literal spelling. |
| v1.8.16 | Adds lispex.vouch-compiled-artifact/v1 and Native vouch compiled build/inspect/validate. Optional vouch verify --reexecute --compiled-artifact re-derives the file from exact source. The local compiled gate requires matching current reference, Meaning, and verified Rust VM execution records. |
| v1.8.15 | Adds binary lispex.bytecode/v1, the pre-execution lispex.bytecode-verifier/v1, and full-profile lispex-rust-vm/v1. Native provides bytecode build, inspect, validate, and run, plus source execution with --engine vm. Reference/VM comparison reports preserve existing files. |
| v1.8.14 | Adds full-profile lispex.core-ir/v1 and Native core-ir build, validate, and inspect. Core IR records stable IDs for 205 procedures, resolved local/global variables, closure captures, tail positions, source locations, and a Canonical Core representation. |
| v1.8.13 | LIL adds %, list-first, and list-rest with compatibility warnings W330/W331. Procedure support rises from 202/205 to 205/205. |
| v1.8.12 | LIL adds display, write, newline, and println with a private output collector and a fixed output budget. Support rises from 198/205 to 202/205. |
| v1.8.11 | LIL adds the remaining 12 higher-order collection procedures using explicit continuation frames. Support rises from 186/205 to 198/205; procedures calling user code rise from 6/18 to 18/18. |
| v1.8.10 | LIL adds nine division operations with exact intermediate values and gcd/lcm folds. The numeric host kernel supplies exact-integer expt and two-value exact-integer-sqrt. Support rises from 173/205 to 186/205. |
| v1.8.9 | The numeric host kernel adds exactness-preserving floor, ceiling, round, truncate, exact/inexact conversion, and integer parity for LIL. LIL implements min/max across numeric types. Support rises from 161/205 to 173/205. |
| v1.8.8 | LIL's Unicode host kernel adds 18 character/string case predicates, conversions, and case-insensitive comparisons. Support rises from 143/205 to 161/205. |
| v1.8.7 | LIL adds list copying, lookup, shared-tail traversal, list/string constructors, and character-indexed string/vector conversion. Support rises from 135/205 to 143/205. |
| v1.8.6 | LIL adds case-sensitive character and string comparison chains using Unicode scalar and lexicographic order. Support rises from 127/205 to 135/205. |
| v1.8.5 | LIL adds three finite-real numeric predicates, structural !=, memv, assoc, assq, and assv. Support rises from 119/205 to 127/205. |
| v1.8.4 | LIL composes abs, square, three sign/zero predicates, boolean=?, and symbol=? from existing operations. Support rises from 112/205 to 119/205. |
| v1.8.3 | LIL adds all 27 missing composed pair accessors from caar through cddddr. Support rises from 85/205 to 112/205. |
| v1.8.2 | Classifies all 205 current procedures as profile-required. Host-only and future-profile features are recorded separately. Historical records classify the primary reason for each of 179 paired execution differences. |
| v1.8.1 | Reorganizes documentation into a four-step beginner course, Syntax at a Glance, ten numbered groups, and 53 pages in English, Korean, and Russian. Downloads adds version checking, command recovery, and official VS Code/Open VSX guidance. |
v1.7.x development records
| Version | Change |
|---|---|
| v1.7.3 | Canonical Lispex Images supply exact source bytes to Native Vouch identity, policy, issue, inspect, authentication, re-execution, and gate operations. npm uses images for identifiers, policies, and authenticated verification. The refund-window example uses images throughout. |
| v1.7.2 | The shared Rust image implementation reaches npm and Node/browser WASM. Playground supports local creation, opening, checked page navigation, exact recovery, download, and a separate explicit run. Single-page and multipage image bytes match across products. |
| v1.7.1 | Native introduces canonical Lispex Images: source-to-PNG/ZIP encoding, inspection of public integrity values, and byte-for-byte recovery. Execution requires a complete format check and an explicit user action. |
v1.6.x development records
| Version | Change |
|---|---|
| v1.6.4 | The npm Vouch verification WASM build reproduces the same bytes from clean, modified, or relocated source checkouts. Its standalone export inspection also works from a clean checkout. |
| v1.6.3 | Native bundle re-execution and gating require matching external source and input. Only current evidence for that request reaches the grant. Documentation adds /v1.6 routes, Downloads, numbered current/Classic navigation, aligned page widths, shorter browser titles, responsive headings, a Korean wordmark, and localized labels for forms, results, navigation, and menus. |
| v1.6.2 | Native and npm authenticate a pinned bundle before comparing separately supplied source and input bytes. |
| v1.6.1 | Native and npm add vouch key-id, engine-id, and input-id alongside source-id, using shared Rust code. |
v1.5.x development records
| Version | Change |
|---|---|
| v1.5.8 | Native and npm vouch policy create/check create and validate canonical recipient trust policy v1 through shared Rust code. |
| v1.5.7 | Native and npm vouch source-id --source derive the identifier of exact source bytes under the configured budget, through shared Rust code. |
| v1.5.6 | Trust policy v1 requires the selected key to allow the exact source identifier, even when the signature is valid. |
| v1.5.5 | Adds a canonical bundle of signed record, source, and input. Native creates and consumes it; npm consumes it for authentication. |
| v1.5.4 | npm vouch verify authenticates Native-signed records and their exact source, input, and profile through the shared Rust verification build. Reports match Native v0 bytes. |
| v1.5.3 | Native vouch gate --require-decision grants local approval after authentication, agreement of the complete current execution records, and an exact decision match. |
| v1.5.2 | Groups commands under vouch, adds a refund-window workflow, and expands LIL to 85/205 procedures. Native vouch verify --reexecute reports authentication separately from agreement with current execution. |
| v1.5.1 | Native creates and signs eligible decision evidence in DSSE signed record containers. Recipients authenticate it using their own trust policies. |
v1.3.x development records
| Version | Change |
|---|---|
| v1.3.11 | Bridge readers check canonical report structure, nested fields, linked files, and optional expected context. |
| v1.3.10 | Development checks covered malformed file classes. The documentation distinguished file consistency checks from issuer authentication. |
| v1.3.9 | Adds a set of 12 welfare-style cases for comparing recorded decisions. |
| v1.3.8 | Adds the Vouch Bridge report format, an offline checker, and an external execution engine example. |
| v1.3.1-v1.3.7 | Adds Native execution-record generation, release-build engine identifiers, offline verification, and versioned sets of recorded cases. Documents the distinction between record consistency and issuer authentication. |
v1.2.x development records
| Version | Change |
|---|---|
| v1.2.15-v1.2.19 | Strengthens execution-record readers. Development records include Scheme comparisons, semantic examples, and malformed or altered files. |
| v1.2.14 | Expands the checked decision profile and examples with search, rounding, any/all traversal, explicit errors, and clearer recorded-case comparison. |
| v1.2.9-v1.2.13 | Defines the checked profile and built-in name binding. Adds control and arithmetic examples, closures, traversal, host-input binding, npm offline verification, and recorded-case comparison. |
| v1.2.2-v1.2.8 | Adds versioned Canonical Core, execution records, and a specification-coverage manifest. Introduces Meaning Graph construction, a separate Meaning Environment evaluator, and a differential comparison report format. |
Other development records
Meaning Graph v1 work resolved 15 behavior gaps in a selected set of 61 cases.
The SICP work used the v1.17.0 development identity before publication as v1.18.0.
Its records include 26 representative cases and 104 external measurements against MIT/GNU Scheme, Racket SICP, Chibi, and Gauche.
The SICP runtime continues in v1.20.0 with the package identity @lispex/sicp@1.0.0.
Language, package, and file versions
Language, package, and file-format versions advance with their respective changes.
The language profile defines evaluation behavior.
Named csk and Vouch formats define file schemas and compatibility identifiers.
Runtime records identify their supported procedures, host execution methods, case sets, and execution records.
See the product catalog for current features and the roadmap for future directions.