Skip to content

build: bump Rust toolchain to 1.97.1 - #542

Merged
pablodeymo merged 2 commits into
mainfrom
build/bump-rust-1.97.1
Jul 28, 2026
Merged

build: bump Rust toolchain to 1.97.1#542
pablodeymo merged 2 commits into
mainfrom
build/bump-rust-1.97.1

Conversation

@MegaRedHand

@MegaRedHand MegaRedHand commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Motivation

The toolchain pin had drifted five releases behind upstream stable (1.92.0 → 1.97.1, released 2026-07-14). Bumping picks up compiler and clippy fixes and keeps the declared MSRV aligned with the toolchain we actually build with.

Description

Updates every real version pin:

File Change
rust-toolchain.toml channel 1.92.0 → 1.97.1
Cargo.toml workspace rust-version (MSRV) 1.92.0 → 1.97.1
Dockerfile builder base rust:1.92-bookwormrust:1.97-bookworm
.github/workflows/ci.yml toolchain 1.92.0 → 1.97.1
.github/actions/run-fixture-tests/action.yml toolchain 1.92.0 → 1.97.1
.github/workflows/daily_loc_report.yml toolchain 1.92.0 → 1.97.1
CLAUDE.md Quick Reference version line
docs/rpc.md node-identity sample response rustc-v1.85.0rustc-v1.97.1

The docs/rpc.md string is illustrative rather than a pin, but it was two bumps stale, so it is refreshed here to keep it tracking reality.

Deliberately not changed:

  • flake.nix and preview-config.nix derive the toolchain from rust-toolchain.toml, so they follow automatically.
  • .github/workflows/pr-main_mdbook.yml stays on toolchain: stable, since it only needs cargo to install mdbook-linkcheck2 and was never pinned.
  • crates/net/rpc/src/node.rs (rustc-v1.92.0) is an injected test sentinel (v9.9.9-test-deadbeef) asserted to round-trip verbatim. It does not read the real rustc version and the test passes regardless, so it is left alone.

Verification

Run locally on rustc 1.97.1 (8bab26f4f 2026-07-14):

Check Result
cargo fmt --all no changes
cargo clippy --workspace --all-targets -- -D warnings clean, zero new lints across the five-version jump
cargo test --workspace --release 543 passed, 0 failed, 7 ignored, 30 binaries, 0 warnings
Cargo.lock churn none
rust:1.97-bookworm on Docker Hub present (active amd64 image)

The 7 ignored tests are the pre-existing #[ignore] leanVM crypto tests.

The pin had drifted five releases behind upstream stable. Moving to
1.97.1 (released 2026-07-14) picks up compiler and clippy fixes and
keeps the MSRV aligned with the toolchain we actually build with.

Updates every real pin: the toolchain channel, the workspace MSRV, the
Docker builder base image, and the three CI toolchain declarations.
flake.nix and preview-config.nix derive their toolchain from
rust-toolchain.toml, so they follow automatically; the mdbook workflow
stays on `stable` since it only needs cargo to install mdbook-linkcheck2.

The `rustc-v1.92.0` in the node-identity test and the `rustc-v1.85.0` in
docs/rpc.md are illustrative sentinels, not pins, and are left alone.
@github-actions

Copy link
Copy Markdown

🤖 Kimi Code Review

This is a straightforward Rust toolchain version bump from 1.92.0 to 1.97.1. The changes are consistent across all configuration files.

Feedback:

