Skip to content
airsstackPublic

About

Build system based on airsstack/airsl, a Lua embedded runtime in Rust

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

buildl

A sandboxed, deterministic build system whose build files are written in Lua and evaluated on the airsl embedded runtime.

Build files only declare targets: what each reads, what it makes, which command makes it. The buildl program, written in Rust, then works out what is out of date, runs those commands in parallel, each in a sandbox, and caches what they produce. The rule underneath is airsl's: nothing is ambient. A build cannot run a program, read a file or see an environment variable unless it was declared and the workspace allowed it. buildl is pre-release.

  • Build files are safe to read: evaluating them grants them nothing.
  • Rebuilds you can explain: buildl plan tells you what would rebuild, and why.
  • Authority you can see: what a build may touch is checked against a limit before anything runs.

A taste

build.lua, from examples/python:

local b = buildl

local app = b.sources("app/*.py")

-- zipapp packs the app directory into one runnable archive, out/app.pyz.
b.target("app.pyz", {
  inputs = { app },
  run = { "python3", "-m", "zipapp", "app", "-o", "$out" },
})

b.test("unit", {
  inputs = { app, b.sources("tests/*.py") },
  run = { "python3", "-m", "unittest", "discover", "-s", "tests" },
})

Its buildl.toml sets the workspace's ceiling: here, python3 is the one program any build may run.

Install

buildl runs on Linux and macOS.

curl -LsSf https://airsstack.github.io/buildl/install.sh | sh                  # prebuilt, latest release
cargo install --locked buildl-cli                                              # from crates.io
cargo install --git https://github.com/airsstack/buildl buildl-cli --locked   # from GitHub
cargo make install                                                            # from a checkout

The first line installs a prebuilt buildl into ~/.local/bin. The others build it with Cargo.

Then buildl build, buildl test and buildl plan in that example.

To have an AI agent write and migrate build files, install buildl, airsl (a program already on your PATH is skipped) and the buildl and buildl-migrate skills in one go. install.sh installs the prebuilt buildl and airsl, so it needs no Rust unless you run it from a clone or with a --ref other than main; --dir P copies the skills into P for another agent instead:

curl -fsSLO https://raw.githubusercontent.com/airsstack/buildl/main/skills/install.sh
sh install.sh --claude

Learn more

The buildl Book is the full guide.

Start Getting started · Build files
Concepts Permission · Caching · Sandbox
Features Plugins · Remote cache and execution · Watch mode
Reference Command line · Exit codes · Under the hood
AI agents With an AI agent
Examples examples/: working workspaces for Go, Rust and Python

Crates

Crate Holds
buildl-core domain data, ports and the pure logic of every phase: no I/O, no Lua
buildl-lua build-file evaluation on airsl
buildl the remaining adapters and the composition root: the complete framework
buildl-cli the buildl binary

License

Apache-2.0. buildl is part of the airsstack ecosystem.

About

Build system based on airsstack/airsl, a Lua embedded runtime in Rust

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages