Aura packages are the unit of multi-file compilation (RFC-005, RFC-008).
Layout
my_app/
aura.toml
aura.lock # written/verified for path deps
src/
main.aura
util.auraMinimal aura.toml:
[package]
name = "my_app"
version = "0.1.0"version here is the app package version (not the Aura toolchain version).
Multi-file same package
Files in the same package share the package namespace. Point the CLI at the directory:
aura check corpus/multi
aura run corpus/multi
aura test corpus/multi
# monorepo without global install:
cargo run -p aura-cli -- run corpus/multiImports and visibility
import path.to.pkgandimport path.to.pkg as Aliaspubcontrols cross-package visibility- Path dependencies live under
[dependencies]inaura.toml
Example shape (see corpus/import/ for working samples):
[dependencies]
math = { path = "../math" }import math
fun main() {
// call into the math package
}Qualified form:
import math as M
// M.someFun(...)
// M.SomeType(...)Standard library
In-tree std packages (alpha):
| Package | Role |
|---|---|
std.io | Console, file I/O, argv/stdin/exit (println, args, readFile, …) |
std.assert | Assert helpers for tests |
std.collections | Map / Set / HashMap / HashMapStr / Iterable + Int·String HOF + join |
The CLI can auto-prelude std.io for package builds and resolve std.* path deps (via AURA_STD or walk-up). Details: Standard library.
Lockfile (alpha)
aura.lock records path dependencies (including transitive # transitive lines) so builds stay reproducible in the monorepo / path-dep workflow.
Registry schema v0 may appear as structured entries (version / source / checksum form) for forward compatibility — there is no registry fetch or semver resolve yet. Multi-package work in alpha is path deps only.
When registry lands, the default backend is GitHub (index repo + Release .crate assets, plus direct github = "owner/repo" deps). Design: RFC-005 §6.5–6.6.
Alpha limits
- No package registry download / publish
- No caret/semver range resolution
- Prefer monorepo-local or sibling
path = "…"deps
See 0.1.0-alpha freeze.