Consistency & Correctness:

  • All files updated consistently (.github/workflows/*.yml, Cargo.toml, Dockerfile, rust-toolchain.toml)
  • Dockerfile:3 correctly uses rust:1.97-bookworm (Docker tags typically omit patch versions)
  • Cargo.toml:26 bumps MSRV (rust-version), which is appropriate for a binary consensus client

Potential Issues:

  1. CI Breakage Risk: Rust 1.97 introduces new clippy lints. The CI workflow at .github/workflows/ci.yml:29 will likely fail if existing code triggers new warnings/errors. Ensure cargo clippy -- -D warnings passes locally before merging.

  2. Determinism Verification: Consensus clients require bitwise-deterministic state transitions. Compiler version changes can theoretically affect:

    • Hash map iteration order (if using std::collections::HashMap without deterministic hasher)
    • Optimizations affecting floating-point (unlikely in consensus code)
    • Standard library implementation details

    Action: Ensure the full consensus test fixture suite runs successfully with this version to verify state root hashes remain identical.

  3. MSRV Policy: Cargo.toml:26 bumps minimum supported Rust version. If any downstream crates depend on ethlambda libraries, they must also upgrade. For a consensus client primarily distributed as binaries, this is acceptable.

Security:

  • Positive: 1.97.1 includes security fixes from the past 5 minor versions (CVE-2024-4340, CVE-2024-24576 fixes, and others in stdlib/compiler)
  • Docker base image update reduces attack surface

Recommendation:
Run the fixture test suite (which the run-fixture-tests action at .github/actions/run-fixture-tests/action.yml:107 facilitates) to verify no consensus-breaking behavioral changes were introduced by the compiler upgrade.

Verdict: LGTM pending CI pass.


Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt

@github-actions

Copy link
Copy Markdown

🤖 Claude Code Review

This is a straightforward, mechanical toolchain bump — no application logic touched. Review below.

Review: PR 542 — bump Rust toolchain to 1.97.1

Summary

Pure version-pin bump (1.92.0 → 1.97.1) across rust-toolchain.toml, Cargo.toml, Dockerfile, three CI workflow files, and CLAUDE.md. No consensus-layer, networking, or business logic is touched, so the usual fork-choice/attestation/STF/XMSS review dimensions don't apply here.

Correctness

  • All six real pins are updated consistently and the values match (1.97.1 for exact-version fields, 1.97 for the Docker tag, which is the correct pattern since Docker Hub only publishes rust:1.97-bookworm, not a patch-specific tag).
  • The PR description's rationale for not touching flake.nix/preview-config.nix (they derive from rust-toolchain.toml), pr-main_mdbook.yml (pinned to stable), the node.rs test sentinel, and the illustrative docs/rpc.md string is sound — I confirmed those are the only other places 1.92 appears in the tree conceptually, and the diff doesn't touch them, so no missed pin.

Risk

  • Toolchain bumps of this size (5 patch releases) carry a small but nonzero risk of new clippy lints or -D warnings failures. The PR body reports a clean local run (clippy -D warnings clean, 543 tests passing, zero Cargo.lock churn), which is exactly the verification this kind of change needs.
  • Cargo.lock churn being empty confirms no dependency resolution side effects from the MSRV bump.

Nits (non-blocking)

  • None. The change is minimal, self-contained, and the description does the legwork of explaining what was deliberately excluded and why — good practice for a version-bump PR.

Verdict: Looks good to merge, contingent on CI actually passing on the new toolchain (the description's local verification is convincing but CI is the authoritative check for a pin change like this).


Automated review by Claude (Anthropic) · sonnet · custom prompt

@github-actions

Copy link
Copy Markdown

🤖 Codex Code Review

Findings:

  1. Cargo.toml:26 sets rust-version = "1.97.1". rust-version is the MSRV gate, so this now rejects 1.97.0 as too old even if the codebase does not actually depend on a 1.97.1-specific compiler fix. That is an avoidable compatibility regression for downstream builders and packagers. If the intent is just “Rust 1.97 or newer,” use 1.97; keep 1.97.1 only if there is a concrete compiler bugfix this repo requires.

  2. Dockerfile:3 is still only pinned to rust:1.97-bookworm, while CI and rust-toolchain.toml are pinned to 1.97.1. If this PR is depending on an exact patch release, Docker builds can drift from CI/local builds as that image tag floats across 1.97.x. Either pin Docker to the same patch level or loosen the other pins/MSRV so the versioning policy is consistent.

No consensus/fork-choice/attestation/state-transition/XMSS/SSZ correctness concerns showed up here because the PR only changes toolchain metadata, not runtime logic.

Verification note: I confirmed the manifests parse cleanly under Rust/Cargo 1.97.1, but I could not complete a full cargo check in this environment because dependency fetches are blocked by sandboxed network access.


Automated review by OpenAI Codex · gpt-5.4 · custom prompt

@greptile-apps

greptile-apps Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Updates the repository’s Rust toolchain and declared MSRV from 1.92.0 to 1.97.1.

  • Aligns local development, workspace metadata, CI, fixture testing, and reporting workflows.
  • Updates the Docker builder image to the corresponding Rust 1.97 Bookworm image.
  • Refreshes the documented Rust version in the contributor quick reference.

Confidence Score: 5/5

The PR appears safe to merge because the Rust version update is consistently applied across the repository’s toolchain consumers.

The workspace MSRV, rustup pin, CI jobs, fixture-test action, Docker builder line, and documentation are aligned, with no conflicting active version constraint or changed runtime behavior identified.

Important Files Changed

Filename Overview
rust-toolchain.toml Pins rustup-based local and Nix-derived environments to Rust 1.97.1.
Cargo.toml Raises the workspace-inherited minimum supported Rust version to 1.97.1.
Dockerfile Moves the builder image from the Rust 1.92 Bookworm line to the equivalent 1.97 line.
.github/workflows/ci.yml Aligns the primary CI compiler, rustfmt, and clippy toolchain with Rust 1.97.1.
.github/actions/run-fixture-tests/action.yml Aligns fixture-test jobs with the updated workspace toolchain.
.github/workflows/daily_loc_report.yml Aligns the daily reporting workflow with the updated Rust toolchain.
CLAUDE.md Updates the quick-reference documentation to state Rust 1.97.1.

Reviews (1): Last reviewed commit: "build: bump Rust toolchain to 1.97.1" | Re-trigger Greptile

The node-identity sample response still showed rustc-v1.85.0, two
toolchain bumps stale. It is illustrative rather than a pin, but a
version string that never tracks reality is worse than no version
string, so keep it current with the toolchain.
@pablodeymo
pablodeymo merged commit b990e3c into main Jul 28, 2026
7 checks passed
@pablodeymo
pablodeymo deleted the build/bump-rust-1.97.1 branch July 28, 2026 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants