Lispex

Meet Lispex through one small decision rule, then choose a six-step learning path, the Playground, or the precise manuals.

Lispex is a small Lisp for decisions that should be easy to read again. A rule is ordinary text. Within documented limits, the same input produces the same observable answer, and the result can stay shaped like data instead of disappearing inside an application.

See the shape first

A Lispex program is built from values and parenthesized forms. In an evaluated form, the first name says what to do and the remaining expressions supply the inputs.

LISPEX
(+ 2 3)

Result

OUTPUT
5

Nesting reads from the inside out. Below, define puts a name on a value, >= answers a question, and if selects one of two data values.

LISPEX
(define total 62)

(if (>= total 50)
    '(decision free-shipping)
    '(decision standard-shipping))

Result

OUTPUT
(decision free-shipping)

The leading quote in '(decision free-shipping) means “keep this list as data.” Without it, Lispex would try to call a procedure named decision. That small distinction, that forms can be executed or preserved as data, is one of the useful ideas you will learn gradually.

What Lispex is good at

Lispex fits rules such as eligibility checks, refund windows, pricing boundaries, routing choices, and repeatable transformations. Its reference runtime relies on deterministic evaluation rules, exact arithmetic where possible, and stable diagnostics. These properties make a small rule easier to rerun and compare.

Lispex is intentionally not a general operating-system scripting environment. It does not hide network calls, clocks, random values, or package imports inside a decision. Your application supplies the input and decides what to do with the returned value.

Choose your entrance

If you want to…Go here
learn the language in six small stepsLearning Path
run code without installing anythingPlayground
scan the everyday syntax on one pageSyntax at a Glance
install a local runtimeFirst Program
build and run a verified Native artifactRun Verified Bytecode
look up an exact form or procedureSyntax Reference or Procedure Index

Exact Lispex Images, verified Native bytecode, and Lispex Vouch are real product features, but none is a prerequisite for learning the language. Images carry exact source. Bytecode gives you an explicit local route through a virtual machine. Lispex Vouch checks a recorded decision later. It authenticates who signed a rule, binds your own copy of the source and input, and can require one exact local decision. Learn the small language first. Those paths will make more sense afterward.

Running a rule you do not trust

The ordinary way of running Lispex does not count all of the work a running rule can drive, nor does it count all of the memory that rule is charged for. The products that offer a choice of routes are the same, and so is the authoring evaluation offered by lispex mcp serve. Use all of them with rules you trust.

For a rule you do not trust, the downloadable program offers lispex embed. It provides a smaller restricted set of the language. It puts a limit on the work and a limit on the memory, and both come out the same on every run. It has no access to the host machine and no fallback to another way of running. Those limits are kept inside the same process rather than inside an operating-system process sandbox. A caller cancellation or a killed process produces no decision and no portable core, the small movable record a completed run leaves behind.

A useful promise

The manual distinguishes what the product does from what it does not claim. Rust is the reference runtime. Topaz is a separate language and its compiler, and Lispex uses it in two places. One is a Topaz virtual machine that runs prepared instructions, and the other is an AOT toolchain that compiles a rule ahead of time into a standalone program. LIL, a Lispex interpreter written in Lispex, and LIT, a Lispex interpreter written in Topaz, are verification backends with a limited scope. They are not silent fallbacks, and they are not proof that every implementation agrees everywhere. You can ignore that machinery during the course and return to Runtime and Backends when deployment or cross-checking matters.

Words this documentation reuses

A handful of words repeat across the manual, the guides, and the release history. You do not need any of them for the course.

WordWhat it means
evaluatorthe program that runs the rule
treethe built-in interpreter that reads your source directly
VMa virtual machine, a program that runs prepared instructions instead of reading your source
AOTahead-of-time compilation, which turns a rule into a program before anyone runs it
canonicalwritten the same way every time, so the same input gives the same bytes
boundedrun under a fixed limit on how much work and memory it may use
meterthe counter that measures how much work a run used
routeone way of running a rule
route locka small file that records which route was chosen without recording where that product sits on the machine
portable corethe small record that binds the rule, the input, the limits, and the outcome of one run
receipta written record of what one run or one installation produced
courtone run of checks gathered into a single verdict
surfacea place where Lispex is offered, such as Native, npm, the WebAssembly build, or the Playground, while the surface of the language means the part of the language that is covered
TopazA separate language and its compiler. Lispex uses it as a Topaz virtual machine that runs prepared instructions and as an AOT toolchain that compiles a rule ahead of time into a standalone program
LILA Lispex interpreter written in Lispex
LITA Lispex interpreter written in Topaz
WASMthe WebAssembly build

Ready? Open the Learning Path, or go straight to the First Program if you prefer to learn by running code.