Releases: Rust-GPU/rust-gpu
v0.10.0-alpha.1
Toolchain: nightly-2026-04-11 (rustc 1.96.0)
Added ⭐
-
PR#493 add
spirv-unknown-naga-wgsltarget to transpile to wgsl with naga 29 -
PR#271 added new targets:
vulkan1.3,vulkan1.4,spv1.6 -
PR#177 added
NonUniformSPIR-V decoration for every image and buffer access whenNonUniformcapability is enabled -
PR#394 remove unsafe from safe SPIR-V intrinsic functions
-
PR#44 added mesh shaders with task shaders and per-primitive output attributes
-
entry point:
- PR#514 allowed zero-sized types in entry point input/output positions
- PR#509 added validation for incorrect
LocalInvocationIndextype, must beu32 - PR#16 added
TypedBuffer,
an explicit way to declare inputs and outputs as buffers, useful for arrays of buffer descriptors - PR#448 added arrayed specialization constants, allowing spec constants declared as fixed-size arrays occupying consecutive IDs
- PR#482 added explicit
#[spirv(location = N)]support, fixed overlapping location assignment for larger-thanVec4structs
-
subgroup intrinsics:
- PR#14 added subgroup intrinsics matching GLSL's
GL_KHR_shader_subgroup - PR#441 added
ScalarCompositetrait and derive macro, enabling composite types (scalars, vectors, arrays, structs, repr-int enums) in subgroup intrinsics
- PR#14 added subgroup intrinsics matching GLSL's
-
ray tracing:
-
spirv-builder- PR#477 removed the need for
crate-type = ["dylib"]in shader crateCargo.toml - PR#488 replaced
enum MetadataPrintoutwithstruct BuildScriptConfig; shader compilation warnings now properly forwarded to build output - PR#265 added
#[non_exhaustive]onSpirvBuilderand dependent structs; use builder patterns instead of direct construction - PR#13 allowed cargo features and default-features to be passed to the shader crate
- PR#422 redesigned the
spirv-builderwatch API: simplerWatcherreturningCompileResultdirectly fromrecv(), withtry_recv()for non-blocking polling - PR#223 added
SpirvBuilder::target_dir_pathto set the target directory explicitly - PR#188 added
RUSTGPU_CARGOFLAGSenvironment variable for passing extra cargo flags
- PR#477 removed the need for
-
cargo-gpu- added
cargo-gputo allow CPU code to be compiled by a stable toolchain - PR#131 added
cargo gpu clippyandcargo gpu checkfor linting/checking shader code - PR#109 added
--package/-pakin tocargo - PR#16 added
[package.metadata.rust-gpu]support inCargo.tomlfor declarative build configuration - PR#42 added
--watchflag for auto-recompilation on source changes - PR#71 refactored cargo-gpu from a binary into a library with a public API that's usable from build scripts
- PR#132 extracted install logic into a separate
cargo-gpu-installcrate, reducing dependency count by ~30 crates for library consumers
- added
Changed 🛠
-
Updated Rust nightly toolchain to
nightly-2026-04-11 -
PR#249 updated to Rust 2024 edition
-
PR#380
glamtypes have the same layout on GPU and CPU to prevent sutle UB bugs withVec3, requires at least glam0.30.8 -
PR#395 make many APIs explicitly use
glamtypes instead of generics -
ByteAddressableBuffer: -
image:
Fixed 🩹
-
PR#552 massive speedups for mem2reg linker step
-
PR#364 fixed
libmintrinsics for versions newer than0.2.11 -
PR#233 fixed array of array types
-
PR#167 fixed
debug_printfmacros not escaping{and}correctly -
codegen:
- PR#15 fixed signed
forloops - PR#213 fixed
leading_zeros,trailing_zerosandcount_onesintrinsics - PR#174 added support for signed integer
bswap - PR#363 allow
std::hint::black_boxto be a no-op on GPU - PR#518 replace
num_traits::Float::powiimplementation withGLSL.std.450 Powintrinsics - PR#200 fixed
log10intrinsic - PR#1129 fixed bit rotates being completely broken
- PR#227 fixed array init with
0i32incorrectly using0u32 - PR#224 fixed typo swapping logical operations on bools
- PR#302 optimize constant casts to avoid requiring
Int64capabilities
- PR#15 fixed signed
-
spirv-val:
-
ICE: