github shader-slang/slang v2026.20

3 hours ago

Breaking changes

  • e49310561 Use HLSL receiver conventions for methods (#13615)
  • 649a6f83b Record effective this parameter information (#13232)
  • 7bb2fca59 Parse < after a swizzle or other value-typed expression as less-than (#13429)
  • 4c584ef67 Add SPIR-V lexical debug scopes (#13219)
  • a05023cd3 Add GLSL support for SampleCmpBias and SampleCmpGrad (#9085)

All changes for this release

  • d9ede2dd5 Add IR specialization for resource selections (#13539)
  • a14432b01 Unroll CoopVec groupshared store on HLSL (#13608)
  • 8c81b8bda Revert texture format descriptor types (#13537) (#13712)
  • 0d02ec846 Make mark-slangpy-tests-skipped report success instead of skipped (#13723)
  • bbd75ba78 Fix lookup of enclosing namespace members in a qualified namespace reopen (#13711)
  • e9fc02c8d Fix mixed-type vector shifts on CPU and CUDA (#13684)
  • 2caaf254a Isolate module-format-not-finalized tests (#13710)
  • 3a93b3898 Resolve language-reference doc paths against a spec checkout in the agentic lint (#13510)
  • ec39d3af6 Diagnose throwing calls nested in a try operand (#13514)
  • [BREAKING] e49310561 Use HLSL receiver conventions for methods (#13615)
  • 6597ec920 Fix debug scopes for token-pasted declarations (#13626)
  • a5a87a123 Add texture format descriptor types (takeover of #11344, merged with master) (#13537)
  • f2b163c08 Lower combined-sampler SampleGrad to CUDA tex*Grad built-ins (#13559)
  • 788be3144 Implement CUDA formatted layered RWTexture stores (#13563)
  • 0b8d2df75 docs: document what constexpr does and does not do (#4236) (#12820)
  • d81979f84 Convert arrays of matrices that differ only in matrix layout (#13378)
  • c538debef Legalize per-invocation resource globals (#13116)
  • 6d38185bc Use a GitHub App token for SlangPy dispatch (#13623)
  • f6a839924 Invalidate the workspace when slang.workspaceFlavor changes (#13520)
  • 3fa2aa09c Skip unauthenticated LLVM publication during Release (#13577)
  • 8230cdaeb Fix #12821: don't lock the record-replay mutex when the layer is idle (#12823)
  • 7d7ad3bbf Build GCC translation units with -flarge-source-files (#13570)
  • 584103334 Infer compute derivative groups from thread-group shape (#13371)
  • 07cfeed8a Point README docs links at docs.shader-slang.org (#13568)
  • 8d39b85e0 Update agentic-test prompts and HLSL doc gaps after WGSL loop and ray-payload changes (#13312)
  • e4d92bf0b Compose DownstreamArgs across session, target and link levels instead of replacing them (#13450)
  • 64c06dae1 Clean up void placeholders after empty-type legalization (#13453)
  • 2c9bdf5d8 Parenthesize WGSL relational comparisons so argument lists don't parse as template lists (#13569)
  • 705c5d8c8 Report threadGroupSize for every [numthreads] stage in reflection JSON (#13494)
  • fd9e65824 Make getLayout fail after layout generation reported errors (#13513)
  • b00d9e482 Latent: refresh an existing persistent cache entry in place when its key is rewritten (#13523)
  • b0a023001 Latent: reset the cached digest and line breaks when SourceFile contents are set (#13524)
  • 615f302c6 Remove internal CI documentation link (#13576)
  • fac7213eb Fix #13463: a null slangd setting restores its default (#13475)
  • f7e14a1a6 Fix LLVM prebuilt population in the sccache workflow (#13526)
  • 08d419cbf Diagnose try on non-throwing constructors and subscripts (#13503)
  • ae6d69935 Preserve small double source literals (#13481)
  • 19c885a5f Diagnose errors escaping accessor bodies instead of crashing (#13502)
  • 4922d9fac Preserve CUDA firstbithigh signedness (#13479)
  • 3e0f5443f Correct finite FP8 conversions (#13483)
  • 6818f2ac5 Round Half constants and CPU conversions to nearest even (#13485)
  • 9a954ff69 Fix #12110: preserve NonUniform on SPIR-V descriptor-heap access (#12116)
  • b72b0405f Diagnose failures writing slangc container outputs (#13304) (#13477)
  • f6238cee3 Legalize direct calls to CUDA kernels (#13482)
  • e83310cf2 Support arithmetic-generic vector and matrix extrema (#13139)
  • d074e7779 Parse HLSL classes as value types (#13497)
  • e2e217dd2 Support HLSL uniform parameter temporaries with -Gec (#13445)
  • 311a3d631 Remove unused dev issue labeling workflow (#13500)
  • 2dcbe6c7a Support groupshared CoopMat Load/Store on the HLSL target (#13501)
  • [BREAKING] 649a6f83b Record effective this parameter information (#13232)
  • 93a54974c Wrap non-struct D3D ray-tracing payloads and hit attributes (#13315)
  • 9f31ffcfd Fix #12474: don't emit StorageImageReadWithoutFormat for SubpassInput (#12480)
  • eaf758404 Fix #13428: earlier declarators of a group are visible to later initializers (#13432)
  • 2aa4915c3 Make missing return in non-void function an error in Slang 202c (#13460)
  • 3c9112588 Use slang-rhi for coverage workflow examples (#13459)
  • 159f4a6bd Move Slang language reference manual to the shader-slang/spec repository (#13439)
  • 9516b48bc Refresh agentic tests stale after #13219 and #13358 (#13454)
  • 4d69638f2 Fix #13233: carry auto-diff annotations across cross-module link (#13236)
  • bce8cbefa Support GeometryIndex() on CUDA/OptiX via the SBT GAS index (#13437)
  • ef7e6dcf1 Fix differential pair handling in higher-order autodiff (#13360)
  • 98c4f258c Add clustered wave ops (#13270)
  • 20092570c Bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /extras/scaler (#13129)
  • c8e02397a Fix HLSL differentiation of CoopVec arithmetic operators (#13456)
  • 5cb03fa5f Fix #11075: generic IFloat/IInteger min/max on builtin vectors and float matrices (#12249)
  • d307206de Update SPIRV-Headers/Tools and add volatile semantics for ray-tracing builtins (#13373)
  • e6be8dcdd Stop re-wrapping refined type-flow info in makeInfoForConcreteType (#12934, #13259) (#12935)
  • [BREAKING] 7bb2fca59 Parse < after a swizzle or other value-typed expression as less-than (#13429)
  • 6ba151dcf Fold __isVector() on the operand type, not the element type (#13357)
  • [BREAKING] 4c584ef67 Add SPIR-V lexical debug scopes (#13219)
  • 00febe288 Ignore empty declarations in interface conformance (#13367)
  • 92258f61b Suggest a missing interface constraint when member lookup fails on a generic type parameter (#13225)
  • 8fbd9d033 Language reference: Statements (#12209)
  • 1740f5a81 Share coverage counter decoding and Vulkan example helpers (#13368)
  • feb2452bf Recover texture [format] across function parameters on CUDA (#12737) (#12766)
  • cc0728959 Add Visual Studio diagnostic formatting (#13372)
  • bd090b099 Diagnose invalid modifiers on type expressions (#13366)
  • c43281adc Expand captured autodiff parameters for CUDA, OptiX, and Metal (#13358)
  • a459ba415 Honor matrix layout modifiers on arrays and function return types (#12992)
  • 3e98d9563 Support system dependencies for Homebrew builds (#13293)
  • d29f77efd Fix #11782: lower makeConditionalValue regardless of worklist order (#13043)
  • 9c36eddc4 Add configurable note suppression (#13325)
  • 64199c79a Fix #13000: correct nested-loop autodiff checkpoint array sizing (#13002)
  • 256459316 Make shader coverage example workloads configurable (#13344)
  • 4c88395ea Fix loop inversion with debug information (#13254)
  • 16c3d3f68 slang-test: initialize per-thread test-requirement slots (#13334)
  • [BREAKING] a05023cd3 Add GLSL support for SampleCmpBias and SampleCmpGrad (#9085)
  • 89adf2ec0 Bind Metal uniform arrays of textures/samplers (part of #12291) (#12294)
  • 96b421e69 Track synthesized declarations through semantic phases (#13302)
  • 89743b4ee Fix #13257: register [Import]-decorated linkage clones in prelink (#13258)
  • 214064dd1 Guard non-static-satisfies-static witness adaptation by receiver type (#13260) (#13269)
  • 92ef2caae Fix #13193: preserve geometry input primitive topology for empty input struct (#13195)
  • d50eeb55e Compile core and compiler-core with exceptions disabled (part of #12779) (#12782)

Full changelog

Don't miss a new slang release

NewReleases is sending notifications on new releases.