Skip to content

Arbor

Arbor is a compiled language designed for readable programs, explicit contracts, and runtime performance. Its tools share a single command, arbor, and its standard library includes support for collections, numbers, time, concurrency, configuration, and testing.

We trust programmers to make deliberate choices. We design defaults for tired programmers making accidental ones.

fun add(x: int, y: int) -> int {
    return x + y
}

let total = add(1, y=2)

First documentation edition

This site describes Arbor's language design, not a released implementation. Syntax marked provisional may change, and open rules remain unresolved. Examples illustrate semantics and have not been checked by an Arbor compiler. See Design status for the full boundaries.

Start reading

Language reference

Area Chapters
Values Numbers and constants, modular arithmetic, strings and secrets, temporal values
Data modeling Containers, types and generics, null and omission, classes
Behavior Functions, loops and indexing, purity and caching, decorators and settings
Boundaries Ownership, contracts, handling failures and resources, tasks and async

Tooling and libraries

An Arbor project uses manifest.yaml, production source in src/, and tests in tests/. Test dependencies and privileges are kept out of production code. Packages use scoped names and exact versions; published releases are immutable.

Read about testing, dependencies, package versions, and compilation and toolchains. The standard-library overview records the intended library scope without assuming finalized module names.

The principles explain the language's direction. The open-decisions catalog identifies what needs further specification.