From 949fed6ce6af0c21596eba07e0309e15b3399e9f Mon Sep 17 00:00:00 2001 From: Ron Thompson Date: Wed, 17 Jun 2026 23:58:47 +0000 Subject: [PATCH 1/4] feat: update to Rust 1.96 --- .github/actions/setup-mkosi-environment/action.yml | 2 +- .github/workflows/build-boot-artifacts.yml | 2 +- Makefile.toml | 2 +- crates/bmc-proxy/src/setup.rs | 1 - .../Dockerfile.build-artifacts-container-aarch64 | 2 +- .../Dockerfile.build-artifacts-container-cross-aarch64 | 2 +- dev/docker/Dockerfile.build-artifacts-container-x86_64 | 2 +- dev/docker/Dockerfile.build-container-aarch64 | 2 +- dev/docker/Dockerfile.build-container-x86_64 | 4 ++-- dev/docker/Dockerfile.cargo-docker-minimal | 2 +- docs/manuals/cargo-via-docker-macos.md | 10 +++++----- lints/carbide-lints/rust-toolchain.toml | 2 +- rust-toolchain.toml | 4 ++-- 13 files changed, 18 insertions(+), 19 deletions(-) diff --git a/.github/actions/setup-mkosi-environment/action.yml b/.github/actions/setup-mkosi-environment/action.yml index 89f878fbb3..fc78edc0eb 100644 --- a/.github/actions/setup-mkosi-environment/action.yml +++ b/.github/actions/setup-mkosi-environment/action.yml @@ -4,7 +4,7 @@ inputs: rust-version: description: 'Rust toolchain version to install' required: false - default: '1.90.0' + default: '1.96.0' arch: description: 'Target architecture (x86_64 or aarch64)' required: false diff --git a/.github/workflows/build-boot-artifacts.yml b/.github/workflows/build-boot-artifacts.yml index a730038ab6..44241f50f3 100644 --- a/.github/workflows/build-boot-artifacts.yml +++ b/.github/workflows/build-boot-artifacts.yml @@ -140,7 +140,7 @@ jobs: if: inputs.build_type == 'ephemeral' uses: ./.github/actions/setup-mkosi-environment with: - rust-version: '1.90.0' + rust-version: '1.96.0' arch: ${{ inputs.arch }} # Setup Docker for container-based builds diff --git a/Makefile.toml b/Makefile.toml index fe5ba2f7d1..b2b3aca3f1 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -46,7 +46,7 @@ BUILD_CONTAINER_AARCH64_URL = { value = "urm.nvidia.com/swngc-ngcc-docker-local/ # # Make sure to update the RUST_NIGHTLY variable in # dev/docker/Dockerfile.build-container-x86_64 if you change this. -RUST_NIGHTLY = "nightly-2026-05-27" +RUST_NIGHTLY = "nightly-2026-06-16" [tasks.book] workspace = false diff --git a/crates/bmc-proxy/src/setup.rs b/crates/bmc-proxy/src/setup.rs index b9c9ff6d89..58da4de2b6 100644 --- a/crates/bmc-proxy/src/setup.rs +++ b/crates/bmc-proxy/src/setup.rs @@ -89,7 +89,6 @@ pub fn dep_log_filter(env_filter: EnvFilter) -> EnvFilter { #[cfg(test)] mod tests { use carbide_test_support::value_scenarios; - use tracing_subscriber::prelude::*; use super::*; diff --git a/dev/docker/Dockerfile.build-artifacts-container-aarch64 b/dev/docker/Dockerfile.build-artifacts-container-aarch64 index c2084a6219..3484830020 100644 --- a/dev/docker/Dockerfile.build-artifacts-container-aarch64 +++ b/dev/docker/Dockerfile.build-artifacts-container-aarch64 @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -FROM arm64v8/rust:1.95.0-slim-bullseye +FROM arm64v8/rust:1.96.0-slim-bullseye # Set in gitlab-templates/scripts/build-push-container-image.sh ARG CI_COMMIT_SHORT_SHA diff --git a/dev/docker/Dockerfile.build-artifacts-container-cross-aarch64 b/dev/docker/Dockerfile.build-artifacts-container-cross-aarch64 index c833b9cb6f..a0bb4334a4 100644 --- a/dev/docker/Dockerfile.build-artifacts-container-cross-aarch64 +++ b/dev/docker/Dockerfile.build-artifacts-container-cross-aarch64 @@ -16,7 +16,7 @@ # Note that the output container image needs to be able to produce artifacts # that are compatible with the DPU BFB, so for example the libc6 version can't # be greater than what we see in the BFB. -FROM rust:1.95.0-bookworm +FROM rust:1.96.0-bookworm RUN dpkg --add-architecture arm64 && \ apt-get update && \ diff --git a/dev/docker/Dockerfile.build-artifacts-container-x86_64 b/dev/docker/Dockerfile.build-artifacts-container-x86_64 index 235e8088ac..4a6bf9fece 100644 --- a/dev/docker/Dockerfile.build-artifacts-container-x86_64 +++ b/dev/docker/Dockerfile.build-artifacts-container-x86_64 @@ -26,7 +26,7 @@ # - `docker push urm.nvidia.com/swngc-ngcc-docker-local/forge/carbide/x86-64/build-container:{OUTPUT_OF_GIT_DESCRIBE_HERE}` # This should match rust-toolchain.toml -FROM rust:1.95.0-slim-bullseye +FROM rust:1.96.0-slim-bullseye # Set in gitlab-templates/scripts/build-push-container-image.sh ARG CI_COMMIT_SHORT_SHA diff --git a/dev/docker/Dockerfile.build-container-aarch64 b/dev/docker/Dockerfile.build-container-aarch64 index e66eec612a..311f26cd7b 100644 --- a/dev/docker/Dockerfile.build-container-aarch64 +++ b/dev/docker/Dockerfile.build-container-aarch64 @@ -14,7 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # -FROM arm64v8/rust:1.95.0-slim-bookworm +FROM arm64v8/rust:1.96.0-slim-bookworm # Set in gitlab-templates/scripts/build-push-container-image.sh ARG CI_COMMIT_SHORT_SHA diff --git a/dev/docker/Dockerfile.build-container-x86_64 b/dev/docker/Dockerfile.build-container-x86_64 index 5b8b0f2829..3b3eca76e8 100644 --- a/dev/docker/Dockerfile.build-container-x86_64 +++ b/dev/docker/Dockerfile.build-container-x86_64 @@ -16,12 +16,12 @@ # # This should match rust-toolchain.toml -FROM rust:1.95.0-slim-bookworm +FROM rust:1.96.0-slim-bookworm # Set in gitlab-templates/scripts/build-push-container-image.sh ARG CI_COMMIT_SHORT_SHA ENV CI_COMMIT_SHORT_SHA $CI_COMMIT_SHORT_SHA -ENV RUST_NIGHTLY nightly-2026-05-27 +ENV RUST_NIGHTLY nightly-2026-06-16 # Change CACHEKEY to whatever so docker doesn't re-use the cache from before if you want apt to actually run. # diff --git a/dev/docker/Dockerfile.cargo-docker-minimal b/dev/docker/Dockerfile.cargo-docker-minimal index 5aba58180a..b429e87d9d 100644 --- a/dev/docker/Dockerfile.cargo-docker-minimal +++ b/dev/docker/Dockerfile.cargo-docker-minimal @@ -9,7 +9,7 @@ # On Apple Silicon (M1/M2/M3): do not set --platform=linux/amd64. Building on # arm64 produces a native image; use Colima with enough CPU/memory and virtiofs (see docs). # -FROM rust:1.95.0-slim-bookworm +FROM rust:1.96.0-slim-bookworm RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ diff --git a/docs/manuals/cargo-via-docker-macos.md b/docs/manuals/cargo-via-docker-macos.md index be6987a54e..207d08548d 100644 --- a/docs/manuals/cargo-via-docker-macos.md +++ b/docs/manuals/cargo-via-docker-macos.md @@ -8,13 +8,13 @@ This guide describes what is in place for running Cargo (build, test, check) via | Item | Location | Purpose | |------|----------|--------| -| **Makefile task: `cargo-docker-minimal`** | `Makefile.toml` | Run Cargo in the minimal image (`nico-build-minimal`: Rust 1.95 + protoc). **Recommended on Mac.** Requires `build-cargo-docker-image-minimal` once. | +| **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.). | All commands below are run from the **repository root** unless noted. @@ -173,7 +173,7 @@ If you get an error about the `loki` logging plugin, use: `docker-compose -f doc **2. Run IB partition tests:** -**Locally (Rust 1.95 + `DATABASE_URL`):** +**Locally (Rust 1.96 + `DATABASE_URL`):** ```bash export DATABASE_URL="postgres://nico_development:notforprod@localhost:5432/nico_development" @@ -248,7 +248,7 @@ Output binaries appear under `target/` in your repo as usual. **When to use:** Day-to-day builds and checks on macOS when you don’t need the full API test stack (PostgreSQL, TSS, etc.). -**What it uses:** The image `nico-build-minimal` (Rust 1.95 + `protoc`). You must build it once with `build-cargo-docker-image-minimal` (~2–5 min). The `nico-rpc` crate needs `protoc` and the Google well-known proto files (`libprotobuf-dev`), so the bare `rust:1.95.0-slim-bookworm` image is not enough for workspace builds. +**What it uses:** The image `nico-build-minimal` (Rust 1.96 + `protoc`). You must build it once with `build-cargo-docker-image-minimal` (~2–5 min). The `nico-rpc` crate needs `protoc` and the Google well-known proto files (`libprotobuf-dev`), so the bare `rust:1.96.0-slim-bookworm` image is not enough for workspace builds. ### Usage diff --git a/lints/carbide-lints/rust-toolchain.toml b/lints/carbide-lints/rust-toolchain.toml index bf2e07dd9c..5328955bb4 100644 --- a/lints/carbide-lints/rust-toolchain.toml +++ b/lints/carbide-lints/rust-toolchain.toml @@ -15,4 +15,4 @@ # limitations under the License. # [toolchain] -channel = "nightly-2026-05-27" +channel = "nightly-2026-06-16" diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 3f621355d3..60efabca5b 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -15,5 +15,5 @@ # limitations under the License. # [toolchain] -# If you change this grep for "FROM.*rust:1.95.0" and update those Dockerfiles -channel = "1.95.0" +# If you change this grep for "FROM.*rust:1.96.0" and update those Dockerfiles +channel = "1.96.0" From c3a44b1b421bc99326fa94900a00b1a132a8c517 Mon Sep 17 00:00:00 2001 From: Ron Thompson Date: Fri, 19 Jun 2026 17:09:14 +0000 Subject: [PATCH 2/4] fix: grab the two straggler Rust versions --- crates/dpf/dev/Dockerfile.carbide-dpf-api-harness-glibc2.34 | 2 +- dev/docker/Dockerfile.pxe-build-container | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/dpf/dev/Dockerfile.carbide-dpf-api-harness-glibc2.34 b/crates/dpf/dev/Dockerfile.carbide-dpf-api-harness-glibc2.34 index 361208ac4a..afcec3c427 100644 --- a/crates/dpf/dev/Dockerfile.carbide-dpf-api-harness-glibc2.34 +++ b/crates/dpf/dev/Dockerfile.carbide-dpf-api-harness-glibc2.34 @@ -30,7 +30,7 @@ RUN apt-get update && \ libssl-dev \ ca-certificates \ git \ - && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.95.0 \ + && curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.96.0 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* diff --git a/dev/docker/Dockerfile.pxe-build-container b/dev/docker/Dockerfile.pxe-build-container index 3791b94875..546329d63c 100644 --- a/dev/docker/Dockerfile.pxe-build-container +++ b/dev/docker/Dockerfile.pxe-build-container @@ -24,7 +24,7 @@ # FROM ubuntu:24.04 -ARG RUST_VERSION=1.95.0 +ARG RUST_VERSION=1.96.0 RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ From 1450282157b4788ec03c2297550a8760fa1c395a Mon Sep 17 00:00:00 2001 From: Ron Thompson Date: Fri, 19 Jun 2026 17:09:14 +0000 Subject: [PATCH 3/4] docs: fix stale doc references to older Rust versions --- Makefile.toml | 6 +++--- dev/docker/Dockerfile.cargo-docker-minimal | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile.toml b/Makefile.toml index b2b3aca3f1..1b4cd3e16e 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -203,7 +203,7 @@ echo "Image carbide-build-x86_64 built. Run: cargo make cargo-docker -- build -p [tasks.build-cargo-docker-image-minimal] category = "Build" -description = "Build minimal Cargo Docker image (Rust 1.90 + protoc). Quick (~2-5 min). Required once before cargo-docker-minimal for workspace builds (e.g. carbide-rpc)." +description = "Build minimal Cargo Docker image (Rust 1.96 + protoc). Quick (~2-5 min). Required once before cargo-docker-minimal for workspace builds (e.g. carbide-rpc)." workspace = false script = ''' set -e @@ -213,7 +213,7 @@ echo "Image carbide-build-minimal built. Run: cargo make cargo-docker-minimal -- [tasks.build-pxe-build-container] category = "Build" -description = "Build the PXE artifact build container image (Ubuntu 24.04 + Rust 1.90 + mkosi deps). Required once before pxe-docker-x86." +description = "Build the PXE artifact build container image (Ubuntu 24.04 + Rust 1.96 + mkosi deps). Required once before pxe-docker-x86." workspace = false script = ''' set -e @@ -301,7 +301,7 @@ fi [tasks.cargo-docker-minimal] category = "Build" -description = "Run Cargo in minimal Linux image (Rust 1.90 + protoc). Requires build-cargo-docker-image-minimal once (~2-5 min). For DB tests set DATABASE_URL (use host.docker.internal, not localhost). Runs as root and chowns /code afterward so target/ stays writable on macOS/Colima." +description = "Run Cargo in minimal Linux image (Rust 1.96 + protoc). Requires build-cargo-docker-image-minimal once (~2-5 min). For DB tests set DATABASE_URL (use host.docker.internal, not localhost). Runs as root and chowns /code afterward so target/ stays writable on macOS/Colima." workspace = false dependencies = ["check-cargo-home-set"] script = ''' diff --git a/dev/docker/Dockerfile.cargo-docker-minimal b/dev/docker/Dockerfile.cargo-docker-minimal index b429e87d9d..8d84fe63c3 100644 --- a/dev/docker/Dockerfile.cargo-docker-minimal +++ b/dev/docker/Dockerfile.cargo-docker-minimal @@ -4,7 +4,7 @@ # # Minimal image for running Cargo via Docker on macOS. # Adds protoc (carbide-rpc), libpq, and sccache for faster repeat builds. -# Matches rust-toolchain.toml (Rust 1.90). +# Matches rust-toolchain.toml (Rust 1.96). # # On Apple Silicon (M1/M2/M3): do not set --platform=linux/amd64. Building on # arm64 produces a native image; use Colima with enough CPU/memory and virtiofs (see docs). From e65d1d1e0b930ca9be586d846f77a7b5af854ffe Mon Sep 17 00:00:00 2001 From: Ron Thompson Date: Fri, 19 Jun 2026 17:35:51 +0000 Subject: [PATCH 4/4] revert: docs change --- docs/manuals/cargo-via-docker-macos.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/manuals/cargo-via-docker-macos.md b/docs/manuals/cargo-via-docker-macos.md index 207d08548d..be6987a54e 100644 --- a/docs/manuals/cargo-via-docker-macos.md +++ b/docs/manuals/cargo-via-docker-macos.md @@ -8,13 +8,13 @@ This guide describes what is in place for running Cargo (build, test, check) via | Item | Location | Purpose | |------|----------|--------| -| **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: `cargo-docker-minimal`** | `Makefile.toml` | Run Cargo in the minimal image (`nico-build-minimal`: Rust 1.95 + 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.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.). | +| **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.). | All commands below are run from the **repository root** unless noted. @@ -173,7 +173,7 @@ If you get an error about the `loki` logging plugin, use: `docker-compose -f doc **2. Run IB partition tests:** -**Locally (Rust 1.96 + `DATABASE_URL`):** +**Locally (Rust 1.95 + `DATABASE_URL`):** ```bash export DATABASE_URL="postgres://nico_development:notforprod@localhost:5432/nico_development" @@ -248,7 +248,7 @@ Output binaries appear under `target/` in your repo as usual. **When to use:** Day-to-day builds and checks on macOS when you don’t need the full API test stack (PostgreSQL, TSS, etc.). -**What it uses:** The image `nico-build-minimal` (Rust 1.96 + `protoc`). You must build it once with `build-cargo-docker-image-minimal` (~2–5 min). The `nico-rpc` crate needs `protoc` and the Google well-known proto files (`libprotobuf-dev`), so the bare `rust:1.96.0-slim-bookworm` image is not enough for workspace builds. +**What it uses:** The image `nico-build-minimal` (Rust 1.95 + `protoc`). You must build it once with `build-cargo-docker-image-minimal` (~2–5 min). The `nico-rpc` crate needs `protoc` and the Google well-known proto files (`libprotobuf-dev`), so the bare `rust:1.95.0-slim-bookworm` image is not enough for workspace builds. ### Usage