Skip to content

Compilation and toolchains

Compilation favors runtime performance and reuse of previous work. Toolchain bundles coordinate independently released official components.

Design documentation

This chapter describes the language design. Examples are illustrative; implementation availability and unresolved rules are explained in Design status.

Compilation priorities

Arbor prioritizes runtime performance and reuse of compiled work over minimum clean-build latency. The compiler may spend meaningful effort on specialization, contract proofs, redundant-check elimination, and optimization.

Incremental artifact identities account for source contents, compiler version, target, options, and relevant dependencies. Unchanged work is reused. Dependency implementation changes should not automatically rebuild every consumer, but inlining, specialization, and compile-time evaluation must track the exact implementation facts they depend on.

Observable effects cannot disappear merely because a result is unused:

foo()                  // Execute; result is unused.
discard foo()          // Execute; explicitly acknowledge discarding its result.
let result = foo()     // Execute and retain the result.

An optimizer must preserve exceptions, I/O, mutation, synchronization, and termination behavior except where the language explicitly permits otherwise (such as diagnostic logging inside cached pure functions). A must_use facility can diagnose ignored results; its exact declaration syntax is provisional.

Independently patched tools

Official components share a supported major.minor series, but have independent patch releases:

compiler   0.3.5
formatter  0.3.7
linter     0.3.2
docs       0.3.4
lsp        0.3.6

A supported toolchain bundle selects a tested combination of exact component versions. Projects can pin the bundle and override components. Cross-series combinations are allowed but untested; actual protocol or artifact incompatibility must produce a useful diagnostic. Matching-series patches preserve compatibility.

Editor marketplace versions may be independent while advertising the supported Arbor series. Toolchain manifest keys and the bundle format remain provisional.