astra-lang.org

Validated metrics

Every number on this page
comes from a script you can run.

No synthetic marketing charts. The repo ships a validation harness — scripts/validate_metrics.sh — that exercises the five differentiators end-to-end and asserts 12 checks. All 12 pass. Measurements below are from macOS ARM64 (Apple Silicon), 2026-07.

$ ./scripts/validate_metrics.sh
...
RESULT: 12/12 checks passed

D1The repair loop closes

Claim: an agent can take broken source, get a structured diagnosis, repair it, and reach a native binary — fully mechanically.

Test: scenario 1 feeds a program with an undefined variable to astra verify --error-format=json, asserts the JSON carries the exact line/column/error_code, applies the fix, and asserts the binary compiles and prints the expected output.

Result: pass — broken → JSON(line 2, col 13, E0002) → repaired → native, in one scripted pass.

D2Agent mistakes rejected before execution

Claim: the classes of error LLMs most commonly generate never reach runtime.

Test: scenario 2 submits four canonical mistake programs; each must be rejected by verify with the right error class, and none may produce a binary.

Mistake classExampleCaught pre-run
Undefined variableprint(totl) (typo)yes — E0002
Type mismatchlet n: int = "hello"yes — E0004
Wrong argument countadd(1) for add(a, b)yes — E0005
Invalid return typereturning str from -> intyes — E0004

Result: 4/4 rejected — in Python, all four would execute until the faulty line is reached (or silently succeed).

D3Native speed — including compile time

Claim: for compute-shaped work, Astra's compile-then-run beats Python's run alone.

Test: scenario 3 runs an identical 5,000,000-iteration arithmetic loop in both languages, wall-clock timed.

astra
115 ms
python3
959 ms

Result: ~8.3× faster — and the Astra figure includes full compilation (parse, typecheck, LLVM IR, llc, link). Run-only, the gap widens further.

Scope honesty: this is one compute-bound microbenchmark, not a suite. It demonstrates the architecture (native codegen with negligible compile overhead), not a general "8× faster than Python" claim. Broader benchmarks land with the stdlib.

D4Verification is fast enough for every loop iteration

Claim: verify is cheap enough that an agent can call it after every edit — like a linter, with compiler guarantees.

Test: time astra verify (full parse + typecheck, no codegen) on a representative program.

Result: 113 ms wall-clock. At that latency, verification costs less than a fraction of a single LLM token round-trip — there is no reason for an agent not to verify.

D5Deterministic dependency resolution

Claim: the same manifest always resolves to the same lockfile, byte for byte.

Test: resolve a workspace, hash astra.lock, wipe, resolve again, compare sha256.

Result: sha256-identical across repeated runs. A build an agent verified once stays verified — no drifting transitive dependencies.

Cross-languageAstra vs C vs Rust vs Go vs Java vs Node.js vs Python 3

Claim: Astra binaries run CPU-bound work in the same class as C, Rust, and Go — ahead of the JVM and a warmed-up JIT, far ahead of interpreters — with no VM on the target machine.

Test: scripts/run_benchmarks.sh runs the identical algorithm in all seven languages and fails if the outputs don't match, so no benchmark can quietly compute something different. Best-of-3 wall-clock, macOS ARM64: Astra v0.8.0-alpha (default LLVM-IR pipeline) · Apple clang 17 (-O2) · rustc 1.94 (-O) · go 1.26 · OpenJDK 25 LTS · Node v22 · Python 3.9. Run-only unless noted.

BenchmarkAstraC -O2Rust -OGoJavaNode.jsPython 3Astra compile+run
Recursive fib(30)101 ms110 ms103 ms104 ms135 ms138 ms449 ms531 ms
10M-iteration arithmetic loop117 ms108 ms111 ms110 ms146 ms146 ms2,088 ms295 ms
Collatz steps for 1..100,000117 ms114 ms117 ms120 ms152 ms178 ms1,812 ms567 ms
c -O2
108 ms
go
110 ms
rust
111 ms
astra
117 ms
java
146 ms
node
146 ms
python3
2,088 ms

10M-loop benchmark, run time. The full data and the seven-language benchmark sources ship with the compiler source (opens at v1.0-beta).

Result: C/Rust/Go-class native speed — statistically indistinguishable from C, Rust, and Go across all three workloads (±10 ms on a ~110 ms measurement is scheduler noise). 4–18× faster than Python run-only, with even compile + run beating Python's run-only on two of three workloads. Ahead of Java by ~30 ms of JVM startup per process, and a modest but consistent win over Node — with no JIT warm-up and no 40+ MB runtime on the target machine.

Scope honesty: three CPU-bound microbenchmarks, not a language shootout. All native binaries here (Astra, C, Rust, Go) share a ~100 ms wall-clock floor on this host — process spawn + measurement overhead, not language runtime — which amortizes away on longer workloads. String/collection/IO benchmarks land with the stdlib.

SuiteCorrectness metrics

MetricValueSource
Test suite449 passed · 0 failed · 0 ignoredcargo test --quiet (v0.9.1-alpha)
Build warnings0 — CI enforces clippy -D warningscargo build --quiet
Ignored-test burn-down10 → 0 (complete)Release KPI: tests un-ignore only when the feature runs natively end-to-end
End-to-end regression suite108 / 108 — compile → IR → native run → stdout/exit-code assertedtests/regression_tests.rs
Showcase examples runtime-verifiedcompile + execute + stdout assertedtests/showcase_examples_tests.rs
IR validity gateevery corpus program's IR must pass llctests/ir_validity_tests.rs (in CI)
Validation checks12 / 12scripts/validate_metrics.sh

ReproduceRun it yourself

The compiled-binary side reproduces today: download a release, write the loop, and time it —

$ astra verify loop.astra               # the ~100 ms typecheck
$ time astra compile loop.astra --output loop && ./loop
$ time python3 loop.py                  # the comparison

The full scripted harness (validate_metrics.sh, run_benchmarks.sh, the output-verified seven-language scenario programs, and the 449-test suite) ships with the compiler source, which opens at v1.0-beta. If a number on this page doesn't reproduce on your machine, that's a bug — file it.