The crates the toolchain is made of

The engine ships as 15 Rust crates on crates.io, all at a single lockstep version. Each one below says what it does and links to its registry page.

How to read this list

Every crate carries one job. A program written in LOGOS passes through most of them in order: the language crates read the English, the compiler lowers it, the proof crates check what the lowering claims, and the runtime crates execute the result. The kernel sits under all of that and re-derives anything the others assert.

Every published crate in the toolchain shares one version, 0.10.1, and they move together. Pulling one pulls the layer beneath it, which is why the version is lockstep rather than per crate. The source for all of them sits in one repository.

Workspace

15 crates, one version

A list of every crate in the workspace, grouped by job. If you are hearing this rather than seeing it, you are the reason the aria labels on this site get written before the animations do.

Language

These two read English and hand back logic.

Compiler

One crate carries the pipeline from analysis to emitted code.

  • logicaffeine-compile

    Runs the analysis and optimization passes, then executes a program through the interpreter, the bytecode virtual machine, or generated Rust, C and SystemVerilog.

    logicaffeine-compile on crates.io

Proof

Four crates, and the smallest of them decides what the other three are allowed to conclude.

  • logicaffeine-kernel

    A small trusted Calculus of Constructions type checker that every other component re-checks its results against. The kernel has no path to the lexicon, so it never sees an English word.

    logicaffeine-kernel on crates.io
  • logicaffeine-proof

    Searches for proofs by backward chaining, certifies what it finds into kernel terms, and offers a hint when the search stalls.

    logicaffeine-proof on crates.io
  • logicaffeine-verify

    Encodes a verification IR into the Z3 SMT solver to decide validity, equivalence and temporal properties.

    logicaffeine-verify on crates.io
  • logicaffeine-tv

    Proves the Rust the compiler emits behaves the same as the LOGOS source that produced it.

    logicaffeine-tv on crates.io

Runtime

Where a program actually runs, and how it speeds up while running.

  • logicaffeine-forge

    The low level JIT layer: executable memory pages, prebaked machine code stencils, and an x86-64 code generator. On every other target the crate compiles to nothing and the bytecode machine runs instead.

    logicaffeine-forge on crates.io
  • logicaffeine-jit

    Connects the stencil JIT to the bytecode virtual machine, so a hot loop upgrades to native code without being rewritten. Native targets only.

    logicaffeine-jit on crates.io
  • logicaffeine-runtime

    Deterministic concurrency: a scheduler, channels, select, a logical clock, and seed and trace replay. A run is a function of the program and the seed, and replays bit for bit, which spares you the bug that only happens on the third Tuesday under load.

    logicaffeine-runtime on crates.io

Data

Two crates that touch no IO, so they run anywhere the engine runs.

  • logicaffeine-base

    The foundation layer: arena allocation, string interning, source spans, exact numbers, units, money, time, UUIDs and hashes.

    logicaffeine-base on crates.io
  • logicaffeine-data

    The runtime value types, and the eight conflict free replicated types that converge without coordination. WASM safe, with no IO of its own.

    logicaffeine-data on crates.io

System

One crate holds everything that reaches outside the process.

Tooling

What a person types at, and what an editor talks to.

Source: API documentation for every published crate, docs.logicaffeine.com(opens in a new tab)

License

Every crate ships under the Business Source License 1.1, with MIT as the change license it converts to on the date the license names. The additional use grant covers individuals and organizations under twenty five people. The terms travel with the source, so the license file in the repository is the copy that governs.

What runs where

Two of the runtime crates are platform bound. The forge and the JIT build on x86-64 Linux and macOS, and compile to nothing anywhere else, which leaves the bytecode machine running the program at full correctness and lower speed. The data crates perform no IO at all, so they run in a browser under WebAssembly as readily as on a server.

The Z3 backed crates sit outside a default build. A plain cargo build skips them, so no Z3 toolchain has to be present to compile the workspace.

Want to see the language these crates implement?

Back to the four products