Releases: shader-slang/slang
v2026.3
=== Breaking changes ===
No breaking changes
=== All changes for this release ===
0c484bf Simplify CodeRabbit configuration (#10025)
4dc5364 Include lz4 and miniz dependencies in WASM C++ libs package (#9818)
af57b50 Require colon after prefix in diagnostic annotation tests (#10035)
b0a623e Improve diagnostic testing infrastructure (#10033)
7ffb51d remove unused diagnostics (#10012)
f73e98c Add -diagnostic-color auto/never/always (#9955)
v2026.2.2
Slang v2026.2.2 === Breaking changes === No breaking changes === All changes for this release === 4724809cc Ensure generated getters of optional operands don't crash (#10019) 2942719f1 Support relaxed coopmat conversions in coop_mat_2. (#9994) e78d03a3c Language reference: program execution and divergence/reconvergence (#9960) 2b9e28bd6 Language reference: Add pointer types (#9881) e3d5e4256 Add diagnostic tests for __ref/__constref interface params in dynamic dispatch (#9909) c7d0c0165 Fix thread group size for GLSL compute shaders (#9959) bc3bbf889 Fix lambda expr capture logic. (#9992) ba1a4b326 Add tests for circular interface conformance in dynamic dispatch (#9911) 5c201bfd6 Fix debug source mapping for #line remapped locations (#9945) adb73326a Add tests for generic specialization with associated type of existential (error 33180) (#9935) 66f598228 Add Claude AI workflows for PR review, CI analysis, and assistant (#9973) d53e5f9be Add negative test for extension methods on dynamic dispatch interfaces (#9858)
v2026.2.1
=== Breaking changes ===
No breaking changes
=== All changes for this release ===
ae33f43 Add tests for [Specialize] interface dynamic dispatch error: 52008 (#9930)
d49ba11 Set layout size for TensorView (#9944)
cd26b40 Reduce sccache local cache size to 2G (#10002)
940ad92 Fix boolean comparison for build-llvm in coverage workflow (#10001)
f0ae9a0 Fix coverage workflow LLVM setup (#10000)
6a45af5 Fetch LLVM prebuilts from new location in GCS (#9998)
de9037e Fix coverage nightly workflow id-token permission (#9993)
8d37bd0 Add cache restore for use-local-sccache in container workflow (#9990)
75e0c71 Add atomic_reduce intrinsic for cuda target(#9969)
ce3bbb1 Specialize [CUDAKernel] functions as compute stage entry point for __stage_switch (#9970)
6bb1b4a Add use-local-sccache input to force local backend in container (#9988)
b32145e Use container workflow for Linux x86_64 in populate-fork-cache (#9987)
8016752 Add cache restore to populate-fork-cache workflow (#9985)
10410ba Fix container cache path to /tmp/.cache/sccache (#9984)
7d11148 Add negative tests for interface type specialization of generics (#9854)
a90d0db Add GCP authentication to coverage and VK-GL-CTS nightly workflows (#9977)
1a377c5 Expand fork PR cache to all 6 configurations (#9979)
76b04ae Use local backend when populating fork cache (#9978)
187e714 Add id-token permissions to reusable workflow calls (#9976)
5e478fd Skip GCP auth for fork PRs in Copilot setup, MDL benchmark and Compile Regression test (#9974)
6a84feb Add workflow to populate fork PR cache on master (#9963)
c86bb9f Add test for tuples of interfaces with tuple-containing implementation (#9918)
8c72921 Allocate bindless resource heap space-index during the reflection processing step (#9870)
d0b0afb Improve diagnostic output and testing (#9947)
e8dff23 Add GCP auth to benchmark and compile-regression-test workflows (#9952)
6e88b88 Add fork PR caching with GitHub Actions cache (#9950)
3093bcf Add unit tests for record-replay subsystem (#9896)
a86fbbf Add sccache with Google Cloud Storage for GitHub-hosted builds (#9904)
90b9f47 Revert claude workflows (#9937)
d0ce57d Add a unit test to verify the separate debuginfo with modules (#8833)
3581f9f Enable link-time constant expressions in generic type parameters (#9776)
8e817d5 Fix YAML formatting in .coderabbit.yaml
c56bf91 Add Claude AI-powered code review and assistant workflows
ad80e84 Add Claude AI-powered code review and assistant workflows
f860761 Add wrapper script for local coverage runs (#9898)
v2026.2
=== Breaking changes ===
No breaking changes
=== All changes for this release ===
eaa54ed neural slang: expose Layout as generic parameter (#9915)
950715b Include slang-glslang.pdb in debug-info package (#9922)
18b9390 Fix internal error in getTypeNameHint for generic texture types (#9803) (#9902)
a83a63b Refactor GCC/Clang compiler output parsing (#9874)
3489207 Skip eliminating load-store pairs that prevent dominace violations (#9890)
adddb6b Hash grid encoder implementation (#9715)
c3ad80c Language reference: improve introduction, add behavior classes, typographical conventions (#9732)
45d28fa Add container image consistency check (#9861)
v2026.1.2
=== Breaking changes ===
f955cbb neural.slang: implement CoopVec-like interface by using CoopMat intrinsics (#9512)
=== All changes for this release ===
8dc2705 Don't rewrite entrypoint in to borrow during ir lowering. (#9869)
a9ba4fc Fix the release CI broken (#9868)
f718c7c Add missing constant folding for fp8/bf16. (#9863)
e9cc1f6 Don't eliminate debug info instructions (#9860)
a920ad9 Use CUDA 13 in all Linux CI workflows (#9851)
3056ebe Add diagnostic annotation system to slang-test (#9853)
a24c5a5 Fix visibility of TargetEnum. (#9834)
f022290 Treat logical AND and OR as constant-fold-able (#9833)
dbe2768 Fix WGSL semantic removal when struct is used as both input and output (#9752)
3e03578 Validate semantic usage for stages, add diagnostic (#9260)
1cf8e77 Expose version string in slang-wasm. (#9832)
29e8e75 Fix data race in expected failure list copying across test threads (#9820)
686beee Update Copilot code formatting (#9822)
8c3ed57 Add support for various array and tuple operations to dynamic specialization pass (#9773)
c49ca30 Port getTargetHostCallable over to the recommended slang api (#9707)
4a0b5ef Fix 8590 - Empty Raypayload IR (#9031)
f72a2a6 Fix empty debug type name for void return types in SPIRV emission (#9749)
45774a4 Support fp8 and bfloat16 types. (#9780)
db758d5 Carry over initExpr when creating UserDefinedAttribute from StructDecl. (#9786)
535637c Update CLAUDE.md for slangpy repro instruction (#9804)
2856c13 neural: add frontend APIs (#9713)
077bba8 Partially revert to fix nightly ci on slangpy (#9791)
39fb1e3 Reapply "Add Linux ARM64 (aarch64) CI supportth CPU-only tests" (#9802)
a1065ee Fix OptiX payload mismatch for types containing bool/half (#9793)
8f05424 Build only completely missing LLVM by default (#9800)
f246695 Add workflows for LLVM caching (#9794)
d3b0cff Revert "Add Linux ARM64 (aarch64) CI support with CPU-only tests" (#9792)
5e0a22a Remove CLAUDE hooks (#9775)
743ddc6 Fix the issue when detecting the reachable inst for auto-diff worklist (#9764)
08c30f0 Add placeholder for update-spirv-tools CI workflow (#9778)
f2bbf83 Remove Slang build cache from RTX Remix nightly workflow (#9779)
d24c8e4 Fix *= in GLSL for vectors and matrices (#9774)
8610741 Add syntax to interfaces, extensions, type specifiers, alias declarations (#9769)
9688eaf Add Linux ARM64 (aarch64) CI support with CPU-only tests (#9725)
be4c8ef Fix #9509: Restrict HitObject.SetShaderTableIndex to DXR native (#9744)
c6ce094 Add [noinline] attribute support for SPIRV backend (#9735)
e705058 Add dynamic specialization logic for OpGetElement. (#9766)
f0719cb Change Conditional<> to Use Vector internally (#9655)
7fdfd5b Enable LLVM caching in Copilot CI setup (#9746)
[BREAKING] f955cbb neural.slang: implement CoopVec-like interface by using CoopMat intrinsics (#9512)
557e45c Add DescriptorHandle Support to AnyValue Marshalling (#9386)
801ae99 Fix issue with dynamic dispatch lowering of externally visible existential parameters (#9751)
efbbc4f Fix an enum lowering bug that can lead to duplicated int lit. (#9740)
fb09d1d Explicitly remove unused ByteAddressBuffer types after the legalization (#9742)
b61ab2a Remove obsolete where-clause note in generics guide (#9710)
7fed198 Language server highlighting fix for generic value param. (#9743)
a59c62c Language reference: add syntax for struct (#9610)
v2026.1.1
Slang v2026.1.1 === Breaking changes === d4803234f Enable back PR #9230 for SER enabling which were reverted in #9375 (#9504) d310530c7 Retain switch/case fall-through structure (#9411) === All changes for this release === 4923e8883 Fix Optional none lowering for DifferentialPair (#9562) f10d60219 Use 64-bit stat on Windows for large files (#9631) e21bc1b72 Fix temporarily unparented insts wrecking stuff in specializeFunctionCalls (#9718) 812dc3419 spv: assign default names to nameless struct members (#9696) 237d05fd2 Fixes for `reflection-parameter-block` example (#9594) 5a296afd2 Use CUDA 13.0.1 in Linux CI (#9724) 7d9829ab2 Fix RenderDoc F11 step-into failure for cross-module Slang functions (#9650) 68c20f07a Add support for enums in reflection API (#9615) ad4a20eb2 Fix parameter pack bugs (#9686) f46882557 Update logic in `_replaceInstUsesWith` to ensure that insts that represent sets are always ordered correctly (#9275) ac82d5cd5 Guard system dependency aliases against existing targets (#9720) 7e6105f97 Add support for casting DescriptorHandle <-> uint64_t on CUDA (#9665) 0dfb54ab5 Make firstbithigh, firstbitlow and reversebits work with a variety of integer sizes (#9611) 013df68a3 Add a new example for running shaders on CPU via LLVM (#9646) ff8d636c0 Remove unreachable IR after discard (#9714) 777c038e5 Fix emission of SPIR-V DebugTypeMatrix matrix layout operand (#9708) 9b4461c9e Fix MaterialX shader generation detection on Windows CI (#9607) 94c09c527 Fix default->case fallthrough and add HLSL output tests (#9677) b4046ee58 Fix#7070 Optimize OptiX ray payload access using direct register method (#9284) efb3e5d9a Implement variadic rich diagnostics (#9663) 487627001 Make UOI-NCSA license REUSE compatible (#9642) 47e743d9b Re-enabled tests disabled due to the bug in SPIRV-Tools (#9711) dee968db7 Rerun slangpy test sequentially (#9706) e7fbdd423 Clone all submodules for repro-remix.sh (#9712) d4539882b Update Slack webhook for RTX remix (#9701) c8ddf20bb Update spirv-tools and spirv-headers to v2026.1.rc1 (#9697) 3ad9f69f0 add __floatAsInt expression to support compile time bitcast operation (#9687) 222bbdf3a Update SPIRV-Tools and SPIRV-Headers to latest versions (#9617) 0bc91e371 Add comprehensive version logging to GPU test jobs (#9689) 849a5d12f Misc CoopMat/lambda expr fixes. (#9685) 144ff56cb Enable SPIRV validation for slangpy CI tests (#9645) bca742677 Enable sizeof/alignof for DescriptorHandle<T> with target-aware resol… (#9671) 261162776 Fix coopvec test failures via glsl on Linux (#9681) 7f02114b3 Update CI container to Vulkan SDK 1.4.321.1 to fix validation layer bug (#9640) [BREAKING] d4803234f Enable back PR #9230 for SER enabling which were reverted in #9375 (#9504) 689b5fb24 Fix missing Aligned operand for PhysicalStorageBuffer stores (#9644) 57640d501 Fix debug source file name emitting (#9653) 84fee0b02 Enhance diagnostic description format to allow more terse descriptions (#9662) 749a076a5 Fix crash in getSpecializedLinkageName due to implicit String construction (#9633) 6534d832f Remove temporary cmake tar-ball during Copilot setup (#9638) 9bfcb6a8b [LLM] Add LLM instruction for debugging slang issues with slangpy repro steps (#9627) 569db87e1 Skip the URL document checking test of slangpy (#9639) 5894ce5fe Fix incorrect use of reinterpret_cast (#9484) bc9e59fd3 Fix u64 constant propagation (#9441) 60518d624 Make min/max conform to IComparable interface (#9593) 44c91c532 Fix SPIR-V emit crash for tess factors (#9538) 7d1556c25 Fix issue with existentials in the presence of overloaded expressions. (#9602) [BREAKING] d310530c7 Retain switch/case fall-through structure (#9411) d80e15ab5 Improve language reference manual for types (#9560) bb40ae1c9 Implement different debug levels for spirv (#9457) eff0c0e42 Fix crashes during parameter binding when entrypoint returns optional (#9525) 4bf4c7911 Fix preprocessor AtStartOfLine flag regression in macro (#9573) d3938d2b8 Expose float default values in reflection (#9582) a9d71b648 Fixed scoping for if-let variables (#9561) b78854158 Add script to reproduce RTX Remix shader compilation issues (#9572) 55e7ed9d9 Fix lowering of nested optional types (#9499) 380dfc545 Fix sizeof(DescriptorHandle<T>) returning 0 (#9571) 8cac39f17 ci: Enable slangpy tests on Linux debug (#9598) cc399abd2 Add MaterialX integration test workflow (#9490) cfaccc644 Package static libraries for C++ WASM development (#9556) 70db5bb93 Fix `ReadNone` func property propagation not checking all inst operands (#9527) b000fc968 Don't emit OpCapability StorageImageMultisample for read-only multisampled textures (#9587) 061b616e0 Add newline character after version output (#9568) 16cf11fc2 Fix corner case in `legalizeStructBlocks()` (#9588) 32c05a731 Added reflection API support for stream output types (#9579) 1b96be36f Add diagnostic for static function accessing non-static member via this (#9586) f17cb477e Fix depth output mode being dropped when referencing shader parameters (#9577) 26a818f66 Fix typo in BRDFParams variable declaration (#9570) b1fc2d5b0 Fix crash when calling getEntrypointHash on a specialized entrypoint. (#9566) 7be0f2401 Fix SPIR-V invalid default init interface values (#9522) 65afd68e6 Fix GLSL to HLSL/DXIL compilation by adding semantic decorations (#6678) (#9519) 0b7e9344f Fix SPIR-V debug info source file references for #include and import (#9520) 2685c7f5a Fix ambiguous overload resolution for CoopVec max() with integer argu… (#9532) 539603597 remove temporary dev tests (#9590) 081ad1c48 Update Linux GPU CI container to CUDA 12.5.1 (#9524) 043899b06 Allow extern functions to not have a definition in Slang module (#9492) 2764aab62 Add matrix-matrix, vector-matrix compound multiply-asignment operator for GLSL (#9501)
v2026.1
Slang v2026.1 === Breaking changes === 0528cdf05 Refactor how pointer sizes work & make 32-bit pointers work (#9493) === All changes for this release === e4215bc19 Allow passing LLVM downstream args to LLVMBuilder (#9491) [BREAKING] 0528cdf05 Refactor how pointer sizes work & make 32-bit pointers work (#9493) 186351f07 nix: dev-shell fixes (#9437) 118a65690 Work around hardcoded slangc path in slangpy tests (#9563) b1da8b2c0 Remove CUDA installer when setting up Copilot (#9557) 69795e376 Add X11 and Vulkan development libraries for Copilot (#9554) 3766cb8c3 Fix CUDA permissions after installation for Copilot (#9552) d7f9eb408 Add CUDA installation verification to Copilot setup (#9550) 6774547cd Export CUDA paths in each step for nvcc availability (#9548) 1cb2ad742 Install CUDA 12.4.1 for Copilot (#9546) 83b395979 Add CMake and build tools installation for larger runner (#9544) c6dee4075 Remove container from Copilot workflow (#9542) e2d30702b Use GitHub larger runner for Copilot to avoid path issues (#9540) c9c8cf610 Fix incorrect spelling for spirv target and profiles (#9521) 18650ce10 Allow `findFieldIndexByName` to recognize fully qualified names. (#9483) f45046710 Fix potential null pointer dereference in enum type lowering (#9518) 735059252 Improved diagnostics prototype (#9503)
v2025.24.3
=== Breaking changes ===
No breaking changes
=== All changes for this release ===
97c5d06 Fix platform macros.. (#9502)
09fe4ff Preprocessor bug (#9495)
528ddf7 add matrix tranpose support on metal (#9488)
671b391 Use the system-installed slangc compiler when building without dependencies (#9480)
992ec72 Avoid infinite cycle when mangling struct defined inline at a parameter type location (#9482)
7abf3a9 Activtely synthesize AttributeDecl for user defined attribute structs. (#9481)
21296af Add -report-dynamic-dispatch-sites flag (#9273)
fe8bd58 move tests from bug directory to bugs (#9463)
55d680e Preserve emtpy tuple elements in createGLSLGlobalVaryings. (#9479)
794052b Fix mishandling of induction values in loop unrolling. (#9476)
1027aa5 Reduce copying inside SourceFile::setContents; fix non-BOM UTF-16 offset and skip UTF-16 checks if file size is odd (#9407)
2e66e60 Don't generate IR in ComponentType::specialize if spec arg is invalid. (#9453)
f1165f5 Fix Copilot path mapping - mount _work to work not _work (#9473)
23424c8 Add /runner to /home/runner bind mount for Copilot compatibility (#9470)
7ea1506 Emit a warning for a default-constructed interface variable and make it safer (#9421)
c969c4b Remove container specification from copilot-setup-steps (#9468)
3fe13e7 Remove container specification from copilot-setup-steps (#9466)
70df5d2 Fix scope of local variables from inlined functions (#9418)
8312133 Fix incorrect use of reinterpret_cast and union (#9458)
71a5fc1 Fix Git safe.directory configuration for container workflows (#9461)
8968b4a Add packages:read permission for container image authentication (#9464)
2db7bd6 Use Custom Linux CI container image (#9460)
25c1c6e emit-spirv: handle IRVoidType in emitDebugTypeImpl (#9414)
d26153e Install curl before Copilot preparation step (#9432)
a9d10b8 Revert "Add workspace mounts to container options for Copilot compati… (#9426)
262c3a6 Add workspace mounts to container options for Copilot compatibility (#9424)
dd4ba6e Skip slangpy-samples tests on macOS debug builds (#9408)
db9dd16 Configure Copilot Coding Agent for ARC self-hosted GPU runner (#9415)
v2025.24.2
Slang v2025.24.2 === Breaking changes === No breaking changes === All changes for this release === ca70f0012 Enable slangpy tests for Linux (#9378) d116d484d LLVM IR target (#8960) 5d775e282 Support for CUDA 13.0 paths (#9239) 40ae503b6 Add missing DebugLines in two cases (#9371) d00f869e1 Fix remaining UBSan errors reported during CPU-only Linux testing (#9394) a19633e54 Enable slangpy and slang-rhi tests on macOS debug builds (#9387) 078241317 Fix the usage of the SLANG_APPLE_FAMILY macro (#9376) 6ca87a470 Fix UBSan errors: unaligned loads/stores in bytecode VM (#9289) b6a575f56 Fix tests using `SLANG_CHECK` instead of `SLANG_CHECK_ABORT` (#9358) 4a7e78f12 Fix negations of `INT64_MIN` when handling integer literals (#9330) 8edde00e3 Add "release-asserts-only" option to SLANG_ASSERT environment variable (#9363) 1150d2bbd Fix UBSan errors: RIFF unalignment (#9254) 9122a7c5e Fix UBSan errors in `slang-memory-arena.h` (#9286) d54ea11e5 ci: Use tags for slangpy-samples (#9329) f8b0b93ae Fix OptiX include path search on Linux (#9391) 1d0111f06 Don't create a dependency on `slangc` when `SLANG_ENABLE_SLANGC` is disabled (#9366) e1763e9ff Add more Slang support for Shader subgroups (#9319) 53eb8580b Generate diagnostic structs from lua definitions for diagnostic prototype (#9380) 706bc9da8 Fix coverage nightly workflow: Add retention policy integration (#9392) 9ab771820 Enable Slack notifications for RTX Remix nightly CI (#9377) a2ba47af0 Fix UBSan errors: member calls on null pointers (#9355) 695561600 Emit SPIR-V OpTypeMatrix for uniform and storage buffers (#9341) 0ea091454 Get target-specific layout for DescriptorHandle<T>, refactor Type-kind mapping in layout creation (#8383) 6514add2d Fix various issues in `slang-glslang` (#9305) 984e27efc Remove unused byte encoding functions (#9332) c28150ecc Fix incorrect use of `UIntSet::clear()` and rename it to `UIntSet::unsetAll()` (#9292) 95f38acdc Remove unused MD5 implementation (#9333) 1717891a1 Fix Clang warning introduced by PR #7968 (#9311) e9e9817a3 Fix UBSan errors: invalid value for type `SlangLanguageVersion` (#9288) dbfbe1a0e Remove OpenGL from targets in README (#9337) fa75c8487 Introduce lua description file for new diagnostics format (#9379)
v2025.24.1
=== Breaking changes ===
12b9782 Revert pr 9230, 9287 and 9321 (#9375)
3fd9f50 CI test-slangpy: use a dedicated slangpy-samples branch (#9312)
18d0a3a Add SER support for DXR 1.3 and VK EXT extensions (#7292, #9023) (#9230)
=== All changes for this release ===
5c5fe4d Fix fd leak (#9362)
[BREAKING] 12b9782 Revert pr 9230, 9287 and 9321 (#9375)
5e8c5ae Document generic parameters in attributes (#9298)
17818f2 Fix bindless resource heap placed in wrong descriptor set (#9281)
da483a3 Update to latest external/slang-rhi (#9357)
d040c9b Move existential specialization diagnostic to the specialization pass (#9359)
5b8d641 Fix UBSan errors: memcpy() and memcmp() called with null pointers (#9361)
e500170 Fix UBSan error: load of invalid SpvOp value (#9349)
379113b slangd: Canonicalize all paths found from search paths into URIs (#9279)
eaad58a Fix OpCapability Int64ImageEXT detection (#9308)
2b8534c Enable Linux GPU CI with containerized builds and tests (#9173)
19c632c Use label vulkancts for VK-GL-CTS nightly (#9353)
4fd8f91 Use curl instead of gh CLI for fork PR detection (#9118) (#9351)
9f2c6d5 Install gh CLI and jq on Windows self-hosted runners (#9118) (#9347)
d67d381 Fix #9018 - HitObject.GetCurrentTime had incorrect availability (#9321)
3e017fc Add CUDA support for HitObject.GetWorldToObject/GetObjectToWorld (#9287)
0aae485 Add SLANG_ASSERT environment variable support (#9313)
9228bba Fix pragma warning rejection when using import statements (#9296)
cfdbbba Add tool to split IR dumps into separate section files (#9247)
5921ee6 Fix CI workflow branch fetch for fork PRs (#9327)
fe7c6f3 Fix jq single-quote argument handling on Windows (#9320)
[BREAKING] 3fd9f50 CI test-slangpy: use a dedicated slangpy-samples branch (#9312)
d66c2c6 fix typo: unamed -> unnamed (#9299)
dea92ad Fix the missing newline characters for the breaking changes (#9293)
c3542ad Handle uninitialized resources in structs (#9151)
d5eaf82 Add name hint to DispatchMesh payload global variable for debuginfo (#9161)
025c394 Fix internal error when accessing ConstantBuffer elements (#9280)
[BREAKING] 18d0a3a Add SER support for DXR 1.3 and VK EXT extensions (#7292, #9023) (#9230)