2 releases
Uses new Rust 2024
| 0.1.1 | Mar 16, 2026 |
|---|---|
| 0.1.0 | Mar 5, 2026 |
#1402 in Programming languages
175KB
4.5K
SLoC
🧮 Mathic
A programming language with builtin symbolic algebra capabilities, powered by LLVM/MLIR
Installation
🔧 Dependencies
- Rust 1.94.0 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 and Linux (Homebrew)
brew install llvm@21
After installation, set the environment variables:
export LIBRARY_PATH=/opt/homebrew/lib
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
Installing Mathic
You can install mathic using cargo
cargo install mathic
Note: Ensure the required environment variables are set, otherwise the build will fail.
Usage
You can run a program using this command:
euler <path-to-file>.mth
📖 Current Status
⚠️ This project is in early development. Features are being added incrementally. Due to this, you are welcome to test it and create issues.
For more details, see the docs.
Built with ❤️ and 🦀 Rust
Dependencies
~16–22MB
~404K SLoC