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 tour: learn the core ideas through short examples.
- Functions and calls: read signatures and bind arguments.
- Ownership and freezing: understand mutation and shared data.
- Exceptions and contracts: distinguish operational failures from broken obligations.
- Projects and tools: understand project structure and the intended workflow.
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.