1 unstable release
Uses new Rust 2024
| new 0.1.0 | Mar 5, 2026 |
|---|
#8 in #mlir
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.
- 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
- 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
- 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