Open and answer this issue on GitHub.
tools, ready · opened 2026-10-08 · updated 2026-10-08 · 0 comments
ADR-336 decides which channels exist and when:
cargo install --git before 0.1 (#541);.nika file at once, published on GitHub’s registry and on Docker Hub (D3);.deb from 1.0 (D4).This issue carries D2 and D3.
nikaia_ prefix, with no exception (decided)ADR-286 D23 already makes a published Nikaia package x the crate nikaia_x. The tools add the prefix and remove it again (D24’s rename), so it is never written in a .nika file. The owner’s decision (2026-10-08) is that this holds for everything the project publishes, the same as for a user’s package:
nikaia-std is published as nikaia_nikaia_std;nikaia-logic is published as nikaia_nikaia_logic.crates.io does not tell - from _ (checked: serde-json resolves to serde_json). The compiler crate nikaia is not under the prefix. Two consequences:
orchestrator and tether being taken as bare names stops mattering.Today the compiler finds std in NIKAIA_SYSROOT, or else in the source tree it was built from (Part III 13.2b; crates/nikaia/src/sysroot.rs). The path is compiled into the binary. With cargo install --git (#541) that tree is Cargo’s checkout. Checked on 2026-10-08: install, then a hello world, both work.
Neither D2 nor D3 has such a tree:
~/.cargo/registry/src/…/name-version/ directory.The candidates are:
../lib/nikaia);NIKAIA_SYSROOT;nikaia_nikaia_std crate that Cargo unpacked beside the compiler’s.Each is tried against what cargo publish --dry-run packages and an unpacked archive actually leave on disk, and Part III 13.2b’s rule is written from what works.
nikaia_<name> (except the compiler crate nikaia), and the path dependencies between them follow. Test: cargo publish --dry-run for each crate passes and shows the prefixed name.winnow-grammar on crates.io, under the same rule: it is a git dependency today, which crates.io refuses. The workspace depends on the published version.cargo install --path from the packaged sources, and against an unpacked archive. Write 13.2b’s rule from the one that works in both (a specification change, so the version moves). Test: a hello world builds from each layout with NIKAIA_SYSROOT unset.cargo install nikaia as its first line.x86_64-linux, aarch64-linux), the archive with bin/nikaia and the sysroot, and its SHA-256, and attaches them to a GitHub release.nikaia, the Rust toolchain from rust-toolchain.toml and std compiled into the cache, pushed to GitHub’s container registry and then to Docker Hub. Test: docker run --rm -v $PWD:/work -w /work <image> nikaia run hello.nika prints the greeting and compiles only the program.