roc-lang / roc-lang/basic-cli

Pin an exact Roc compiler for release builds

Open
#444 3 comments 0 reactions 1 assignee View on GitHub

@thebrandonlucas is already working on this.

Since Jul 27, 2026.

ci high priority
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:

  1. update the pinned compiler;
  2. regenerate/check ABI glue;
  3. run the full cross-target test matrix;
  4. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.