Repository navigation
v0.2.3-beta
·
99 commits
to main
since this release
Added
opt_leveloptimization tiers (spec §10.2/§13.2, Phase 8). A newOptLevelpolicy (O0–O3, defaultO2) gates the compiler optimization channels: the arithmetic-series loop closed form now requiresopt_level >= O1, automatic JIT hot-path compilation and tail-call optimization requireopt_level >= O2, and tierO3enables SIMD vectorization of denseF64array elementwise binary ops (runtime::simd, via the portablewidecrate on stable Rust).simplify_levelwas wired into the symbolic simplify pipeline (simplify_at), so lowering it reduces only how deeply a symbolic value is canonicalized — never its mathematical value. Results are semantically identical across tiers (equivalence tests; IEEE lane arithmetic is bit-identical to scalar).
Changed
@builtinlayered optimization (spec §18.4, Phase 9).@builtinmay now take a tier,@builtin(O0)–@builtin(O3): tierO0(bare) stays signature-only and must bind to a registered Rust implementation (E0055/E0056); tiersO1–O3carry a.prafallback body (the semantic authority,E0056if absent) plus an optional Rust fast path used whenopt_level >= N, with an invalid tier reported asE0057. A newFunction::Layeredvariant dispatches between the two implementations at call time.register_implwas augmented withregister_impl_leveland a declarativebuiltin!macro (builtin!("num::fibonacci", fibonacci_impl, O1)) that replaces the manual string-keyed registration calls across the stdlib crates; the.pra@builtin(ON)annotation remains the authoritative dispatch tier.