Pin an exact Roc compiler for release builds
@thebrandonlucas is already working on this.
Since Jul 27, 2026.
- Dominant language
- Rust
- Stars
- 121
- Forks
- 45
- Avg merge
- 18h 43m
- Merged PRs (30d)
- 10
Description
Context
Rust is pinned in rust-toolchain.toml and Zig is pinned to 0.16.0, but release builds install the moving nightly-new-compiler alias:
.github/workflows/release.yml:76-80.github/workflows/release.yml:188-192.github/workflows/release.yml:232-236.github/workflows/release.yml:341-345
CI and Pages deployment do the same. Two runs for the same source commit and requested release version can therefore use different Roc compiler builds. This matters especially because the Rust glue is generated from compiler ABI definitions.
Suggested direction
Record one exact Roc nightly/compiler identifier in the repository and have CI, release builds, bundle tests, glue regeneration, and documentation generation consume it from a single source.
A deliberate compiler-update PR should:
- update the pinned compiler;
- regenerate/check ABI glue;
- run the full cross-target test matrix;
- make the compiler change visible in review.
The published release should record the compiler identifier in release metadata or provenance.
Acceptance criteria
- A release rerun for the same commit installs the same Roc compiler build.
- CI, release bundle construction, bundle testing, docs generation, and glue regeneration use the same pinned value.
- Updating the compiler is a reviewed repository change.
- Release metadata records the compiler identifier.
- Documentation explains how to update the pin.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.