Skip to content

feat: update to Rust 1.96#2680

Open
rwthompsonii wants to merge 2 commits into
NVIDIA:mainfrom
rwthompsonii:rust-1.96
Open

feat: update to Rust 1.96#2680
rwthompsonii wants to merge 2 commits into
NVIDIA:mainfrom
rwthompsonii:rust-1.96

Conversation

@rwthompsonii

@rwthompsonii rwthompsonii commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Related issues

Type of Change

  • Add - New feature or capability
  • Change - Changes in existing functionality
  • Fix - Bug fixes
  • Remove - Removed features or deprecated functionality
  • Internal - Internal changes (refactoring, tests, docs, etc.)

Breaking Changes

  • This PR contains breaking changes

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No testing required (docs, internal refactor, etc.)

Additional Notes

@rwthompsonii rwthompsonii requested review from a team and Coco-Ben as code owners June 18, 2026 00:00
@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Walkthrough

The pull request advances the pinned stable Rust toolchain from 1.95.0 to 1.96.0 and the nightly from nightly-2026-05-27 to nightly-2026-06-16. Changes span rust-toolchain.toml, Makefile.toml, six Dockerfiles, two CI configuration files, the macOS Cargo-via-Docker manual, and removes one unused wildcard import in a test module.

Changes

Rust 1.96.0 Toolchain Bump

Layer / File(s) Summary
Authoritative toolchain version declarations
rust-toolchain.toml, lints/carbide-lints/rust-toolchain.toml, Makefile.toml
Stable channel updated to 1.96.0; nightly pin advanced to nightly-2026-06-16 in both the lints toolchain config and the RUST_NIGHTLY Makefile variable.
Docker base image updates
dev/docker/Dockerfile.build-container-x86_64, dev/docker/Dockerfile.build-container-aarch64, dev/docker/Dockerfile.build-artifacts-container-*, dev/docker/Dockerfile.cargo-docker-minimal
All six Dockerfiles updated from rust:1.95.0 to rust:1.96.0 base images; the x86_64 build container additionally advances its RUST_NIGHTLY environment variable.
CI action and workflow version inputs
.github/actions/setup-mkosi-environment/action.yml, .github/workflows/build-boot-artifacts.yml
Default and explicit rust-version inputs updated from 1.90.0 to 1.96.0 in the mkosi setup action and the boot-artifacts workflow respectively.
Documentation updates and unused import removal
docs/manuals/cargo-via-docker-macos.md, crates/bmc-proxy/src/setup.rs
Version labels in the macOS Docker Cargo guide updated from 1.95 to 1.96 at three locations; unused tracing_subscriber::prelude::* wildcard import removed from the bmc-proxy test module.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~4 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The pull request description is a template with no substantive content describing the Rust 1.96 upgrade changes. Complete the PR description template by specifying the change type, testing methodology, and any relevant migration notes or deployment considerations for the toolchain upgrade.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the primary objective: updating the project to Rust 1.96 across all configuration and build files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

Copy link
Copy Markdown

@rwthompsonii rwthompsonii enabled auto-merge (squash) June 18, 2026 00:02

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
dev/docker/Dockerfile.cargo-docker-minimal (1)

7-12: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Update stale toolchain comment to match the bumped base image.

Line 7 still says Rust 1.90, but Line 12 now uses rust:1.96.0-slim-bookworm. Please align the comment to prevent version-drift confusion.

Suggested patch
-# Matches rust-toolchain.toml (Rust 1.90).
+# Matches rust-toolchain.toml (Rust 1.96).

As per coding guidelines, **/Dockerfile*: "Review Dockerfiles for reproducible builds, minimal runtime surface, correct user/permissions, cache behavior, architecture support, and avoiding embedded secrets."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@dev/docker/Dockerfile.cargo-docker-minimal` around lines 7 - 12, The comment
at line 7 stating "Matches rust-toolchain.toml (Rust 1.90)" is outdated and does
not reflect the actual Rust version specified in the FROM instruction on line 12
which uses rust:1.96.0-slim-bookworm. Update the comment to change the version
reference from 1.90 to 1.96.0 to keep the documentation in sync with the actual
base image version being used.

Source: Coding guidelines

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/manuals/cargo-via-docker-macos.md`:
- Around line 11-17: In the "What's in place" table, the row containing "This
guide" references an incorrect file path
`docs/development/cargo-via-docker-macos.md`. Update this path to
`docs/manuals/cargo-via-docker-macos.md` to match the actual location of this
guide file, ensuring readers can navigate to the correct location.

