Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
7738999
fix: keep generated cuTile locations inside their containing functions
Arthur031221 Oct 3, 2026
77816f6
fix(cutile): attribute generated entry setup to the user signature
elibol Oct 10, 2026
f39c959
cuda-core: safe element casts require AnyBitPattern; bool is DeviceCopy
elibol Oct 13, 2026
f468474
fix(cutile-compiler): attribute short-circuit boolean constants to ex…
GiGiKoneti Oct 16, 2026
afeb8b8
Use NVVM debug metadata merge behavior for native LTO
tpn Oct 20, 2026
b76010f
refactor(cutile): select debug or optimized device code as one Codege…
almightychang Oct 21, 2026
b461498
feat(cutile): add CUTILE_JIT_* run-time compile overrides
almightychang Oct 21, 2026
37c540e
Merge main into bool and element-cast safety fix
elibol Oct 21, 2026
f42ed4f
Fix atomic buffer representation and zeroed initialization safety
elibol Oct 21, 2026
787e241
Refresh remaining SIMT example locks for bytemuck
elibol Oct 21, 2026
228652d
Align DeviceCopy derive diagnostics with the validity contract
elibol Oct 21, 2026
2788c6c
fix: enforce Tile argument contracts and pinned host alignment
elibol Oct 21, 2026
98c023d
ci: validate interop stack against the v0.5.0 API boundary
elibol Oct 21, 2026
70f5676
refactor(cuda-core): share host handles and allocations across Tile a…
elibol Oct 21, 2026
f0f61e2
fix(cuda-core): complete context migration in Tile consumers
elibol Oct 21, 2026
8002432
docs: order shared host imports consistently
elibol Oct 21, 2026
80d9e7a
refactor: share the async host runtime across Tile and SIMT
elibol Oct 21, 2026
fcfe932
fix(cuda-async): bound the GEMM output scalar for shared launches
elibol Oct 21, 2026
a9f81c5
fix(cuda-macros): marshal async slice arguments through the shared la…
elibol Oct 21, 2026
ac90d9e
Preserve inline scopes in line-table debug info
tpn Oct 22, 2026
a450156
test: pin the locations of generated cuTile constants
Arthur031221 Oct 22, 2026
765cb1f
test(cutile): isolate CUTILE_JIT_* cases and compare modes across pro…
almightychang Oct 22, 2026
eec8776
fix(cuda-core): preserve shared read access on empty and peeled Devic…
nihalpasham Oct 22, 2026
c68eee0
fix(cuda-async,cuda-host): preserve concurrent read permissions on De…
nihalpasham Oct 22, 2026
9718b43
fix(cutile): retain source origins for generated code and host checks…
elibol Oct 22, 2026
08b9d85
fix(cutile): retain source origins for generated code and host checks…
elibol Oct 22, 2026
b8c263e
ci: validate pull requests targeting release branches
elibol Oct 22, 2026
8d24ed9
Merge remote-tracking branch 'fork/main' into fix/bool-device-copy-an…
elibol Oct 22, 2026
282eeb1
fix(cuda-core): count allocation views independently of leases
elibol Oct 22, 2026
bb0e891
fix(cutile): separate tensor aliases from completion leases
elibol Oct 22, 2026
f7fa559
Merge branch 'fix/bool-device-copy-anybitpattern-casts' into refactor…
elibol Oct 22, 2026
d52fbce
Merge branch 'refactor/shared-cuda-core' into refactor/shared-cuda-async
elibol Oct 22, 2026
edfe8d5
Merge branch 'refactor/shared-cuda-async' into release/v0.5.0-host-de…
elibol Oct 22, 2026
0143af5
chore: prepare shared host and Tile crates for v0.5.0 (#1614)
elibol Oct 22, 2026
19205d2
Merge v0.5.0 version baseline from main
elibol Oct 22, 2026
36f9072
Merge updated DeviceCopy prerequisite after version bump
elibol Oct 22, 2026
6d311cb
Merge updated shared core prerequisite after version bump
elibol Oct 22, 2026
1dc2e01
Merge current host stack with main version baseline
elibol Oct 22, 2026
927d462
Add the cute-rs preview: CuTe kernels in Rust for sm_100a and sm_120a…
nihalpasham Oct 23, 2026
93dd507
Merge current main and reconcile CuTe dependency lockfiles
elibol Oct 23, 2026
47042a8
Merge current main and migrate CuTe consumers to shared core
elibol Oct 23, 2026
52dccfe
Merge updated core prerequisite with CuTe integration
elibol Oct 23, 2026
c80633a
Refresh release integration with current host stack
elibol Oct 23, 2026
2f47ad0
chore(cute-rs): sync shared host crate versions to v0.5.0 in lockfile…
nihalpasham Oct 23, 2026
b811b70
fix(async): restore caller-managed async_on lifetimes
elibol Oct 23, 2026
038c82d
Integrate restored async_on lifetimes for v0.5.0
elibol Oct 23, 2026
e6c0179
cuda-oxide: move SIMT toolchain pin to stable 1.99.1 (#1609)
nihalpasham Oct 23, 2026
9e75d77
chore(cuda-oxide): update flake.lock for 1.99.1, scaffold config, and…
nihalpasham Oct 23, 2026
ad0a42c
docs(cuda-oxide): update remaining nightly references and doctor chec…
nihalpasham Oct 23, 2026
fc74719
fix: bump example tokio pins past RUSTSEC-2026-0386 (#1619)
roivanov Oct 23, 2026
9df9e7c
docs(book): soften dark-mode SVG fill colors across cute and compiler…
nihalpasham Oct 25, 2026
2794a67
test(cutile): validate generated constant origins against current main
elibol Oct 26, 2026
899e14b
test(cutile): verify wrapper provenance in optimized and full debug m…
elibol Oct 26, 2026
a844d56
docs(cutile): document v0.5 debug-mode migration and validate current…
elibol Oct 26, 2026
bec608b
test(oxide): validate inline source scopes against current main
elibol Oct 26, 2026
64f0ebf
fix(cutile): retain const-bool binding scopes and test constant prove…
elibol Oct 26, 2026
a28eee3
test(oxide): validate NVVM debug metadata with current main
elibol Oct 26, 2026
62c51d1
Integrate current main and generated-constant debug origins for v0.5.0
elibol Oct 26, 2026
e92ac28
Integrate entry-wrapper and assumption source locations for v0.5.0
elibol Oct 26, 2026
7cefbb1
Integrate constant-expression and boolean-binding debug origins for v…
elibol Oct 26, 2026
33e5b5f
Integrate consistent debug modes and JIT environment overrides for v0…
elibol Oct 26, 2026
7e5fc19
Integrate NVVM debug metadata compatibility for v0.5.0
elibol Oct 26, 2026
86983db
Integrate SIMT inline scopes in line-info builds for v0.5.0
elibol Oct 26, 2026
29b9716
Keep both assembler regressions in the combined release test runner
elibol Oct 26, 2026
933e221
test(cutile): isolate known tileiras 13.4.92 debug loss
elibol Oct 26, 2026
7336cac
Integrate the scoped tileiras 13.4.92 debug-test handling
elibol Oct 26, 2026
b25b4fe
test(cutile): recognize the CI assembler debug limitation
elibol Oct 27, 2026
a8d9182
Integrate verified CI assembler handling from PR 1385
elibol Oct 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .github/workflows/book.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ on:
# only ever built after merge, so a PR that broke it could not be caught by
# review or by CI.
pull_request:
branches: [main]
# Include release PRs and stacks targeting prerequisite copy-pr-bot mirrors.
branches: [main, "release/v*", "pull-request/[0-9]+"]
paths:
- 'cuda-oxide/cuda-oxide-book/**'
- 'cutile-rs/cutile-book/**'
Expand Down
5 changes: 4 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,20 @@ on:
- 'cuda-bindings/**'
- 'cuda-core/**'
- 'cuda-core-derive/**'
- 'cuda-repr/**'
- 'cuda-async/**'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/**'
pull_request:
branches: [main]
# Include release PRs and stacks targeting prerequisite copy-pr-bot mirrors.
branches: [main, "release/v*", "pull-request/[0-9]+"]
paths:
- 'cuda-oxide/**'
- 'cuda-bindings/**'
- 'cuda-core/**'
- 'cuda-core-derive/**'
- 'cuda-repr/**'
- 'cuda-async/**'
- 'Cargo.toml'
- 'Cargo.lock'
Expand Down
34 changes: 21 additions & 13 deletions .github/workflows/clippy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ jobs:
uses: actions/checkout@v4

- name: Install CUDA toolkit
uses: Jimver/cuda-toolkit@3d45d157f327c09c04b50ee6ccdea2d9d017ec76 # v0.2.35
uses: Jimver/cuda-toolkit@0ca15bb027fc96f7f61ddbb9c5221d699da06bdb # v0.2.36
id: cuda-toolkit
with:
cuda: "13.1.1"
cuda: "13.3.1"
method: network
sub-packages: '["nvcc", "cudart-dev"]'
non-cuda-sub-packages: '["libcurand-dev"]'
Expand All @@ -37,7 +37,7 @@ jobs:
working-directory: cuda-oxide
run: cargo clippy --workspace --all-targets -- -D warnings

# `rustc-codegen-cuda` and each example under examples/ are their own
# `rustc-codegen-cuda`, the standard and CuTe examples, and CuTe models have
# standalone workspaces (the codegen backend is swapped in via
# RUSTFLAGS, so they can't live in the root [workspace]). That's 60+
# cargo invocations from different workspace roots. By default each
Expand All @@ -49,7 +49,7 @@ jobs:
# Point all of those invocations at one shared CARGO_TARGET_DIR under
# ${RUNNER_TEMP}. Cargo fingerprints each unit by package + features
# + workspace_root + toolchain, so co-located workspaces using the
# same pinned nightly deduplicate on identical deps and compile each
# same pinned toolchain deduplicate on identical deps and compile each
# one once. This is intentionally scoped *not* to cover the
# `cargo clippy --workspace` step above, which already has a
# well-defined `target/` under cuda-oxide.
Expand All @@ -60,18 +60,26 @@ jobs:
working-directory: cuda-oxide/crates/rustc-codegen-cuda
run: cargo clippy --all-targets -- -D warnings

- name: Run clippy (rustc-codegen-cuda examples)
- name: Run clippy (standard and CuTe examples and models)
env:
CUDA_TOOLKIT_PATH: ${{ steps.cuda-toolkit.outputs.CUDA_PATH }}
CARGO_TARGET_DIR: ${{ runner.temp }}/clippy-shared-target
RUSTC_BOOTSTRAP: "1"
run: |
set -e
for ex in cuda-oxide/crates/rustc-codegen-cuda/examples/*/; do
if [ ! -f "$ex/Cargo.toml" ]; then continue; fi
name=$(basename "$ex")
echo "::group::clippy: $name"
(cd "$ex" && cargo clippy --all-targets -- -D warnings)
echo "::endgroup::"
example_roots=(
cuda-oxide/crates/rustc-codegen-cuda/examples
cuda-oxide/cute-rs-preview/examples
cuda-oxide/cute-rs-preview/models
)
for example_root in "${example_roots[@]}"; do
for ex in "$example_root"/*/; do
if [ ! -f "$ex/Cargo.toml" ]; then continue; fi
name=$(basename "$ex")
echo "::group::clippy: $name"
(cd "$ex" && cargo clippy --all-targets -- -D warnings)
echo "::endgroup::"
done
done

# The loop above is one level deep. A few examples nest a second
Expand All @@ -97,11 +105,11 @@ jobs:
grep -q "\"${sub}\""; then
continue
fi
echo "::group::clippy: ${dir#cuda-oxide/crates/rustc-codegen-cuda/examples/}"
echo "::group::clippy: ${dir#cuda-oxide/}"
(cd "${dir}" && cargo clippy --locked --all-targets -- -D warnings)
echo "::endgroup::"
done < <(
find cuda-oxide/crates/rustc-codegen-cuda/examples -mindepth 3 -name Cargo.toml \
find "${example_roots[@]}" -mindepth 3 -name Cargo.toml \
-not -path '*/target/*' | sort
)

Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ on:
- '**/*.sh'
- '**/*.py'
pull_request:
branches: [main]
# Include release PRs and stacks targeting prerequisite copy-pr-bot mirrors.
branches: [main, "release/v*", "pull-request/[0-9]+"]
paths:
- '**/*.rs'
- '**/Cargo.toml'
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/cutile-rs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ jobs:
- 'cuda-bindings/**'
- 'cuda-core/**'
- 'cuda-core-derive/**'
- 'cuda-repr/**'
- 'cuda-async/**'
- 'Cargo.toml'
- 'Cargo.lock'
Expand Down Expand Up @@ -288,7 +289,7 @@ jobs:

- name: Native f16 DeviceCopy
working-directory: ${{ github.workspace }}
run: cargo test -p cuda-core --features f16 --test simt_device_copy_impls
run: cargo test -p cuda-core --features f16 --test device_copy_impls

- name: loom model check (interleavings + weak memory)
working-directory: ${{ github.workspace }}
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,20 @@ on:
- 'cuda-bindings/**'
- 'cuda-core/**'
- 'cuda-core-derive/**'
- 'cuda-repr/**'
- 'cuda-async/**'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/**'
pull_request:
branches: [main]
# Include release PRs and stacks targeting prerequisite copy-pr-bot mirrors.
branches: [main, "release/v*", "pull-request/[0-9]+"]
paths:
- 'cuda-oxide/**'
- 'cuda-bindings/**'
- 'cuda-core/**'
- 'cuda-core-derive/**'
- 'cuda-repr/**'
- 'cuda-async/**'
- 'Cargo.toml'
- 'Cargo.lock'
Expand Down Expand Up @@ -50,10 +53,10 @@ jobs:
- name: Install CUDA toolkit
# `cargo doc --workspace` compiles cuda-bindings' build-time bindgen,
# which needs `cuda.h`. Same toolkit pin as the unit-tests job.
uses: Jimver/cuda-toolkit@3d45d157f327c09c04b50ee6ccdea2d9d017ec76 # v0.2.35
uses: Jimver/cuda-toolkit@0ca15bb027fc96f7f61ddbb9c5221d699da06bdb # v0.2.36
id: cuda-toolkit
with:
cuda: "13.1.1"
cuda: "13.3.1"
method: network
sub-packages: '["nvcc", "cudart-dev"]'
non-cuda-sub-packages: '["libcurand-dev"]'
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/examples-compile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,20 @@ on:
- 'cuda-bindings/**'
- 'cuda-core/**'
- 'cuda-core-derive/**'
- 'cuda-repr/**'
- 'cuda-async/**'
- 'Cargo.toml'
- 'Cargo.lock'
- '.github/workflows/**'
pull_request:
branches: [main]
# Include release PRs and stacks targeting prerequisite copy-pr-bot mirrors.
branches: [main, "release/v*", "pull-request/[0-9]+"]
paths:
- 'cuda-oxide/**'
- 'cuda-bindings/**'
- 'cuda-core/**'
- 'cuda-core-derive/**'
- 'cuda-repr/**'
- 'cuda-async/**'
- 'Cargo.toml'
- 'Cargo.lock'
Expand Down Expand Up @@ -61,10 +64,10 @@ jobs:
# Needed for cuda.h and curand.h: bindgen runs in the shared
# cuda-bindings build script. Same setup as unit-tests.yml / clippy.yml.
- name: Install CUDA toolkit
uses: Jimver/cuda-toolkit@3d45d157f327c09c04b50ee6ccdea2d9d017ec76 # v0.2.35
uses: Jimver/cuda-toolkit@0ca15bb027fc96f7f61ddbb9c5221d699da06bdb # v0.2.36
id: cuda-toolkit
with:
cuda: "13.1.1"
cuda: "13.3.1"
method: network
sub-packages: '["nvcc", "cudart-dev"]'
# nvJitLink is packaged separately from cuda-nvcc on Linux. Keep it
Expand Down
14 changes: 10 additions & 4 deletions .github/workflows/fmt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:

# rustfmt comes from cuda-oxide/rust-toolchain.toml's component list,
# like clippy,
# so `cargo fmt` resolves against the same nightly as the rest of CI.
# so `cargo fmt` resolves against the same toolchain as the rest of CI.

- name: Check stable host workspace formatting
run: cargo fmt --all -- --check
Expand All @@ -43,19 +43,25 @@ jobs:
run: cargo fmt --all -- --check
working-directory: cuda-oxide/crates/cuda-macros/tests/device-only

- name: Check example crate formatting
- name: Check example and model crate formatting
env:
RUSTC_BOOTSTRAP: "1"
run: |
set -euo pipefail
# `cargo fmt --all` also formats local path dependencies. Running it
# per example repeatedly reformats the large shared workspaces.
shopt -s globstar nullglob
manifests=(cuda-oxide/crates/rustc-codegen-cuda/examples/**/Cargo.toml)
manifests=(
cuda-oxide/crates/rustc-codegen-cuda/examples/**/Cargo.toml
cuda-oxide/cute-rs-preview/examples/**/Cargo.toml
cuda-oxide/cute-rs-preview/models/**/Cargo.toml
)
((${#manifests[@]} > 0))
for manifest in "${manifests[@]}"; do
example_dir="$(dirname "$manifest")"
echo "::group::cargo fmt --check ($example_dir)"
# Run inside the component so rustup discovers CUDA Oxide's
# directory-scoped nightly pin.
# directory-scoped toolchain pin.
(cd "$example_dir" && cargo fmt -- --check)
echo "::endgroup::"
done
3 changes: 2 additions & 1 deletion .github/workflows/naming-guard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ on:
- 'cuda-oxide/scripts/check-reserved-prefixes.sh'
- '.github/workflows/naming-guard.yml'
pull_request:
branches: [main]
# Include release PRs and stacks targeting prerequisite copy-pr-bot mirrors.
branches: [main, "release/v*", "pull-request/[0-9]+"]
paths:
- 'cuda-oxide/crates/**'
- 'cuda-oxide/scripts/check-reserved-prefixes.sh'
Expand Down
20 changes: 10 additions & 10 deletions .github/workflows/status-guard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ on:
push:
branches: [main]
pull_request:
branches: [main]
# Include release PRs and stacks targeting prerequisite copy-pr-bot mirrors.
branches: [main, "release/v*", "pull-request/[0-9]+"]

# Each commit on main gets its own group, so it starts at once. Any other ref
# still shares one group and cancels the older run.
Expand Down Expand Up @@ -60,13 +61,12 @@ jobs:
- name: Verify README lists every workspace member
run: bash cuda-oxide/scripts/check-crate-inventory.sh

# The pin is copied into places no build compares: the nested backend pin
# (rustup reads it for the backend's own [workspace], so a mismatch there
# is a load failure rather than a warning), the scaffold `cargo oxide new`
# writes into user projects, the devcontainer's preinstalled toolchain, the
# book's quoted [toolchain] blocks, and the dated rustup/cargo commands in
# the book and READMEs. #727 added rustfmt to both real files and left both
# book quotes behind.
# The pin is copied into places no build compares: the scaffold `cargo oxide
# new` writes into user projects, the devcontainer's preinstalled toolchain,
# the book's quoted [toolchain] blocks, the explicit rustup/cargo commands in
# the book and READMEs, and the `rust-overlay` input in `cuda-oxide/flake.lock`.
# #727 added rustfmt to both real files and left both book quotes behind;
# #1609 bumped the pin to 1.99.1 and left `flake.lock` behind.
toolchain-pin-parity:
name: toolchain pin parity
runs-on: ubuntu-latest
Expand Down Expand Up @@ -130,9 +130,9 @@ jobs:
- name: Clone repository
uses: actions/checkout@v4

# rustfmt comes from cuda-oxide/rust-toolchain.toml's component list through the
# rustfmt comes from cuda-oxide/rust-toolchain.toml's component list through the
# rustup proxy, as in fmt.yml, so the order checked is the pinned
# nightly's. No cargo, no CUDA toolkit, no network beyond the toolchain.
# toolchain's. No cargo, no CUDA toolkit, no network beyond the toolchain.
- name: Verify the book's Rust blocks use rustfmt's import order
run: bash cuda-oxide/scripts/check-book-import-order.sh

Expand Down
31 changes: 14 additions & 17 deletions .github/workflows/unit-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,18 @@ jobs:
- package: dialect-mir
- package: dialect-nvvm
- package: mir-importer
# CuTe types, semantic IR, and MLIR export need no CUDA toolkit.
# Facade macro tests also compile host metadata via cuda-host.
- package: cute-layout
- package: cute-rs
needs_cuda: true
- package: ctm-rs
needs_cuda: true
- package: ctm-rs
test_args: --all-targets --features host
needs_cuda: true
- package: dialect-cute
- package: cuda-oxide-mlir-export
# Includes a real llc -> ptxas spine-kernel validation.
- package: cuda-oxide-codegen
needs_cuda: true
Expand Down Expand Up @@ -102,29 +114,14 @@ jobs:

- name: Install CUDA toolkit
if: matrix.needs_cuda
uses: Jimver/cuda-toolkit@3d45d157f327c09c04b50ee6ccdea2d9d017ec76 # v0.2.35
uses: Jimver/cuda-toolkit@0ca15bb027fc96f7f61ddbb9c5221d699da06bdb # v0.2.36
id: cuda-toolkit
with:
cuda: "13.1.1"
cuda: "13.3.1"
method: network
sub-packages: '["nvcc", "cudart-dev"]'
non-cuda-sub-packages: '["libcurand-dev"]'

- name: Install LLVM 21 (llc/opt for the NVPTX backend)
if: matrix.package == 'cuda-oxide-codegen'
run: |
set -euo pipefail
source /etc/os-release
sudo install -d -m 0755 /etc/apt/keyrings
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key \
| sudo tee /etc/apt/keyrings/apt-llvm-org.asc >/dev/null
echo "deb [signed-by=/etc/apt/keyrings/apt-llvm-org.asc] https://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-21 main" \
| sudo tee /etc/apt/sources.list.d/llvm-21.list
sudo apt-get update
sudo apt-get install -y --no-install-recommends llvm-21
llc-21 --version | head -2
opt-21 --version | head -2

- name: Run crate unit tests
env:
CUDA_TOOLKIT_PATH: ${{ steps.cuda-toolkit.outputs.CUDA_PATH }}
Expand Down
15 changes: 10 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@ contribution guide. There is no root `Justfile`. The SIMT recipes live in
- `cuda-bindings/`, `cuda-core/`, `cuda-core-derive/`, and `cuda-async/` — shared
host crates in the root workspace. Both kernel stacks depend on these by path.
- `cuda-oxide/` — the SIMT model. Its `Cargo.toml` explicitly lists workspace
members under `crates/`; its `rust-toolchain.toml` pins the nightly needed for
`rustc_private`. The book is `cuda-oxide/cuda-oxide-book/`, and
members under `crates/`; its `rust-toolchain.toml` pins the stable release
(`1.99.1`) and `rustc-dev` / `llvm-tools` components needed for `rustc_private`
(unlocked via `RUSTC_BOOTSTRAP=1`). The book is `cuda-oxide/cuda-oxide-book/`, and
`cuda-oxide/intrinsics/` holds the intrinsic catalog and ABI ledger.
`cuda-oxide/crates/rustc-codegen-cuda/` declares its own workspace and inherits
the SIMT toolchain pin. Examples and test fixtures can also declare separate
Expand Down Expand Up @@ -84,15 +85,16 @@ nested workspaces.
## Toolchains

The root `rust-toolchain.toml` and `cutile-rs/rust-toolchain.toml` carry matching
stable pins. `cuda-oxide/rust-toolchain.toml` supplies the SIMT nightly, including
for its nested backend workspace. Do not float a pin to work around a failure.
stable pins. `cuda-oxide/rust-toolchain.toml` supplies the SIMT stable pin and
compiler components (`rustc-dev`, `llvm-tools`), including for its nested backend
workspace. Do not float a pin to work around a failure.
`cuda-oxide/scripts/check-toolchain-parity.sh` checks the SIMT pin against its
scaffold, development container, and documentation.

rustup normally resolves the toolchain from the working directory; an explicit
override can change that. `--manifest-path` does not change the working directory,
so pointing a root Cargo command at the SIMT manifest does not select the SIMT
nightly. Change directory first or select the required toolchain explicitly.
toolchain pin. Change directory first or select the required toolchain explicitly.

Nix environments live in `cuda-oxide/flake.nix` and `cutile-rs/flake.nix`.
Run `nix develop` from the relevant component.
Expand All @@ -105,6 +107,9 @@ Run `nix develop` from the relevant component.
notice plus `Apache-2.0`, in the form shown under "License Headers" in
`CONTRIBUTING.md`. Preserve existing and third-party notices.
`cuda-oxide/scripts/check-spdx-headers.sh` enforces the policy.
- **Create new branches from the user's fork of this repository.** Synchronize
the fork's `main` with upstream before branching. For stacked work, base the
next branch on the preceding feature branch in that same fork.
- **Never push to the canonical upstream repository, `NVIDIA/cuda-rust`.
Treat it as read-only.** Branch and push to a fork. Before pushing, run
`git remote -v` and confirm the push remote is a fork of the base, comparing
Expand Down
Loading
Loading