An environment is a distribution, a release of it, and a CPU architecture.
--distro and --arch choose one for a single invocation, and distro and
arch in a project’s .avr.toml choose one for a project
(.avr.toml).
The table below is generated from avar’s environment matrix, the one list the
resolver checks every --distro, --arch and .avr.toml against. A test
fails when this page and that list disagree.
| Distribution | Release | Selected with | Architectures |
|---|---|---|---|
| Ubuntu | 24.04 (default) | --distro ubuntu or --distro ubuntu:24.04 |
arm64, amd64 |
| Debian | 13 (default) | --distro debian or --distro debian:13 |
arm64, amd64 |
| Fedora | 43 (default) | --distro fedora or --distro fedora:43 |
arm64, amd64 |
With no distribution chosen anywhere, avar uses ubuntu:24.04.
With no architecture chosen anywhere, avar uses the host’s own.
A distribution named without a version gets its default release, so the two spellings in each row name the same environment. Anything outside the table is refused before any work starts, with exit status 2 and the supported values listed.
Every environment in the table is available, on both architectures. The backend is Lima, and each environment is a virtual machine booted from a cloud image pinned to a dated publisher URL and checked against the publisher’s digest.
Snapshots are the one feature that differs between the two: Lima can snapshot only an emulated machine. See Troubleshooting.
Every distribution and release in the table is available, on the Windows
machine’s own architecture only. The backend is WSL 2, which runs Linux on
the host’s processor and has no CPU emulation, so --arch for the other
architecture is refused before anything is downloaded.
Each environment is a WSL distribution that avar installs from WSL’s own
distribution registry, under a name and in a directory avar owns. WSL’s
registry names Debian by track rather than by release, so after installing,
avar reads the new distribution’s /etc/os-release and refuses the
environment if it is not the release the table promises.
Each distinct environment gets its own machine (a virtual machine on macOS, a
distribution on Windows), and every project shares it unless you ask for
isolation. avr and avr --distro fedora in the same directory are two
environments over the same project files.
avr --isolate, or avr isolate on, gives a project environments of its own.
avar remembers that choice for the project, and avr isolate off returns it
to the shared ones.