Performance
The Rue compiler is designed for fast compilation. This dashboard tracks compilation performance over time, helping detect regressions and measure the impact of optimizations.
Compilation Time Trend
Total compilation time across the last 20 commits. Lower is better.
Loading chart...
Compilation Time by Program
Each benchmark program shown as a separate line to identify which programs regress.
Loading chart...
Time by Compiler Pass
Breakdown of where compilation time is spent in the most recent benchmark run.
Loading chart...
Peak Memory Usage
Peak memory consumption during compilation. Lower is better.
Loading chart...
Output Binary Size
Size of compiled binary. Smaller binaries are generally preferable.
Loading chart...
Detailed Metrics
Source metrics, throughput, memory usage, and binary size for the latest benchmark run.
Loading metrics...
Methodology
These benchmarks are run automatically on every commit to the main branch across all supported platforms. Each benchmark is executed multiple times to reduce noise, and both mean and standard deviation are recorded.
Platforms
Benchmarks run on the following platforms using GitHub Actions:
- Linux x86-64 - Ubuntu runner (ubuntu-latest)
- Linux ARM64 - Ubuntu ARM runner (ubuntu-24.04-arm)
- macOS ARM64 - Apple Silicon runner (macos-latest)
Benchmark Suite
The benchmark corpus (benchmarks/manifest.toml) is a set of hand-crafted stress tests that exercise different parts of the compiler:
- many_functions - 1000 functions to stress function handling and symbol resolution
- deep_nesting - Deeply nested blocks, ifs, and loops (up to 40 levels)
- large_structs - 700 struct types with multiple fields each
- arithmetic_heavy - Long arithmetic chains (100+ terms) to stress parsing and codegen
- control_flow - Complex if/while/match patterns to stress CFG construction
- array_heavy - Array declarations, indexing, and modifications
- register_pressure - Many simultaneous live variables to stress register allocation
Environment
Benchmarks run on GitHub Actions runners. While there is some variability between runs, running multiple iterations helps smooth out noise. Cross-platform comparisons should focus on trends rather than absolute numbers, as different architectures have different performance characteristics.
Each data point corresponds to a single commit on trunk. When commits land faster than a benchmark run completes, the in-flight run is cancelled in favor of the newest commit, so some intermediate commits may not appear in the history.