Ruta graveolens  ·  notes from a language experiment  ·  cultivated since 2025

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
--
Peak Memory
--
Binary Size
--

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.