#llvm #mlir #compiler

bin+lib mathic

A compiler with builtin support of symbolic operations, built with LLVM/MLIR

1 unstable release

Uses new Rust 2024

new 0.1.0 Mar 5, 2026

#8 in #mlir

Apache-2.0

135KB
3.5K SLoC

🧮 Mathic

A programming language with builtin symbolic algebra capabilities, powered by LLVM/MLIR

🔧 Dependencies

  • Rust 1.93 or higher
  • LLVM/MLIR 21.x.x

LLVM/MLIR Installation

There are many ways of installing LLVM. Choose the one that fits your needs.

MacOS (Homebrew)

brew install llvm@21

After installation, set the environment variables:

export LLVM_SYS_211_PREFIX=$(brew --prefix llvm@21)
export MLIR_SYS_210_PREFIX=$(brew --prefix llvm@21)
export TABLEGEN_210_PREFIX=$(brew --prefix llvm@21)

Building from Source

⚠️ Note: Building LLVM from source requires at least 6GB of RAM and ~20GB of disk space. Ensure these requirements are met, as the build process is likely to fail otherwise.

  1. Clone LLVM Project
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
git checkout llvmorg-21.1.7
mkdir build && cd build
  1. Configure Build
cmake -G Ninja ../llvm \
   -DLLVM_ENABLE_PROJECTS="mlir" \
   -DCMAKE_BUILD_TYPE=RelWithDebInfo \
   -DLLVM_ENABLE_ASSERTIONS=On \
   -DLLVM_BUILD_LLVM_DYLIB=On \
   -DLLVM_LINK_LLVM_DYLIB=On \
   -DMLIR_BUILD_MLIR_C_DYLIB=On \
   -DLLVM_TARGETS_TO_BUILD=host \
   -DCMAKE_INSTALL_PREFIX=/opt/llvm-21

if you have mold installed, you can add this flag which will make linking much faster:

-DLLVM_USE_LINKER=mold

For more info about building from source, check: https://llvm.org/docs/GettingStarted.html

  1. Build and Install
ninja install

You'll need to export the required environment variables as well:

export LLVM_SYS_211_PREFIX=<path-to-install-prefix>
export MLIR_SYS_210_PREFIX=<path-to-install-prefix>
export TABLEGEN_210_PREFIX=<path-to-install-prefix>

If you used to command above, the prefix will be /opt/llvm-21

Usage

You can run a program using this command:

cargo --bin euler -- <path-to-file>.mth 

📖 Current Status

⚠️ This project is in early development. Features are being added incrementally.

For more details, see the docs.

Built with ❤️ and 🦀 Rust

Dependencies

~15–21MB
~323K SLoC