How to Build
All contributions are welcome: bug fixes, features, and documentation improvements.
How to Contribute
- Fork the Noir repository
- Create a branch
git checkout -b your-feature-name - Make changes
- Commit with a clear message
- Push to your fork
git push origin your-feature-name - Open a Pull Request with a description
See CONTRIBUTING.md for detailed guidelines.
Development Setup
Installing Crystal
Noir is built with Crystal. Install it for your platform.
Ubuntu/Debian
curl -fsSL https://crystal-lang.org/install.sh | sudo bash
macOS (Homebrew)
brew install crystal
Other Platforms
See the official Crystal installation guide.
Building and Testing
Clone your fork and install dependencies with shards, Crystal's package manager.
git clone https://github.com/<YOUR-USERNAME>/noir
cd noir
shards install
Build the project. The compiled binary ends up at ./bin/noir.
shards build
For a production-grade build (slower compile, 2–3× faster runtime), pass --release. Use this when running benchmarks or comparing against a published release; debug builds are noticeably slower and can make a healthy build look like a regression.
shards build --release
# or use the just recipe (alias: `just br`)
just build-release
Run the test suite with Crystal's built-in test runner.
crystal spec
# For more detailed output
crystal spec -v
Linting
Noir uses Ameba, a static analysis tool for Crystal.
lib/ameba/bin/ameba.cr
Auto-fix issues.
lib/ameba/bin/ameba.cr --fix
Or use just.
just fix