---

Outside diff comments:
In `@dev/docker/Dockerfile.cargo-docker-minimal`:
- Around line 7-12: The comment at line 7 stating "Matches rust-toolchain.toml
(Rust 1.90)" is outdated and does not reflect the actual Rust version specified
in the FROM instruction on line 12 which uses rust:1.96.0-slim-bookworm. Update
the comment to change the version reference from 1.90 to 1.96.0 to keep the
documentation in sync with the actual base image version being used.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: b9948992-f617-45c8-b7bb-bc9f5b1b5911

📥 Commits

Reviewing files that changed from the base of the PR and between 6d36a43 and 949fed6.

📒 Files selected for processing (13)
  • .github/actions/setup-mkosi-environment/action.yml
  • .github/workflows/build-boot-artifacts.yml
  • Makefile.toml
  • crates/bmc-proxy/src/setup.rs
  • dev/docker/Dockerfile.build-artifacts-container-aarch64
  • dev/docker/Dockerfile.build-artifacts-container-cross-aarch64
  • dev/docker/Dockerfile.build-artifacts-container-x86_64
  • dev/docker/Dockerfile.build-container-aarch64
  • dev/docker/Dockerfile.build-container-x86_64
  • dev/docker/Dockerfile.cargo-docker-minimal
  • docs/manuals/cargo-via-docker-macos.md
  • lints/carbide-lints/rust-toolchain.toml
  • rust-toolchain.toml
💤 Files with no reviewable changes (1)
  • crates/bmc-proxy/src/setup.rs

Comment on lines +11 to +17
| **Makefile task: `cargo-docker-minimal`** | `Makefile.toml` | Run Cargo in the minimal image (`nico-build-minimal`: Rust 1.96 + protoc). **Recommended on Mac.** Requires `build-cargo-docker-image-minimal` once. |
| **Makefile task: `build-cargo-docker-image-minimal`** | `Makefile.toml` | Build the minimal image (Rust + protoc only). Quick (~2–5 min). Required once for workspace builds (e.g. `nico-rpc` needs `protoc`). |
| **Makefile task: `cargo-docker`** | `Makefile.toml` | Run Cargo inside the repo’s full build container (`nico-build-x86_64`). Requires building that image first. |
| **Makefile task: `build-cargo-docker-image`** | `Makefile.toml` | Build the full Linux build image from `dev/docker/Dockerfile.build-container-x86_64`. Slow on Apple Silicon (45+ min). |
| **This guide** | `docs/development/cargo-via-docker-macos.md` | How to use the above and when to choose which option. |
| **Minimal Dockerfile** | `dev/docker/Dockerfile.cargo-docker-minimal` | Rust 1.95 + `protobuf-compiler` + `libprotobuf-dev` (well-known types). Used for `nico-build-minimal`. |
| **Full build Dockerfile** | `dev/docker/Dockerfile.build-container-x86_64` | Defines the full build image (Rust 1.95, PostgreSQL, protobuf, TSS, etc.). |
| **Minimal Dockerfile** | `dev/docker/Dockerfile.cargo-docker-minimal` | Rust 1.96 + `protobuf-compiler` + `libprotobuf-dev` (well-known types). Used for `nico-build-minimal`. |
| **Full build Dockerfile** | `dev/docker/Dockerfile.build-container-x86_64` | Defines the full build image (Rust 1.96, PostgreSQL, protobuf, TSS, etc.). |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix the guide path in the “What’s in place” table.

Line 15 points to docs/development/cargo-via-docker-macos.md, but this guide is located at docs/manuals/cargo-via-docker-macos.md. This will mislead readers navigating by path.

Suggested patch
-| **This guide** | `docs/development/cargo-via-docker-macos.md` | How to use the above and when to choose which option. |
+| **This guide** | `docs/manuals/cargo-via-docker-macos.md` | How to use the above and when to choose which option. |

