Repository navigation
cuda-oxide: move SIMT toolchain pin to stable 1.99.1 - #1609
Merged
nihalpasham merged 1 commit intoOct 23, 2026
Merged
Conversation
nihalpasham
requested review from
binarybana,
cryos,
elibol,
kkraus14,
roivanov and
rparolin
as code owners
October 22, 2026 16:48
Pin `cuda-oxide/rust-toolchain.toml` (and matching scaffold, devcontainer, and book/README copies) to official stable Rust `1.99.1` with `RUSTC_BOOTSTRAP=1` configured via `.cargo/config.toml`, `Justfile`, and `cargo-oxide`. `1.99.1` ships LLVM 23 (`23.1.1`) with an NVPTX backend and TableGen intrinsic definitions identical to `nightly-2026-10-11`, plus the `rustc-dev` (`librustc_driver.so` and `librustc_public.rlib`) component, removing daily nightly drift while preserving the full `rustc_public` and `rustc-codegen-cuda` pipeline. Signed-off-by: nihalpasham <nihalp@nvidia.com>
nihalpasham
force-pushed
the
feat/stabilize-toolchain-1.99.1
branch
from
October 23, 2026 04:39
6f2d0cc to
048739d
Compare
1 task done
nihalpasham
added a commit
that referenced
this pull request
Oct 23, 2026
… clean up docs (#1616) ## Summary Follow-up cleanup after moving `cuda-oxide` to stable Rust `1.99.1` (#1609) and landing `cute-rs-preview` (#1598): ```text 1. cuda-oxide/flake.lock + flake.nix -> bump rust-overlay for Stable 1.99.1 + set RUSTC_BOOTSTRAP=1 2. cargo oxide new (scaffold.rs) -> write .cargo/config.toml with RUSTC_BOOTSTRAP = "1" 3. check-toolchain-parity.sh -> verify flake.lock's rust-overlay rev has the pinned manifest 4. .github/workflows/unit-tests.yml -> drop unused apt llvm-21 install (sysroot llvm-tools provides LLVM 23) 5. CONTRIBUTING / AGENTS / README / book -> update remaining nightly wording + clean up book backticks & SVG ``` ### Changes - **Nix flake (`cuda-oxide/flake.lock`, `cuda-oxide/flake.nix`):** - Bump `oxalica/rust-overlay` from `c1cfa7a2c8` (`2026-10-11`, two days before `1.99.1` was published) to `5f267b7f32` (`2026-10-22`) so `nix develop` finds `Stable 1.99.1`. - Set `RUSTC_BOOTSTRAP = "1"` in `flake.nix` (`cargoOxideCommonArgs` and `devShells.default.shellHook`). - Use a deterministic per-user directory (`${XDG_RUNTIME_DIR:-/tmp}/cuda-oxide-nvidia-driver-$(id -u)`) for non-NixOS driver symlinks so `nix develop --command` does not leak `/tmp/nix-nvidia-driver.XXXXXX` directories. - **Project scaffold (`crates/cargo-oxide/src/commands/scaffold.rs`):** - Write `.cargo/config.toml` (`[env]\nRUSTC_BOOTSTRAP = "1"\n`) in `cargo oxide new` so plain `cargo check`, `cargo build`, and `rust-analyzer` work out of the box in standalone projects on stable `1.99.1`. - **Toolchain parity guard (`scripts/check-toolchain-parity.sh`):** - Verify via an HTTP `HEAD` check that the `oxalica/rust-overlay` revision locked in `cuda-oxide/flake.lock` actually contains `manifests/stable/<channel>.nix` (or `manifests/nightly/...`), and document the `nix flake update rust-overlay` step in `check-toolchain-parity.sh` and `compiler/rustc-public.md`. - **CI workflow (`.github/workflows/unit-tests.yml`, `.github/workflows/status-guard.yml`):** - Remove the redundant `Install LLVM 21` step on `cuda-oxide-codegen` (`LlvmToolchain::resolve` already selects the Rust sysroot's LLVM 23 `llc`/`opt` from `llvm-tools`). - Update the `status-guard.yml` comments to match the current single SIMT stable pin and `flake.lock` check. - **Contributor, agent, and book docs (`CONTRIBUTING.md`, `AGENTS.md`, `cuda-oxide/README.md`, `cuda-oxide-book/`):** - Replace remaining "nightly toolchain" wording in `CONTRIBUTING.md`, `AGENTS.md` (`CLAUDE.md`), `cuda-oxide/README.md`, `getting-started/installation.md`, and `getting-started/hello-gpu.md`. - Remove backticks from `# ` sidebar page titles, `## ` / `### ` section headings, and prose crate/tool names across the `cute/` chapter and `compiler/rustc-public.md`. - Scale bar widths in `models/qwen3_8b_cute/svg/03-rtx5090-benchmark-comparison.svg` so the right-hand throughput labels fit inside the panel with >=45px margin. ## Validation - `cargo test -p cargo-oxide scaffold` - `bash cuda-oxide/scripts/check-toolchain-parity.sh` - `just fmt-check` - `just check-guards` - `just book` (Sphinx HTML build with `-W`) ## Checklist - [x] All commits signed off (`git commit -s`) Signed-off-by: nihalpasham <nihalp@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Move
cuda-oxidefrom a pinned dailynightlytoolchain (nightly-2026-10-11) to official stable Rust1.99.1, unifying the entire monorepo (cuda-core,cutile-rs, andcuda-oxide) on stable Rust releases:Before vs. After
nightlypin):cuda-oxidepinned a moving dailynightlysnapshot while the root host workspace andcutile-rsused stable Rust. Any mid-cycle nightly bump (such as pulling in an upstreamrustc_publicaddition) forced an unscheduled compiler upgrade with unrelated daily churn across 1,500+ files.1.99.1pin):cuda-oxidepins official stable Rust1.99.1, which has already completed Rust's 12-week nightly and beta stabilization cycle and ships LLVM 23 (23.1.1) with an NVPTX backend and TableGen intrinsic definitions identical tonightly-2026-10-11.Why This Works on Official Stable Rust
rustcand Nightlyrustcare the same binary: Official stablerustcbuilds do not strip out-Zflags (-Z codegen-backend=...,-Z mir-enable-passes=-JumpThreading,-Z always-encode-mir) or#![feature(rustc_private)]. They gate them behindRUSTC_BOOTSTRAP=1(the environment variablerustcuses when bootstrappingcoreandstdon stable).rustupshipsrustc-devandrustc_publicon stable releases: Runningrustup component add rustc-devon stable1.99.1provideslibrustc_driver.so,librustc_public.rlib, andlibrustc_public_bridge.rlibout of the box.rustc_codegen_utcand Ferrocene (building aCodegenBackendagainst a vetted stable Rust release tag rather than tracking daily nightlies).Upstreaming to
rustc_publicon the Stable CycleBecause
rustc_publiconly wraps data that already exists insiderustc_middleandrustc_abi,crates/mir-importer/src/translator/facts.rsacts as our quarantine boundary when we upstream newrustc_publicqueries (such asrust-lang/rust#163242):rustc_middle/rustc_targetfield infacts.rsviarustc_internal::internal(tcx, ...), while upstreaming therustc_publicgetter in parallel.facts.rsto the upstreamedrustc_publicmethod call.Changes in This PR
1.99.1across all SIMT toolchain surfaces:cuda-oxide/rust-toolchain.toml,cargo oxide new(scaffold.rs),.devcontainer/devcontainer.json,intrinsics/upstream.lock, and the book/README install commands.RUSTC_BOOTSTRAP=1automatically: Set incuda-oxide/.cargo/config.toml,cuda-oxide/Justfile,cargo-oxide(backend.rs,codegen_env.rs,fmt.rs,host_cargo.rs), and the example CI loops so-Zcompiler flags,#![feature(rustc_private)],#![feature(f16)], andcargo-features = ["profile-rustflags"]work transparently on stable1.99.1.1.99.1compiler APIs (~12 lines):cuda-host: Usecore::intrinsics::type_id::<T>()intype_id_u128.mir-importer: Querytcx.fn_abi_of_instanceinsidefacts.rs(reference_param_validity) for typedArgAttributes(NoAlias,NoFree,pointee_size), and matchValueAbi::Scalarintypes.rs.rustc-codegen-cuda: Match1.99.1'sCodegenBackend(init,target_config,CompiledModule),ShimKind::FnPtrAddr, andlayout.peel_transparent_wrappers.cuda-oxide-book: Add the toolchain stabilization,facts.rsupstreaming workflow, and standalone bundle sections with four SVG diagrams undercuda-oxide-book/compiler/images/.Validation
just check&just book:fmt-check,clippy(workspace + backend + all 258 example/model manifests),test,test-cuda,check-guards,check-intrinsics(all 1,042 routes / 2,427 target probes onLLVM version 23.1.1-rust-1.99.1-stable),doc-check, and Sphinx HTML book build (-W) all pass.scripts/smoketest.shon RTX 5090): 240 / 240 pass.cute-rs-previewexamples and models: 16 / 16 pass (all 12sm_120aworkloads execute and pass on RTX 5090; all 4sm_100aworkloads compile to validated direct-ABI cubins via CUTLASS 4.7).Checklist
git commit -s)