asdf-io
August 10, 2026 · View on GitHub
Io plugin for asdf version manager.
Install
asdf plugin-add io https://github.com/mracos/asdf-io.git
Use
Check asdf readme for instructions on how to install & manage versions of Io.
Eerie
For versions from 2019.05.22-alpha on, the eerie package manager is installed by default (older versions predate the eerie submodule). Opt out with WITHOUT_EERIE=1:
WITHOUT_EERIE=1 asdf install io $VERSION
Eerie's own build is broken on modern toolchains, so it is installed with a workaround: its docio documentation dependency is dropped (its Markdown addon no longer compiles against discount 3.x) and eerie is set up from the local submodule via io setup.io -dev. The core package manager is unaffected. See docs/adrs/0001-eerie-install.md.
Notes:
- Installing eerie fetches
kanoover the network and writes a single per-user~/.eerieshared across Io versions; if it already exists it is left untouched. - The step is best-effort: if eerie fails, the Io install still succeeds.
- After install, add
EERIEDIRand eerie'sbindirs to your shell (the setup output prints a snippet), and make sureiois on yourPATH.
Addons
By default it does not build with the addons either, but you can pass a WITH_IO_ADDONS env var to the install command, e.g.
WITH_IO_ADDONS=true asdf install io $VERSION
:warning: for versions after (2019.05.22-alpha) the addons are now eerie packages, so the flag above will not work
please see IoLanguage/io#400 for more information
Keeping in mind that you'll need the following packages if building with the addons
Development
Tested with bats at three levels:
test/unit— the pure helpers inlib/*.bash.test/regression— the realbin/installrun end to end withgit/cmake/make/iostubbed (offline, no toolchain).test/integration— a realmise install io@<version>; skipped unlessASDF_IO_RUN_INTEGRATION=1.
npm install # bats + shellcheck
npm test # unit + regression (fast, offline)
npm run lint # shellcheck
npm run test:integration # real builds; needs mise + a network
The install passes -DCMAKE_POLICY_VERSION_MINIMUM=3.5 so it configures under CMake 4, which otherwise rejects Io's cmake_minimum_required(2.8). No pinned cmake needed.