As per coding guidelines, **/*.md: "Review Markdown for correctness, clarity, spelling, grammar, working links, and whether commands/examples are realistic and safe."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
| **Makefile task: `cargo-docker-minimal`** | `Makefile.toml` | Run Cargo in the minimal image (`nico-build-minimal`: Rust 1.96 + protoc). **Recommended on Mac.** Requires `build-cargo-docker-image-minimal` once. |
| **Makefile task: `build-cargo-docker-image-minimal`** | `Makefile.toml` | Build the minimal image (Rust + protoc only). Quick (~2–5 min). Required once for workspace builds (e.g. `nico-rpc` needs `protoc`). |
| **Makefile task: `cargo-docker`** | `Makefile.toml` | Run Cargo inside the repo’s full build container (`nico-build-x86_64`). Requires building that image first. |
| **Makefile task: `build-cargo-docker-image`** | `Makefile.toml` | Build the full Linux build image from `dev/docker/Dockerfile.build-container-x86_64`. Slow on Apple Silicon (45+ min). |
| **This guide** | `docs/development/cargo-via-docker-macos.md` | How to use the above and when to choose which option. |
| **Minimal Dockerfile** | `dev/docker/Dockerfile.cargo-docker-minimal` | Rust 1.95 + `protobuf-compiler` + `libprotobuf-dev` (well-known types). Used for `nico-build-minimal`. |
| **Full build Dockerfile** | `dev/docker/Dockerfile.build-container-x86_64` | Defines the full build image (Rust 1.95, PostgreSQL, protobuf, TSS, etc.). |
| **Minimal Dockerfile** | `dev/docker/Dockerfile.cargo-docker-minimal` | Rust 1.96 + `protobuf-compiler` + `libprotobuf-dev` (well-known types). Used for `nico-build-minimal`. |
| **Full build Dockerfile** | `dev/docker/Dockerfile.build-container-x86_64` | Defines the full build image (Rust 1.96, PostgreSQL, protobuf, TSS, etc.). |
| **Makefile task: `cargo-docker-minimal`** | `Makefile.toml` | Run Cargo in the minimal image (`nico-build-minimal`: Rust 1.96 + protoc). **Recommended on Mac.** Requires `build-cargo-docker-image-minimal` once. |
| **Makefile task: `build-cargo-docker-image-minimal`** | `Makefile.toml` | Build the minimal image (Rust + protoc only). Quick (~2–5 min). Required once for workspace builds (e.g. `nico-rpc` needs `protoc`). |
| **Makefile task: `cargo-docker`** | `Makefile.toml` | Run Cargo inside the repo's full build container (`nico-build-x86_64`). Requires building that image first. |
| **Makefile task: `build-cargo-docker-image`** | `Makefile.toml` | Build the full Linux build image from `dev/docker/Dockerfile.build-container-x86_64`. Slow on Apple Silicon (45+ min). |
| **This guide** | `docs/manuals/cargo-via-docker-macos.md` | How to use the above and when to choose which option. |
| **Minimal Dockerfile** | `dev/docker/Dockerfile.cargo-docker-minimal` | Rust 1.96 + `protobuf-compiler` + `libprotobuf-dev` (well-known types). Used for `nico-build-minimal`. |
| **Full build Dockerfile** | `dev/docker/Dockerfile.build-container-x86_64` | Defines the full build image (Rust 1.96, PostgreSQL, protobuf, TSS, etc.). |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/manuals/cargo-via-docker-macos.md` around lines 11 - 17, In the "What's
in place" table, the row containing "This guide" references an incorrect file
path `docs/development/cargo-via-docker-macos.md`. Update this path to
`docs/manuals/cargo-via-docker-macos.md` to match the actual location of this
guide file, ensuring readers can navigate to the correct location.

Source: Coding guidelines

@github-actions

github-actions Bot commented Jun 18, 2026

Copy link
Copy Markdown

🔍 Container Scan Summary

Service Total Critical High Medium Low Other
boot-artifacts-aarch64 3 0 0 3 0 0
boot-artifacts-x86_64 3 0 0 3 0 0
forge-admin-cli-x86_64 245 5 22 103 6 109
machine-validation-runner 675 31 182 255 37 170
machine_validation 675 31 182 255 37 170
nvmetal-carbide 675 31 182 255 37 170
TOTAL 2276 98 568 874 117 619

Per-CVE detail lives in the per-service grype-* artifacts (JSON + SARIF). Severity counts only — no CVE IDs published here.

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