Skip to content

Commit 2ac0035

Browse files
committed
chore: releae v0.10.0-alpha.1
1 parent 9bc23d9 commit 2ac0035

File tree

3 files changed

+103
-34
lines changed

3 files changed

+103
-34
lines changed

CHANGELOG.md

Lines changed: 87 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,103 @@
1-
# `rust-gpu` Changelog
1+
# Changelog
22

33
All notable changes to this project will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## [Unreleased]
9+
## [0.10.0-alpha.1](https://github.com/Rust-GPU/rust-gpu/compare/v0.9.0...v0.10.0-alpha.1) - 2026-04-13
10+
11+
Toolchain: `nightly-2026-04-11` (rustc 1.96.0)
12+
13+
### Added ⭐
14+
15+
- [PR#271](https://github.com/Rust-GPU/rust-gpu/pull/271) added new targets: `vulkan1.3`, `vulkan1.4`, `spv1.6`
16+
- [PR#177](https://github.com/Rust-GPU/rust-gpu/pull/177) added `NonUniform` SPIR-V decoration for every image and buffer access when `NonUniform` capability is enabled
17+
- [PR#394](https://github.com/Rust-GPU/rust-gpu/pull/394) remove unsafe from safe SPIR-V intrinsic functions
18+
- [PR#44](https://github.com/Rust-GPU/rust-gpu/pull/44) added [mesh shaders](https://www.khronos.org/blog/mesh-shading-for-vulkan) with task shaders and per-primitive output attributes
19+
20+
- entry point:
21+
- [PR#514](https://github.com/Rust-GPU/rust-gpu/pull/514) allowed zero-sized types in entry point input/output positions
22+
- [PR#509](https://github.com/Rust-GPU/rust-gpu/pull/509) added validation for incorrect `LocalInvocationIndex` type, must be `u32`
23+
- [PR#16](https://github.com/Rust-GPU/rust-gpu/pull/16) added
24+
[`TypedBuffer`](https://rust-gpu.github.io/rust-gpu/api/spirv_std/struct.TypedBuffer.html),
25+
an explicit way to declare inputs and outputs as buffers, useful for arrays of buffer descriptors
26+
- [PR#448](https://github.com/Rust-GPU/rust-gpu/pull/448) added arrayed specialization constants, allowing spec constants declared as fixed-size arrays occupying consecutive IDs
27+
- [PR#482](https://github.com/Rust-GPU/rust-gpu/pull/482) added explicit `#[spirv(location = N)]` support, fixed overlapping location assignment for larger-than `Vec4` structs
28+
29+
- subgroup intrinsics:
30+
- [PR#14](https://github.com/Rust-GPU/rust-gpu/pull/14) added subgroup intrinsics matching GLSL's [`GL_KHR_shader_subgroup`](https://github.com/KhronosGroup/GLSL/blob/main/extensions/khr/GL_KHR_shader_subgroup.txt)
31+
- [PR#441](https://github.com/Rust-GPU/rust-gpu/pull/441) added `ScalarComposite` trait and derive macro, enabling composite types (scalars, vectors, arrays, structs, repr-int enums) in subgroup intrinsics
32+
33+
- ray tracing:
34+
- [PR#391](https://github.com/Rust-GPU/rust-gpu/pull/391) added `Matrix4x3` type for ray tracing intrinsics
35+
- [PR#343](https://github.com/Rust-GPU/rust-gpu/pull/343) added `RayQuery::get_intersection_triangle_vertex_positions()` for ray tracing
36+
- [PR#339](https://github.com/Rust-GPU/rust-gpu/pull/339) added `HitTriangleVertexPositionsKHR` built-in for ray tracing pipelines
37+
38+
- `spirv-builder`
39+
- [PR#477](https://github.com/Rust-GPU/rust-gpu/pull/477) removed the need for `crate-type = ["dylib"]` in shader crate `Cargo.toml`
40+
- [PR#488](https://github.com/Rust-GPU/rust-gpu/pull/488) replaced `enum MetadataPrintout` with `struct BuildScriptConfig`; shader compilation warnings now properly forwarded to build output
41+
- [PR#265](https://github.com/Rust-GPU/rust-gpu/pull/265) added `#[non_exhaustive]` on `SpirvBuilder` and dependent structs; use builder patterns instead of direct construction
42+
- [PR#13](https://github.com/Rust-GPU/rust-gpu/pull/13) allowed cargo features and default-features to be passed to the shader crate
43+
- [PR#422](https://github.com/Rust-GPU/rust-gpu/pull/422) redesigned the `spirv-builder` watch API: simpler `Watcher` returning `CompileResult` directly from `recv()`, with `try_recv()` for non-blocking polling
44+
- [PR#223](https://github.com/Rust-GPU/rust-gpu/pull/223) added `SpirvBuilder::target_dir_path` to set the target directory explicitly
45+
- [PR#188](https://github.com/Rust-GPU/rust-gpu/pull/188) added `RUSTGPU_CARGOFLAGS` environment variable for passing extra cargo flags
46+
47+
- `cargo-gpu`
48+
- added `cargo-gpu` to allow CPU code to be compiled by a stable toolchain
49+
- [PR#131](https://github.com/Rust-GPU/cargo-gpu/pull/131) added `cargo gpu clippy` and `cargo gpu check` for linting/checking shader code
50+
- [PR#109](https://github.com/Rust-GPU/cargo-gpu/pull/109) added `--package`/`-p` akin to `cargo`
51+
- [PR#16](https://github.com/Rust-GPU/cargo-gpu/pull/16) added `[package.metadata.rust-gpu]` support in `Cargo.toml` for declarative build configuration
52+
- [PR#42](https://github.com/Rust-GPU/cargo-gpu/pull/42) added `--watch` flag for auto-recompilation on source changes
53+
- [PR#71](https://github.com/Rust-GPU/cargo-gpu/pull/71) refactored cargo-gpu from a binary into a library with a public API that's usable from build scripts
54+
- [PR#132](https://github.com/Rust-GPU/cargo-gpu/pull/132) extracted install logic into a separate `cargo-gpu-install` crate, reducing dependency count by ~30 crates for library consumers
955

1056
### Changed 🛠
1157

12-
- [PR#170](https://github.com/Rust-GPU/rust-gpu/pull/170) updated toolchain to `nightly-2024-11-22`
13-
- [PR#44](https://github.com/Rust-GPU/rust-gpu/pull/44) added support for [mesh shaders](https://www.khronos.org/blog/mesh-shading-for-vulkan)
14-
- [PR#17](https://github.com/Rust-GPU/rust-gpu/pull/17) refactored [`ByteAddressableBuffer`](https://rust-gpu.github.io/rust-gpu/api/spirv_std/byte_addressable_buffer/struct.ByteAddressableBuffer.html) to allow reading from read-only buffers
15-
- [PR#16](https://github.com/Rust-GPU/rust-gpu/pull/16) added
16-
[`TypedBuffer`](https://rust-gpu.github.io/rust-gpu/api/spirv_std/struct.TypedBuffer.html),
17-
an explicit way to declare inputs and outputs as buffers
18-
- [PR#14](https://github.com/Rust-GPU/rust-gpu/pull/14) added subgroup intrinsics matching
19-
glsl's
20-
[`GL_KHR_shader_subgroup`](https://github.com/KhronosGroup/GLSL/blob/main/extensions/khr/GL_KHR_shader_subgroup.txt)
21-
- [PR#13](https://github.com/Rust-GPU/rust-gpu/pull/13) allowed cargo features to be passed to the shader crate
22-
- [PR#9](https://github.com/Rust-GPU/rust-gpu/pull/9) relaxed `glam` version requirements (`>=0.22, <=0.29`)
23-
- [PR#1127](https://github.com/EmbarkStudios/rust-gpu/pull/1127) updated `spirv-tools` to `0.10.0`, which follows `vulkan-sdk-1.3.275`
24-
- [PR#1101](https://github.com/EmbarkStudios/rust-gpu/pull/1101) added `ignore` and `no_run` to documentation to make `cargo test` pass
25-
- [PR#1112](https://github.com/EmbarkStudios/rust-gpu/pull/1112) updated wgpu and winit in example runners
58+
- Updated Rust nightly toolchain to `nightly-2026-04-11`
59+
- [PR#249](https://github.com/Rust-GPU/rust-gpu/pull/249) updated to Rust 2024 edition
60+
- [PR#380](https://github.com/Rust-GPU/rust-gpu/pull/380) `glam` types have the same layout on GPU and CPU to prevent sutle UB bugs with `Vec3`, requires at least glam `0.30.8`
61+
- [PR#395](https://github.com/Rust-GPU/rust-gpu/pull/395) make many APIs explicitly use `glam` types instead of generics
62+
63+
- `ByteAddressableBuffer`:
64+
- [PR#17](https://github.com/Rust-GPU/rust-gpu/pull/17) refactored `ByteAddressableBuffer` to allow reading from read-only buffers
65+
- [PR#430](https://github.com/Rust-GPU/rust-gpu/pull/430) fix `ByteAddressableBuffer` stores of scalar pair types
66+
- [PR#353](https://github.com/Rust-GPU/rust-gpu/pull/353) soundness fix: respect `read_scalar` errors instead of silently corrupting data
67+
68+
- image:
69+
- [PR#281](https://github.com/Rust-GPU/rust-gpu/pull/281) allow `SampledImage` to access `query_size_lod` and `query_size`
70+
- [PR#361](https://github.com/Rust-GPU/rust-gpu/pull/361) added `Image::fetch_with_lod` shortcut for `Image::fetch_with(..., lod(...))`
71+
- [PR#490](https://github.com/Rust-GPU/rust-gpu/pull/490) made `Image::fetch()` implicitly declare LOD 0
72+
- [PR#474](https://github.com/Rust-GPU/rust-gpu/pull/474) allow `Image::write()` to write scalar values into scalar images
2673

2774
### Fixed 🩹
2875

29-
- [PR#200](https://github.com/Rust-GPU/rust-gpu/pull/200) fixed [#199](https://github.com/Rust-GPU/rust-gpu/issues/199) by correctly generating an `fmul` in the `log10` intrinsic
30-
- [PR#174](https://github.com/Rust-GPU/rust-gpu/pull/174) fixed [#169](https://github.com/Rust-GPU/rust-gpu/issues/169) by handling signed integers in the `bswap` intrinsic
31-
- [PR#1129](https://github.com/EmbarkStudios/rust-gpu/pull/1129) fixed [#1062](https://github.com/EmbarkStudios/rust-gpu/issues/1062) by not flipping the comparison of the rotate amount with zero
76+
- [PR#552](https://github.com/Rust-GPU/rust-gpu/pull/552) massive speedups for mem2reg linker step
77+
- [PR#364](https://github.com/Rust-GPU/rust-gpu/pull/364) fixed `libm` intrinsics for versions newer than `0.2.11`
78+
- [PR#233](https://github.com/Rust-GPU/rust-gpu/pull/233) fixed array of array types
79+
- [PR#167](https://github.com/Rust-GPU/rust-gpu/pull/167) fixed `debug_printf` macros not escaping `{` and `}` correctly
80+
81+
- codegen:
82+
- [PR#15](https://github.com/Rust-GPU/rust-gpu/pull/15) fixed signed `for` loops
83+
- [PR#213](https://github.com/Rust-GPU/rust-gpu/pull/213) fixed `leading_zeros`, `trailing_zeros` and `count_ones` intrinsics
84+
- [PR#174](https://github.com/Rust-GPU/rust-gpu/pull/174) added support for signed integer `bswap`
85+
- [PR#363](https://github.com/Rust-GPU/rust-gpu/pull/363) allow `std::hint::black_box` to be a no-op on GPU
86+
- [PR#518](https://github.com/Rust-GPU/rust-gpu/pull/518) replace `num_traits::Float::powi` implementation with `GLSL.std.450 Pow` intrinsics
87+
- [PR#200](https://github.com/Rust-GPU/rust-gpu/pull/200) fixed `log10` intrinsic
88+
- [PR#1129](https://github.com/EmbarkStudios/rust-gpu/pull/1129) fixed bit rotates being completely broken
89+
- [PR#227](https://github.com/Rust-GPU/rust-gpu/pull/227) fixed array init with `0i32` incorrectly using `0u32`
90+
- [PR#224](https://github.com/Rust-GPU/rust-gpu/pull/224) fixed typo swapping logical operations on bools
91+
- [PR#302](https://github.com/Rust-GPU/rust-gpu/pull/302) optimize constant casts to avoid requiring `Int64` capabilities
92+
93+
- spirv-val:
94+
- [PR#512](https://github.com/Rust-GPU/rust-gpu/pull/512) fixed validation failures with newer `spirv-val` (v2025.5+) by folding `OpLoad` from `Private` variables with constant initializers
95+
- [PR#456](https://github.com/Rust-GPU/rust-gpu/pull/456) fixed unused shared memory causing validation errors
96+
- [PR#379](https://github.com/Rust-GPU/rust-gpu/pull/379) fixed Vulkan validation errors by erasing explicit layout decorations when disallowed
97+
98+
- ICE:
99+
- [PR#431](https://github.com/Rust-GPU/rust-gpu/pull/431) fixed divide-by-zero ICE
100+
- [PR#453](https://github.com/Rust-GPU/rust-gpu/pull/453) fixed ICE on indirect function pointers
32101

33102
## [0.9.0]
34103

Cargo.lock

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ exclude = [
4343
]
4444

4545
[workspace.package]
46-
version = "0.9.0"
46+
version = "0.10.0-alpha.1"
4747
authors = ["rust-gpu developers", "Embark <opensource@embark-studios.com>"]
4848
edition = "2024"
4949
license = "MIT OR Apache-2.0"
@@ -54,14 +54,14 @@ keywords = ["gpu", "compiler", "rust-gpu"]
5454
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(target_arch, values("spirv"))'] }
5555

5656
[workspace.dependencies]
57-
spirv-builder = { path = "./crates/spirv-builder", version = "=0.9.0", default-features = false }
58-
spirv-std = { path = "./crates/spirv-std", version = "=0.9.0" }
59-
spirv-std-types = { path = "./crates/spirv-std/shared", version = "=0.9.0" }
60-
spirv-std-macros = { path = "./crates/spirv-std/macros", version = "=0.9.0" }
57+
spirv-builder = { path = "./crates/spirv-builder", version = "=0.10.0-alpha.1", default-features = false }
58+
spirv-std = { path = "./crates/spirv-std", version = "=0.10.0-alpha.1" }
59+
spirv-std-types = { path = "./crates/spirv-std/shared", version = "=0.10.0-alpha.1" }
60+
spirv-std-macros = { path = "./crates/spirv-std/macros", version = "=0.10.0-alpha.1" }
6161
spirv-tools = { version = "0.13.0", default-features = false }
62-
rustc_codegen_spirv = { path = "./crates/rustc_codegen_spirv", version = "=0.9.0", default-features = false }
63-
rustc_codegen_spirv-types = { path = "./crates/rustc_codegen_spirv-types", version = "=0.9.0" }
64-
cargo-gpu-install = { path = "./crates/cargo-gpu-install" }
62+
rustc_codegen_spirv = { path = "./crates/rustc_codegen_spirv", version = "=0.10.0-alpha.1", default-features = false }
63+
rustc_codegen_spirv-types = { path = "./crates/rustc_codegen_spirv-types", version = "=0.10.0-alpha.1" }
64+
cargo-gpu-install = { path = "./crates/cargo-gpu-install", version = "=0.10.0-alpha.1" }
6565

6666
# normal dependencies
6767
anyhow = "1.0.98"

0 commit comments

Comments
 (0)