Inference is a programming language designed for building verifiable software. It is featured with static typing, explicit semantics, and formal verification capabilities available out of the box.
Inference allows for mathematically verifying code correctness without learning provers. Keep the implementation correct, even with vibecode.
Important
The project is in early development. Internal design and implementation are subject to change. So please be patient with us as we build out the language and tools.
Install the official VS Code extension for syntax highlighting:
- Inference homepage
- Access our Inference book for a guide on how to get started
- Inference Programming Language specification
infs is the unified toolchain CLI for Inference. It provides subcommands for building, managing, and working with Inference projects.
The infs build command compiles a single .inf source file through three phases:
- Parse (
--parse) β Build the typed AST using tree-sitter - Analyze (
--analyze) β Perform type checking and semantic validation (WIP) - Codegen (
--codegen) β Emit WebAssembly binary with optional Rocq translation
You must specify at least one phase flag; phases run in canonical order (parse β analyze β codegen).
# Via cargo
cargo run -p infs -- build path/to/file.inf --parse
# After building, call the binary directly
./target/debug/infs build path/to/file.inf --codegen -o-oβ Generate WASM binary file inout/directory-vβ Generate Rocq (.v) translation file inout/directory
infs version
infs --version| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Usage / IO / Parse failure |
infs installβ Download and install toolchain versionsinfs newβ Scaffold new projectsinfs doctorβ Verify installation healthinfs(no args) β Launch TUI interface
Prebuilt binaries are available for each release. Two CLI tools are distributed:
infs- Full-featured toolchain CLI (recommended for all users)infc- Standalone compiler CLI (for direct compilation)
| Platform | infs | infc |
|---|---|---|
| Linux x64 | infs-linux-x64.tar.gz |
infc-linux-x64.tar.gz |
| Windows x64 | infs-windows-x64.zip |
infc-windows-x64.zip |
| macOS ARM64 | infs-macos-apple-silicon.tar.gz |
infc-macos-apple-silicon.tar.gz |
<distribution-folder>/
βββ infs (or infc) # The CLI binary
βββ bin/
β βββ inf-llc # LLVM compiler with Inference intrinsics
β βββ rust-lld # WebAssembly linker
βββ lib/ # (Linux only)
βββ libLLVM.so.* # LLVM shared library
Notes:
- On Linux, the LLVM shared library must be in the
lib/directory. - On Windows, all required DLL files should be placed in the
bin/directory next to the executables. - The CLI binaries automatically locate dependencies relative to their own location.
- No system LLVM installation is required for end users.
To build Inference from source, you'll need the required binary dependencies for your platform.
For detailed platform-specific setup instructions, see:
Download the following files for your platform and place them in the specified directories:
- inf-llc: Download β Extract to
external/bin/linux/ - rust-lld: Download β Extract to
external/bin/linux/ - libLLVM: Download β Extract to
external/lib/linux/
- inf-llc: Download β Extract to
external/bin/macos/ - rust-lld: Download β Extract to
external/bin/macos/
- inf-llc.exe: Download β Extract to
external/bin/windows/ - rust-lld.exe: Download β Extract to
external/bin/windows/
-
Clone the repository:
git clone https://github.com/Inferara/inference.git cd inference -
Download and extract the required binaries for your platform (see links above)
-
Make the binaries executable (Linux/macOS only):
chmod +x external/bin/linux/inf-llc external/bin/linux/rust-lld # Linux chmod +x external/bin/macos/inf-llc external/bin/macos/rust-lld # macOS
-
Build the project:
cargo build --release
The compiled binaries will be in target/release/ (infs and infc).
The workspace is configured for efficient development:
cargo build- Builds only thecore/crates (faster for core development)cargo build-full- Builds the entire workspace, including tools and testscargo test- Runs tests forcore/crates and thetests/integration suitecargo test-full- Runs tests for all workspace members, including tools
Check out open issues.
Contributions are welcome! Please see CONTRIBUTING.md for details.