Skip to content

Pin an exact Roc compiler for release builds #444

Description

@lukewilliamboswell

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.

Metadata

Metadata

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions