Releases: shader-slang/slang
v2025.4
Slang v2025.4 Changes: 5173c8748 Include slang-glsl-module.dll in releases, for precompiled glsl module. (#6239) a026df756 Respect per-target debug options (#6193) eebe84907 Distribute slang-glsl-module.bin in release packages. (#6233) ae778e342 [Docs] Auto-diff documentation overhaul (#6202) 21893763c Declare `VariablePointers` capability when needed. (#6231)
v2025.3.3
Supports Cooperative Vector
=== Breaking changes ===
No breaking changes
=== All changes for this release ===
fb052bf Support cooperative vector including Vulkan-Header (#6228)
7a8131d Add coop-vec insts to non-differentiable insts list (#6227)
ba9b278 Support cooperative vector (#6223)
2ae194d Fix ConstantIntVal::toText when the val is a enum. (#6224) (#6225:client support)
cbcb97a Update SPIRV submodules and fix tests (#6222)
2ba6458 Fix combined sampler documentation and warning (#6207) (#5938:quality & productivity)
6052043 Fix the type coerce issue (#6215)
c18c436 Fix loophole in hoisting where an OpVar
's uses might not be properly registered for replacement (#6212)
1c282b8 Implement WaveMultiPrefix* for SPIRV and GLSL (#6182) (#6180:client support)
cf66563 Fix exact-match witness synthesis for static functions (#6204)
1f99c20 Fix UIntSet calcSubtract to handle mismatched buffer sizes (#6205)
f4e3692 Proposal for Cooperative Vector in Slang (#6209)
b3c6212 Add slangpy proposal (#6156)
c356d3a Allow requiring glsl language extensions on structs (#6173)
a5b1aa0 Added const version for the operator[] in Matrix (#6186)
92a48f6 Delete invalid ASSERT in isTypeOperandEqual
. (#6196) (#6194:quality & productivity)
4b9a342 Fix geometry shader related modifier lowering. (#6197) (#6185:quality & productivity)
cd27fbd Add a unit test to cover type-conformance compilation API. (#6178) (#6179:quality & productivity)
31bb5ea Add an example for reflection of parameter blocks (#6161)
f030a5a Properly plumbing layout for global varyings. (#6198) (#6188:quality & productivity)
v2025.3.2
=== Breaking changes ===
None
=== All changes for this release ===
da3dc98 Fix an incorrect iteration with a workList (#6177)
1f1892d DNI: try using sparse checkout for MDL-SDK (#6190)
3ecbeac Fix depth texture sampling on Metal. (#6168) (#6166:client support)
a7958af Some usability improvements to formatting script (#6153)
1abba25 Add intptr_t abs/min/max operations for CPU & CUDA targets (#6160)
0dd9076 Add bgra8 format (#6163) (#5469:client support)
92c9fff improve error message on generic value decls (#6169) (#6139:quality & productivity)
ac174d2 Fix static build and install (#6158) (#5821:client support)
a9ce752 Fix incorrect resolve of specialization instance (#6162)
v2025.3.1
Slang v2025.3.1 Changes: 8000e0ede Cache and reuse glsl module. (#6152) 04353fb76 Add validation for destination of atomic operations (#6093) 18f12ad9c Use SPIRV integer vector dot product instructions (#6141) 14211ec3c Remove unnecessary parameters from Metal entry point signature (#6131) ea98e24d3 Bump spirv-tools to 9295a8b94ed0751565fa9cda6d949f5e388b32d9 (#6145) a4d67a0b0 Catch all exceptions from loadModule* and link API calls. (#6143)
v2025.3
Slang v2025.3 Breaking Change: fc77070fd Refactor _Texture to constrain on texel types. (#6115) This change adds generic constraint to what is allowed in a texture type, and can potentially break existing generic code that specializes a `Texture2D<T>` etc. with a generic `T` that isn't constraint by `ITexelElement`. All Changes: 151bdb837 Fix bug: IgnoreInheritance in lookup (#6146) 4c2c0856c Fix gcc downstream compiler optimization level corresponding to OptimizationLevel::Maximal (#6137) 681224561 Generate IDs for every witness table (#6129) b11c25749 Fix def-use issue from multi-level break elimination (#6134) f3d7aa6ce Fix upper 32 bits of 64-bit AnyValue packing (#6127) d09b6bccd Make -depfile work for binary modules output too (#6126) a85c350df Implement Quad Control intrinsics (#5981) 87a081602 test-server should use d3d12core.dll from bin directory (#6095) 955c10bb9 Delete CNAME be78f2714 Create CNAME 9d9997670 Fix circularity issue when checking multiple generic interface constraints. (#6121) d046082c5 Add diagnostic for function body followed by a `;`;. (#6122) dc69d85f8 Add groupshared atomic array test. (#6107) d1a13a730 Allow __subscript<T> syntax. (#6124) fc77070fd Refactor _Texture to constrain on texel types. (#6115) 3ff257816 Fix interface requirement lowering for generic accessors (#6123) f68d493d5 Avoid using the backend validation when using test server (#6094) ddc4a1799 Fix nullptr in generic specialization (#6066) 91430870a hoist entry point params for wgsl (#6116) e743c17f7 Fix `-capability` arg in SPIRV debug command line output. (#6114) 3666c66e2 Fix prebound parameter pack - argument list matching logic. (#6111) dfb369e87 Move global variable initialization into entry points for WGSL (#6106)
v2025.2.2
What's Changed
- Fix optix varying legalization. by @csyonghe in #6089
- Reuse code for Metal and WGSL entry point legalization by @fairywreath in #6063
- Implement AnyValue marshalling for 8-bit integers by @juliusikkala in #6059
- Emit errors when seeing a matrix with row/col count of 1 by @aleino-nv in #6044
- Inline global constants that contains opaque handles for legalization. by @csyonghe in #6098
- Fix argument buffer tier2 layout computation. by @csyonghe in #6101
- support SV_ViewIndex for Metal by @fairywreath in #6103
- Implement Packed Dot Product intrinsics by @fairywreath in #6068
- C-like emitter: Add parenthesis when combining relational and bitwise… by @aleino-nv in #6070
- Fix cyclic lookups with UnscopedEnums by @juliusikkala in #6110
- Fix resource specialization issue where store insts from inlined calls are not considered properly. by @saipraveenb25 in #6099
Full Changelog: v2025.2.1...v2025.2.2
v2025.2.1
What's Changed
- Find OptiX headers by @skallweitNV in #6071
- Don't initialize temp var for out parameters when generating the backward diff function by @saipraveenb25 in #6076
- Fix simplify if-else by @cheneym2 in #6077
- Fix inaccurate documentation in member function mutability. by @entropylost in #6065
- update slang-rhi + fix nvrtc options by @skallweitNV in #6080
- Fix #5354, change diagnostic definition error message and expect output in test by @wijiler in #6067
- Implement specialization constant support in numthreads / local_size by @juliusikkala in #5963
- Fix formatting and documentation on DescriptorHandle. by @csyonghe in #6062
- Fix issue with specialization using arithmetic expressions by @saipraveenb25 in #6084
New Contributors
- @entropylost made their first contribution in #6065
- @wijiler made their first contribution in #6067
Full Changelog: v2025.2...v2025.2.1
v2025.2
Slang v2025.2 Changes: a985e240a Fix CUDA reflection for acceleration structure handle size. (#6055) 4104aa7f9 Fix `markNonContextParamsAsSideEffectFree`. (#6054) f199640bb Add overload for select to handle Optional<T> (#6022) 803e0c9f9 WGSL: Convert signed vector shift amounts to unsigned (#6023) 6437f2d37 Fix potential test failures due to SPIRV validation failure (#6047) 548453338 Fix Metal type layout reflection for nested parameter blocks. (#6042) 5290c5806 Initial implementation of SP#015 `DescriptorHandle<T>`. (#6028) 4cfae806a Add exhaustive associativity test for WGSL (#6056) 2b76466c4 Add CalculateLevelOfDetail* overloads for comparison samplers (#6018) 55ff4686e Support a storage class, NodePayloadAMDX, for SPIRV work-graphs (#6052) fce63c2c5 `[[shader_record]] / [[push_constant]]` Param Annotations Proposal (#6053) e8217c700 Fix implicit string conversion breaking NativeStrings (#6035) b72e62f5c Upgrade actions/upload-artifact from v3 to v4 (#6051) 87f00a36a [Auto-diff] Overhaul auto-diff type tracking + Overhaul dynamic dispatch for differentiable functions (#5866) 6706c1a77 update slang-rhi (#6045) 46149eeb2 Pass compiler specific args to GCC and Visual Studio too (#6019) dab6cec1e Add parentheses to make precedence explicit (#6030) 2249d6ffb Add SampleCmpLevel intrinsics (#6004) 63b8d9e1d slang-test: Ensure runtime is consistent (#6021)
v2025.1
=== Breaking changes ===
No breaking changes
=== All changes for this release ===
5b99314 Add backtraces to examples (#5973) (#5520:quality & productivity)
c43f6fa Lower varying parameters as pointers instead of SSA values. (#5919)
1a56f58 Check whether array element is fully specialized (#6000) (#5776:client support)
7e278c3 Add example showing how to use Slang/WASM (#5996)
7d4142e Fix some robustness issues in the examples (#5984) (#5520:quality & productivity)
5621ace Use disassemble API from SPIRV-Tools (#6001)
a448b7e Properly set D3D12SDKPath (#5993)
7190c28 Add Bindless<T>
proposal. (#6002)
bc76c6e Add support for textureLod with sampler2DArrayShadow (#6009)
22dab44 Fix GLSL mix(T,T,bool) SPIR-V output (#6006)
f0431b8 CI: Build the full slang-wasm.[js|wasm] targets instead of just the slang library. (#5998) (#5959:forward looking)
00e7542 Make 'shared' keyword map to 'groupshared' in GLSL mode (#6003) (#5989:quality & productivity)
114c976 Create DirectDeclRef when creating Decl to prevent invalid dedup. (#5945) (#5941:quality & productivity)
5df3a74 Fix parameter location reflection for pure data paramblocks. (#5956) (#5940:quality & productivity)
d48cd13 Correct IR generation for no-diff pointer type (#5976) (#5805:client support)
e3b71cf Allow explicit test root (#5980)
a13ef05 Fixed incorrect condition in Session::queryInterface. (#5978)
f3b916e add missing IR_LEAF_ISA for MetalMeshType (#5975)
075e6c2 Fix reflection for metal vector [[id]] location. (#5943)
823b6a8 Add terminateRayEXT & ignoreIntersectionEXT (#5974)
a8471a1 Fix getInheritanceInfo
for ExtractExistentialType
. (#5971) (#5900:client support)
b7eb585 Check for undefined %id in spirv_asm block. (#5966) (#5753:client support)
1f98bd6 LanguageServer: fix highlighting of wrapper type. (#5968)
3f43d6c Add RaytracingAccelerationStructure::__init(uint64_t)
. (#5967) (#5801:client support)
cc1b96d Check mismatching method parameter direction against interface declaration. (#5964) (#5962:quality & productivity)
88e221b Fix requirement candidate lookup to prefer decls in the same paraent as the inheritance decl. (#5965) (#5954:quality & productivity)
89dd2b1 Add a basic WebGPU example (#5923)
b2d51ad Skip uninitialized-use warning on hitAttributeEXT-decorated globals (#5952)
71cd967 Prevent constant folding for specialization constants (#5953)
7a6de4a Implement HLSL pack/unpack math intrinsics (#5934)
c4429bc Fix tiny typos (#5944)
478be54 Fix parsing GLSL SSBO arrays / bindless descriptors (#5932)
7cecc51 Add packed 8bit builtin types (#5939)
2ad1f81 Support dispatchComputeIndirect and draw(Indexed)Indirect with count buffer for Vulkan (#5929)
1b5679f Reflection API Wasm Bindings Part1 (#5936)
e15c280 update CTS package (#5935)
76fdeaa Fixed stage and result field names in json reflection (#5927)
8e55b49 Fix WASM build (#5925)
e93cb8a Check subscript/property accessor for differentiability. (#5922) (#5921:client support)
5c9f011 Fix crash during loop unrolling. (#5920) (#5917:quality & productivity)
a00db74 Add base vertex and base instance system values (#5918)
2e9605e Enable more examples in CI (#5915)
237af82 Add HLSL texture sample with status intrinsics (#5901) (#4495:forward looking)
c6662b6 Readme corrections (#5874)
16f617f Report error when generated spirv is empty. (#5899) (#5893:quality & productivity)
a427c58 Fix issues reported by 'shellcheck' (#5913) (#5520:quality & productivity)
58654d0 Refresh list of failing examples (#5904) (#5520:quality & productivity)
f675c39 Fix the parser issue for not recognize Generic[N] (#5912)
a805756 Check decl nesting for namespaces. (#5910) (#5897:quality & productivity)
abeb375 Support explicit [vk::location(n)]
binding on metal/wgsl. (#5907) (#5883:client support)
0f5a2ce Fix metadata of register space and varying params. (#5906) (#5905:quality & productivity)
ae04e60 Allow Optional
, Tuple
and bool
to be used in varying input/output. (#5889) (#5881:quality & productivity)
41c627f Add slang example tests to CI (#5879)
45af246 Add verification logic on push and specialization constants. (#5887) (#5865:quality & productivity)
6e24244 Support specializing generic entrypoints in findAndCheckEntryPoint
. (#5890) (#5898:forward looking)
6f57e47 Implement bitcast for 64-bit date type (#5895) (#5470:quality & productivity)
49e912a Fix entrypoint auto discovery logic. (#5885)
7ffc69d Update 09-reflection.md (#5886)
d61bba8 Fix getArgumentValueFloat
when arg is int. (#5888) (#5860:quality & productivity)
9c9e1f7 Support matrix negation in metal backend. (#5891) (#5882:client support)
0a6ffee install mono for toc generation (#5877)
83f4bd5 Enable exprs for all supported GLSL layout qualifiers (#5857) (#3873:quality & productivity)
9d608b9 Update reflection API chapter in User Guide (#5868)
9d89a25 Make slang-rhi's NVAPI support conditional on SLANG_ENABLE_NVAPI (#5855)
78c9bd1 Bit extract (#5847)
b4e63d7 use Release over RelWithDebInfo for ci (#5846)
1fb79ac Add an example for using the reflection API (#5839)
9c82ed3 WGSL: Fix issue where global calls are generated (#5768)
79dc7ef Add SLANG_ENABLE_DXIL (#5853)
48ac6f2 Correctly distinguish between windows and MSVC (#5851)
7279c04 Set default hidden visibility for all source on gcc (#5850)
96a8781 Add missing header for _getpid() (#5852)
df06e79 Bump imgui for include fix (#5854)
50fa543 Correct casing of windows includes (#5849)
160be8e Fix prebuilt dependencies filenames on non-windows platforms (#5848)
v2024.17
Slang v2024.17 Changes: 772c48af9 Fix language server check skipping when explicit module decl exists. (#5845) 626e81478 Bump spirv-header/tools/glslang (#5834)