Releases: shader-slang/slang
Release list
v2026.14.1
=== Breaking changes === 15ada68aa Don't re-export primary-file `using namespace` through import (#11450) === All changes for this release === 7c58a326b Add Metal support for printf (#12250) 6462d7d2f Update tmux title with branch name (#12272) 3fdebf511 [Metal] Fix RayQuery TriangleFrontFace emission (#12142) 4701a1407 Fix #12220: correct SPIR-V DebugEntryPoint command line (#12243) eaab736fd fix: Allow specialization-constant [numthreads] with compute derivative groups (take 2) (#12207) 71a3f7e71 Fix #9403: emit compute entry-point wrappers as prototypes in -target hpp (#12152) 1eeb3b29d Fix #12237: legalize bool switch condition for SPIR-V (#12254) 6dba5d212 Fix #12226: emit descriptor-heap ConstantBuffer as a uniform-buffer descriptor (#12256) ea711ddcb Improve test cases to pass for different optimization levels (#12253) ae363b754 Fix #12240: emit 64-bit OpSwitch case literals at the selector width (#12251) dd6e011e5 Add size/alignment info to JSON reflection for every type layout (#12225) 335d24689 Forward -Xspirv-opt passthrough args to the SPIRV-Tools optimizer (#12206) 15863db48 reflection-json: emit resultType for typed buffers (#12228) f282bdf9c Fix #12212: fail slang-capability-generator on capdef errors (#12217) 70462843c Add `-debug-info-include-source` to embed source in SPIR-V independently of `-g` level (#12202) 575c68ad8 Skip autodiff finalization passes for modules with no autodiff IR (#11476) a4168d47c Initialize denormal mode option values (#12229) 1e0b3a441 Exclude FIDDLE headers from GCC PCH (#12233) 926f93ed1 Remove parent traversal from internal includes (#12216) 5281ccc66 Add public latest capability aliases (#12213) [BREAKING] 15ada68aa Don't re-export primary-file `using namespace` through import (#11450) 72985f871 Fix #12108: prefix internal spirv_asm registers with __ and assert (#12190)
v2026.14
=== Breaking changes === 5374382b3 `vector<T, 4>`: Explicitly disable `(vector<T, 2>, T)` and `(T, vector<T, 2>)` initializers (#12141) === All changes for this release === 426590635 Fix #12169: legalize global-scope array-of-struct varying input (#12170) b62921021 Correct -g0/none debug-level help text to match actual behavior (#12201) [BREAKING] 5374382b3 `vector<T, 4>`: Explicitly disable `(vector<T, 2>, T)` and `(T, vector<T, 2>)` initializers (#12141) 08024eda7 Clarify short-circuiting behavior related to `&&` and `||` (#12171) 444d8fb11 Language reference: clarify (non-)short-circuiting behavior of ternary conditional (#12163) 5e5f2a06b build(deps): bump google.golang.org/grpc from 1.79.3 to 1.82.1 in /extras/scaler (#12199) ebed5178f Enable metal target for vector/matrix fwidth (#12165) (#12172) e438c5aef Add external/README.md documenting dependencies and CMake options (#12178) 56eb1aa08 Add regression test for #12104: vec3 self-division ones-vector fold size (#12193) e549806c9 Stop tracking generated extras/scaler/scaler-linux binary (#12168) 7e65d5966 Reject conflicting -profile and -capability command-line arguments (#12122) 4955b21c3 Add slang-test optimization option (#12187) 4f23e904a Skip CI for nested Markdown changes (#12188) 601d363f7 Fix infinite loop in _unwrapParameterGroups for non-StructuredBuffer resources (#11136) 4f9d626be Public-by-default struct members in Slang 2026 (#9153) (#12151) d384b77e6 Fix #12173: bridge module-scope args to WGSL by-ref (out/inout) parameters (#12174) 02b55fb2c Reject operator names on variables and parameters (#11664) (#11665) d148787f2 Update spirv submodule (#12184) 7002bbe67 Fix #12177: honor -v failure in parallel runs and gate capability discovery (#12180) 958620c16 Coalesce redundant UniformConstant resource-element loads on SPIR-V (#12051) (#12111) b593edc38 Fix #10188: shape-independent __ldg exclusion for OptiX SBT loads (supersedes #11152) (#12119) cbabb7bde Avoid conflicting MSVC exception flags (#12166) 6a244fee2 Omit redundant terminating break in WGSL switch cases (#11947) a916653b7 Relocate slang-test generated outputs (#12154) c6a261068 [2/3] ByteAddressBuffer: decide wide-vs-scalarized + validate the alignment contract (#11595) 203065d66 Initialize parsed command-line options (#12153) 340e3445a Avoid ImageGatherExtended capability for constant-offset Gather (#9382) (#12133) beff6e419 Add default value blob reflection API (#11471) 2eb65582b Add explicit separate debug info output path (#12147) 3292090b3 Fix macOS signing version extraction (#12149) aaa07fe29 Use mimalloc for Slang-owned malloc/free on Windows (#12105) 99b8019ed build(deps): bump golang.org/x/net from 0.54.0 to 0.55.0 in /extras/scaler (#11892) 657b1907d Fix #11659: null-deref crash legalizing graphics-stage varyings for CPU kernel targets (#11661) ec177850a build(deps): bump golang.org/x/crypto from 0.48.0 to 0.52.0 in /extras/scaler (#11975) 3649fb982 Fix shader-slang/slang#11982: dedup SPIR-V DebugSource for imported modules (#12034) 5209a49f6 Add build command and binary location to the shader-coverage-backends README (#12144) d9c9fa413 Use `-Og` optimization level for GCC/Clang debug builds (#12140) c1c419c94 Fix #12006: don't warn E41017 on __extern_cpp host-provided globals (#12011) b184085c6 Fix CUDA prelude vec1 make helpers to return the vector struct (#11957) 5c30d437f PR board sync: deliver CI/check + status/review events, and co-assign community authors (#11847) 4f4ec5057 compile-perf: allow sweeping patch releases (include-patches dispatch input) (#12126) e3a6efd71 Fix shader-slang/slang#11984: strip UTF-8 BOM from #line DebugSource text (#12055) 8e8653f8c Fix #11315: lower `(void)expr` to the canonical void value (#12117) 6c837d317 fix: restore Fix #10909: Add Flat decoration for SubgroupLocalInvocationId in fragment shaders (#12064) 5bd8eb89f Fix #12046: correct GLSL float remainder; emit OpFMod for mod() on SPIR-V (#12130) 814ab6dda Fix #12121: accept and forward -X<compiler> options in render-test COMPARE_COMPUTE tests (#12128) c8d02ae59 Memoize shared Val and type DAG traversals (#12106) 1cfc8ec51 Fix Metal fragment out/inout param crash (Unknown addressspace) (#12015) 89443da36 Fix #12049: specializing a generic entry point can't see primary-file extension conformances (#12052) 623227f86 Revert "Pin nightly coverage macOS job to macos-15" (#12129) 8e3f9163d Allow shader invocation reorder extensions with SPIR-V 1.4 (#12115) bf7a78ab2 Fix use-after-free in LLVMBuilder JIT teardown (#12114) 20148df52 Split command-line process unit test (#12123) 336dd0f49 examples: add shader-coverage-backends with selectable CPU/CUDA/Vulkan/Metal dispatch (#11979) fd3ab55a7 compile-perf: read suite files as explicit UTF-8 everywhere (#12118) 694022a11 Default the shader-coverage demos to batched dispatch in full mode (#12090) 429163082 compile-perf: reporting redesign — landing page, release/daily cadence split, automatic new-release sweeps (#12086) c5d4d76e6 Fix #12102: make missing mimalloc source a configure error (#12107) a2596654f Instrument gpu-printing example to diagnose macOS Metal failure (#11999) (#12009) a8874f6a1 Gate three backend passes on RequiredLoweringPassSet flags (#11917) (#12088) b69ef6268 Extend sanitizer CI ASan checks and publish ASan-instrumented binaries (#11931) ad69c2e9f Use mimalloc for global C++ new/delete on Windows (#12036) e28b5e9c8 Fix zeroed primal in synthesized trivial forward derivative (#11670) 6d299e4e1 Skip legalizeMatrixTypes when no matrix needs legalizing (#11917) (#11987) 77f5ca091 Make CoopVec subscripts differentiable (#12031) 3eeda847c Fix #11730: brace initializer rejected as a function-call argument (#11818) 67de3f517 Fix #6557: exclude UseUpToDateBinaryModule from module content digest (#12068) bee6400c2 compile-perf: complexity sweep — scaling curves, floor+slope fits, sweep report (#12023) d6c772011 Materialize multi-element swizzle base as a temp in C++/CUDA emit (#12073) (#12078) 65a98e333 docs: add Shader Execution Coverage tutorial to the user guide (#11977) a9c6ff78e Restore MSVC Release /OPT flags when shipping PDBs (#12061) 1a9cec331 Fix shader-slang/slang#11996: add half->scalar conversion operators for CPU target (#12043) fd4bd2531 Add end-to-end SPIR-V test for 64-bit indexing (spvShader64BitIndexingEXT) (#12081) c744924e0 Include license texts in release packages (#12085) ed6c064d8 Fix ASan merge queue failures (#12060) b2fc4c63c Fix #12059: assign HLSL CoopMat.fill Splat return value (#12065) 340a191c5 Fix #12048: run lowerEnumType when only an enum cast survives (#12050) f961ddbea compile-perf: nightly operability for the daily-history re-run (UTF-8, suite-ref backfill, run-date labels) (#12074) 7cc70648a Pin nightly coverage macOS job to macos-15 (#12075) 8f0c3515d Fix generic interface witness lowering (#11615) 4d91d47bf Fix #12002: rename internal spirv_asm sample register so its OpName reads as compiler-internal (#12053) 1a2e4c5e9 Unwrap no_diff element types for autodiff updates (#12030) 5951e13e8 Avoid redundant core module recompilation (#12047) 84792eb15 Add ResourceDescriptorHeap/SamplerDescriptorHeap direct-index input syntax (#11798)
v2026.12.0.1
=== Breaking changes === No breaking changes === All changes for this release === f17d619e1 Memoize shared Val and type DAG traversals (#12106)
v2026.13.1
=== Breaking changes === 3695329b9 Implement rounding for decimal float literals (#11783) === All changes for this release === c0952c29d Update SPIRV for VulkanSDK July 2026 (#12057) 6cdb7601e Fix #11903: diagnose native-only HitObject::Invoke on NVAPI SER target (#11907) cd1e9bc99 Give Slang exception classes default type visibility to fix cross-dylib catches on macOS (#11910) 01adc68f3 Apply AVX-512 JIT workaround to all CI tests (#12056) 4676e878e Reuse bundled Vulkan headers for slang-rhi (#12033) 85d79c676 Fix quadratic IR type legalization on straight-line functions (#12041) 7e1c9b144 compile-perf: constant report panel order + enable api workloads in the tracked nightly (#11998) 29767f336 Language reference: operator expressions and value categories (#11953) dba2ab40d Add ASCII check for shipped headers and preludes to formatting CI (#12037) b721cb68e compile-perf: rt_renderer — generated renderer-shaped corpus (Phase 2) (#12003) fe284bf9f Add conversion tests between all fundamental scalar types (#12020) 258a984c1 Don't warn E31106/E31107 on compiler-synthesized parameter groups (#11986) 95315356a Fix #7878: diagnose default-construct of opaque handle instead of crashing (#11971) 06d69d1d1 compile-perf: HLSL/GLSL/CUDA emit workloads + DXIL/PTX downstream workloads (#12000) 824e24f26 Allow arithmetic in lifted differentiable constraints (#12029) 413398f99 Fix shader-slang/slang#11859: move user-defined derivative [require] to the differentiation use-site (#11872) caa2ff456 Fix quadratic callee side-effect queries in the simplifyIR fixpoint (#11954) b64d495d9 Mark vector subscript accessors differentiable (#12026) cffff65f9 Gate lowerTaggedUnionTypes (#11917) (#11961) 288fecef9 Fixes GitHub issue #7894 (makes reflection and SPIR-V agree on `layout(local_size) in`) (#11715) b264071b8 Support implicit Optional<T> -> Optional<U> covariant conversion (#12013) 58d433809 coverage: fix agentic pass in-process crashes and FileCheck-pattern test bugs (#12024) [BREAKING] 3695329b9 Implement rounding for decimal float literals (#11783) a97110a43 compile-perf: add API-path workloads (session create, many kernels, module graph) (#11976) a47c1b885 Fix invalid SPIR-V for float-to-bool cast in direct SPIR-V emit (#12019) (#12021) 6fad2f01d Allow DescriptorHandle to implicitly convert to ConstantBuffer (#11681) (#11685) 135c93518 Fix #12016: replace em-dashes with ASCII hyphens in slang.h (#12018) 08af86542 tests-agentic: update round for docs/generated/tests against the regenerated design docs (#12017) 468adc556 Harden Claude review workflows and align REVIEW.md with the pre-staged diff protocol (#11993) 5d5183617 Fix #12007: scope reflection-api example [require] to hlsl_spirv (#12008) 0a02eae1b Use native CoopVec in MLP training sample (#12010)
v2026.13
=== Breaking changes === 5de6f53b9 Fix #6428: reject cross-category type coercions for system value semantics (#11862) === All changes for this release === d8e8e1a9e Remove redundant explicit -O0 opt-ins from slang-test test directives (#11923) 70b2d9441 Fix preprocessor and repro-loading leaks; refresh expected sanitizer findings (#11937) c7fff906f Free the glslang disassembly buffer via matched free-export (#11743) 0aef83c5f ci: skip gpu-printing example on hosted macOS runners (#11995) 1c17703c1 Synthesize AppendStructuredBuffer counter as atomic at lowering time (alternative to #11943) (#11972) bfe6a7f14 Fix #11924: use miniz allocation wrappers for miniz-owned buffers (#11934) 58b583be6 compile-perf: publish=false dispatch mode + trend check judged by registered label (#11991) 33f9ed0ce Emit NoContraction under -fp-mode precise on direct SPIR-V (#11935) 97f778022 Move compile-perf workflows to the VM-based perf runner bridge (#11950) 1bd105cee Disable AVX-512 for sanitizer tests (#11974) 6902e80a4 Fix weekly CMake Options CI: GCC maybe-uninitialized in overload inference failure record, missing ASAN link flags in shader-coverage example (#11962) 2eaa90603 Zero-initialize bitfield backing storage in synthesized constructor (#11968) 22d276460 Restore auto-diff link gating to the final codegen link (#11779) 5c40deb17 Fix sema_generics compile-time regression: skip doomed conversion search for generic-param -> scalar (#11896) 59303f9db Fix O(N²) compile-time regression in dynamic-dispatch specialization (#11760) e39e3ce03 Warn on constexpr variable declarations and treat as const (#10940) (#11522) 6c9bfc2f7 Fix #10745: diagnose nested bwd_diff instead of crashing (#11901) da5258265 Fix #11878: don't treat the same field of different objects as aliasing (#11880) 55b2530c6 Fix #10639: propagate optional constraints through generic typealias (#11226) [BREAKING] 5de6f53b9 Fix #6428: reject cross-category type coercions for system value semantics (#11862) 90c2c8dbd Release blobs orphaned on the record-replay replay path (#11942) 1a2b9a5e1 Revert the workaround #11237 because slang-test doesn't use SpvOpt anymore (#11959) ef06ca406 Update slang-rhi to ToT (#11960) 012051b20 Fix #11483: emit descriptor-heap ConstantBuffer in StorageBuffer class (#11647) 526e68813 shader-coverage docs: refresh Current limitations, link example demos from quick start (#11949) b1ab2c585 shader-coverage: validate CPU runtime path end-to-end + document direct-host binding recipe (#11914) 8ac9e49a5 Make vertex-shader-missing-sv-position pedantic and off by default (#11893) 7caafba75 Re-enable scalar-fp8.slang (vk) test on no-GPU CI (#11922) 52cb4e12e Remove dead USE_RIFF and DIRECT_FROM_FOSSIL switches from IR serialization (#11930) d4c464248 shader-coverage: validate Metal runtime path end-to-end on GPU + document direct-host binding recipe (#11929) cb6573041 Refactor SLANG_UNUSED to C++17 if-init pattern (#11832) d6c2fea16 coverage: cap Metal counter width to 32-bit to fix metallib-asm manifest (#11699) 85502042f Fix #11874: drop samplerless requirement from combined-sampler texelFetch (#11876) 5468f2f62 Fix #11836: register GL_EXT_shader_explicit_arithmetic_types for half-float literals (GLSL) (#11839) d09e6efd8 Fix #11890: honor API DiagnosticColor for target-stage diagnostics (#11891) 769f76d28 Add [Shader64BitIndexing] attribute with spvShader64BitIndexingEXT capability and SPIR-V emission (#11538) (#11541) f4975a7f8 Fix #11918: don't serialize an empty module dependency path across drives (#11921) 364944938 Fail fast when loadModuleFromSource is called with a colliding name (#10996) 96003b0d8 Gate lowerAppendConsumeStructuredBuffers when no Append/Consume buffer is present (#11920) 99c3b77bd Drop unsupported glsl_110/120/130/140 from advertised -profile list (#11902) de342c6b8 Allow standalone precompiled modules with `UseUpToDateBinaryModule` (#11125) 36874356b Default slang-test compiler invocations to -O0 (#11805) c5768a695 Expect replay-stream exception tests to fail on macOS coverage CI (#11909) 0065572bf Fix #11313: lower dynamic-dispatch handle types to ulong on Metal (#11787) 2bd18c052 Emit GLSL struct values as constructors, not brace initializers (#11904) 973274da9 Fix latent stack-use-after-scope in USE_RIFF IR serialization path (#11916) 16872b4c1 ci-analytics: fix stale hosted-runner chart caption (#11908) 803dff915 docs/generated/tests: regenerate 8 stale bundles + reconcile freshness (#11905) 72511c932 ci: verify submodule pins are reachable from tracked branch (#11063) 3e061e131 Diagnose malformed UTF-8 lead byte sequences in sources (#11886) 4ed7d3cfc Add diagnostic warning levels (-Wall/-Wextra/-Wpedantic) (#11812) 594a1b7d3 CI analytics: derive hosted-runner cap from org plan tier (Team=60) (#11895) 8e2a63cbf Diagnose slangi global-parameter limitation instead of internal error (#10677) (#11821) 86609ec5c Fix #11861: honor vk::binding on resource-containing struct params (#11873) 8cc39b1a0 CI: don't fail the build when sccache cache restore errors (#11888) e0e029d94 [codex] Add container pool hysteresis (#11850) 16a1114dd Report duplicate [numthreads] attributes as conflicting modifiers (#11883) 1d2a51b0d Don't process string escapes in include/import file paths (#11846) 160c4a931 Restore E38010 for vk::binding on pointer entry-point params (#11870) e838e0c99 Reject multiple depth output semantics on fragment entry points (#11863) 14a09de5c Support SM 6.10 in gfx D3D12 shader model table; prefer NVAPI HitObject over DXR 1.3 native (#11889) 340f8a667 Fix #11856: rebind cached RHI device's debug bridge in render-test (#11866) 6a222eaf1 Fix #11860: vk::input_attachment_index no longer reserves descriptor set 0 (#11871) 7de3f388e CI: make GCP-vs-GitHub-hosted runner selection switchable via repo variables (#11875) 248a42b48 Fix #11865: don't record uninitialized outputs on record-layer failure path (#11869) f490a52aa Fix #11864: avoid pointer overflow in JSON \u escape decoding (#11867) 460be024c Fix #11841: declare RayTracingMotionBlurNV capability for RayCurrentTime() (#11843)
v2026.12.2
What's Changed
- Update generated design docs by @skiminki-nv in #11842
- Metal: emit type suffix for half/float literals (#11837) by @nv-slang-bot[bot] in #11838
- Fix #11852: make CompilerOptionName::CountOf one past the last option by @nv-slang-bot[bot] in #11854
- Fix #11851: honor SLANG_OVERRIDE_IMGUI_PATH for platform consumers by @nv-slang-bot[bot] in #11853
- Reuse/update license copyright [skip ci] by @KhronosWebservices in #11823
- Fix release failure due to container by @jkwak-work in #11868
- Add regression test for #8148 (generic interface static const) by @nv-slang-bot[bot] in #11653
- Move workgraph APIs to experimental module by @jkwak-work in #11437
Full Changelog: v2026.12.1...v2026.12.2
v2026.12.1
=== Breaking changes ===
No breaking changes
=== All changes for this release ===
3c4dadf compile-perf: fix Windows runner — add bash to PATH, use python3 (#11698)
38c6eac CI analytics: classify June 2026 runner labels (#11671)
c3037d2 Honor vk::binding on entry point parameters (#11712)
da73e01 Fix #11778: diagnose loop-carried uninitialized variable reads (#11810)
bb3fae6 Add GitHub Actions workflow lint (#11793)
5c394d7 shader-coverage: make run_coverage.py executable (#11704)
2834e97 ci: move the wasm build to the GCP build pool (#11773)
b65eff8 Add missing bitwise compound-assign operators for enum types (#11729)
80bf926 Fix #11563: qualify extension-method name hints (#11581)
fcfaa5f Skip loading slang-glslang when no downstream SPIR-V work is needed (#11797)
94d4e47 Fix #11565: emit this debug variable for user-defined initializers (#11815)
c8897a1 Fix #11802: emit GLSL array-constructor syntax for array values (#11819)
cf5d225 Rename CI and nightly workflow files (#11828)
0f93324 slangd: add slang.predefinedLanguageVersion setting for directive-less files (#11692)
f23b543 Fix #11814: stop debug-capture getString() aliasing the buffer it snapshots (#11817)
b90cbca Avoid shell execution in benchmark compile script (#11822)
4ab8d05 Reject invalid HTTP Content-Length (#11824)
d01f9a4 Add reusable PR board-sync workflow (status + assignment) for org-wide reuse (#11740)
502f1a8 Fix CMake options workflow failures (#11807)
c21ead2 Improve character and string literals (#11714)
6b473bd Validate generic struct capability requirements on entry-point params (#9489) (#11770)
e248123 Check [require] capabilities on inverse-placed user-defined derivatives (#11558)
51959e2 Fix #11763: warn on direct copy of uninitialized value (#11764)
3a84a12 Fix #11664: diagnose operator name used as a variable name (#11775)
0edad2e Fix #11297: diagnose String used on kernel C++/CUDA targets (#11777)
778653c Fix #10751: infer prefix fixity for user-defined unary operators (#11772)
d6a9a9c Fix #11407: correct stale 30055 diagnostics-catalog test to fire the diagnostic (#11768)
777a78a Add a CMake override path for fast_float (#11758)
cde7d65 Fix #6703: fold associated constant in signature-type positions (#11706)
e9344b0 Print skip-list info in slang-test (#11800)
6dd0c85 Keep serialization test outputs ignored (#11796)
6c68a8c Verify slangc in CMake option builds (#11795)
1708afc Fix CMake Options workflow permissions (#11794)
4cfe19f compile-perf: disable LLVM in nightly build (CRT mismatch on runner) (#11727)
4832b0f Add opt-in unified ArrayStride for SPIR-V resource descriptor heaps (#11723)
c094143 Fix float-matrix comparison legalization crash + regression test (#11673) (#11675)
9d67f7b Warn when [[vk::location]] is used on a non-varying parameter (#11705)
182af7f Update imgui submodule to v1.92.8 and migrate gui.cpp (#11713)
2d6971c Add IGlobalSession::getDownstreamCompilerVersion (#11552) (#11556)
838d6b4 Fix stale test debug callback (#11785)
c382fd7 Check capability atoms reference in CI (#11788)
60d15fe Avoid duplicate core module builds (#11721)
32d3a39 Fixes GitHub issue #11683 by only getting reflection if compilation succeeded (#11707)
87bcefb ci: path-filter the TOC check to docs/user-guide changes (#11750)
3873af2 ci: yield bot workflow_dispatch CI to human PRs (re-apply #11549 with skip-bug fix) (#11620)
9f51ba0 Add CI container image publisher (#11708)
0d1d75f ci: move the sanitizer build to the GCP build pool (#11749)
b9fd870 Fix #11550: suppress debug info for synthesized struct initializers (#11555)
8d5aa67 Fix replay/repro test DLL ownership (#11765)
26de419 Fix #11733: guard geometryShader unit test on DXIL support (#11734)
c18d7b2 Reduce parallel generic entrypoint stress (#11761)
1a0c2a6 Restrict WaveGetWaveIndex / WaveGetNumWaves to compute-class stages via capability (#11769)
b1bdd88 compile-perf: enable nightly schedule at 05:00 UTC (#11702)
0583a0e Mark scalar-fp8 (vk) as an expected failure on no-GPU runners (#11744)
f1d6258 Add line-swept-spheres (LSS) ray-query intrinsics (NVAPI/GLSL/SPIR-V) (#11535)
eb6a6ef [codex] Document unprincipled-change self-review (#11697)
45000e1 Fix #11731: emit UniformMemory semantics for atomics on legacy Uniform storage class (#11735)
2294f48 scaler: create VMs concurrently when scaling up (#11748)
5affe90 Fix #10988: array-delete the new char[] buffer in glslang_disassembleSPIRV (#11739)
c76b2c7 Emit conservative-depth layout qualifier for SV_DepthGreaterEqual/LessEqual on GLSL targets (#11693)
10f7d90 coverage: store only summary JSONs in history and report history (#11726)
b4f11ae Use value checks for value-style SLANG_* macros (#11737)
1961b88 Centralize docs-only CI skip filter (#11757)
36fd25b Treat unit-test RPC failures as failures (#11753)
v2026.12
=== Breaking changes ===
No breaking changes
=== All changes for this release ===
a7fbf1a Update SPIRV-Tools and SPIRV-Headers to latest versions (#11710)
1161c35 ci: route Linux x86_64 builds and analytics jobs to GCP scaler pools (#11738)
d56da29 Add CPU-only Linux build and analytics GCP scaler pools (#11736)
922b67c Fix floating point literals (#11513)
bb00320 Reject opaque resource handles in SPIR-V local variables (#10526) (#11666)
35d38d1 Diagnose unbound module-scope type_param instead of crashing (#11316) (#11645)
bb413d7 Enforce diagnostic-code uniqueness at build time in Lua (#11318) (#11609)
c491e34 Reject default value on extension generic parameter (#11330) (#11696)
5bdfc7e Warn when a type keyword is used as a variable name (#11347) (#11695)
3dd33ae Position diagnostic carets by display width for UTF-8 source (#11680)
41dfba7 Suggest a similarly-spelled identifier on undefined-identifier errors (#9124) (#11624)
6a694bf Fix internal error for geometry shader with reordered input parameter (#11678)
24d3d2c Diagnose unspecialized generic entry points instead of crashing (#10209) (#11621)
1535382 agentic-tests: regenerate diagnostic-drift bundles (#11728)
e21cdfa Pin Linux GPU CI tests to the GCP scaler pool via a "GCP" label (#11724)
b25e06a Fix abort extension name (#11716)
f114261 chore: Add AI-Assisted Contributions in CONTRIBUTING.md [skip ci] (#11236)
012baec agentic-tests: skip 13 nightly failures (stale diagnostics + flake) (#11701)
a39e49c Add regression test for private cross-module constructor (#7152) (#11622)
c95ad0a Retire the manual ARC runner smoke-test workflow (#11672)
5ec5d55 Fix #7412: error when extension or member declares incompatible capabilities (#11117)
59506d6 Fix #pragma warning state corruption across __include files (#11473) (#11554)
52ab3a1 Fix #11648: diagnose bitwise operators on float operands (#11654)
beb7453 Fix #11686: canonical slang-rhi.h include in mlp-training examples (#11688)
e7e482b Add SLANG_ENABLE_SLANG_PROXY CMake option to gate slang proxy outputs (#11689)
34b809e modernized kTimeoutInfinite using constexpr and uniform initialization (#11527)
fd83f62 CI analytics: surface API failures instead of masking them as healthy data (#11679)
0a71666 ci: clean up GHCR auth now that CI container images are public (#11676)
d39460f Add compile-time performance test suite (#11485)
7a7767b Allow install of static slang library (#11458)
2b14ffd Diagnose unsupported target intrinsics instead of emitting invalid code (#7873) (#11570)
e751322 Add regression test for spurious 'cannot insert #pragma warning here' across __include (#8166) (#11611)
131609a Drop CI host-disk cleanup and run container as non-root (#11355)
146e61d Focused diagnostics for failed generic specialization (#11656)
a84f48e Fix #11503: align format-operand encoding with schema (#11504)
79f9900 Include in slang-parser.cpp for INT_MIN (#11646)
c872fad [1/3] ByteAddressBuffer: make alignment a compile-time (constexpr) contract (#11594)
96a2460 Fix #11506: accept heap texel pointer as atomic destination (#11507)
55a9944 Add benchmark runner label to ci-benchmark-test.yml (#11650)
6713602 Bump slang-rhi to #775 to fix intermittent cmd-query timestamp flake (#11642)
818bbe9 Split build from test in MDL benchmark CI; drop benchmark runner label (#11640)
da319e6 Make native CoopVec differentiable (#11480)
43e44e8 WGSL: emit runtime-indexable static const arrays as var (#11628)
6805dce Add extras/falcor.sh to test Slang against the public Falcor locally (#11602)
a75dcbf Reuse ci.yml artifact for compile regression test; remove standalone workflow (#11635)
6fac3e6 Reuse ci.yml artifact for Falcor tests; remove standalone Falcor build+test workflows (#11605)
3393f1d Add descriptor-heap ConstantBuffer array-of-matrix regression test (#11483) (#11484)
4ed4aef Add [NoDiscard] attribute (#11520)
08e95b8 coverage CI: mark SlangcCoverageManifestOutput as expected failure on macOS (#11630)
89841d2 examples: fix shader-coverage demo portability (#11623)
890f8be Fix shader-coverage demo launch on Windows (#11625)
5353bc5 Add bindless resource metadata usage query (#11436)
4f56990 Use uint64 AS descriptor heap stride (#11494)
35d5189 Fix dropped entry-point uniform on struct-returning Metal vertex shaders (#11607)
7448987 Integrate check-cmdline-ref into ci.yml, reusing the Linux release artifact (#11589)
56f013e Fix missing source locations for parameter-group leak warnings (#11523)
2a6b086 Language reference: Language evolution (#11488)
d620d71 Check [require] capabilities on user-defined derivative functions (#11524)
a214f7d Require all CI needs to succeed (#11619)
47436eb Show argument type mismatch per candidate in overload errors (#7857) (#11576)
2f7d61d Add abort intrinsic for VK_KHR_shader_abort support (#11542)
5280f1a Revert "ci: yield bot-authored CI to human PRs" (#11618)
12f6779 [codex] Remove operator overload type-checking cache (#11614)
7c9df3d [codex] Add variadic pack count constraints (#11571)
03e1cb7 test: use line-only manifest check for MetalLib coverage tests (#11610)
New Contributors
- @klukaszek made their first contribution in #11607
- @rg3igalia made their first contribution in #11646
- @Yasinvv made their first contribution in #11527
Full Changelog: v2026.11...v2026.12
v2026.11
Slang v2026.11 === Breaking changes === a49a12580 Fix integer literal type handling (#11357) === All changes for this release === 7432ffa4e Add must-init (definite assignment) warning for conditionally initialized variables (#11293) 8b86ed2ab ci: yield bot-authored CI to human PRs (#11549) 42b5b938a ci: enable read-only sccache on Falcor builds (#11575) a68b606fb Gate check-ci on build job results so broken builds cannot merge (#11585) 530eeb707 Implement scalar layout for Metal device buffers (#11578) b33ad4692 Wire all module namespaces before extension header resolution (#11531, #11532) (#11577) ac577c6bc Fix #11567: parse C-style trailing-array typedef (#11569) 88064dfde Fix missing default constructor in shader-coverage examples (#11584) db002dbdf Rename PR-label workflow job and file to check-pr-label (#11588) 61ad43dbc Hard-code a fast path for builtin scalar/vector/matrix operators (#11493) 956f6ed52 Update slang-rhi submodule for the MSVC C5285 fix (slang-rhi#773) (#11561) 344fb223d Add linker global cache for accelerating repeated invocations of `linkIR` (#11517) 7eb09fc76 [codex] Support default interface subscript implementations (#11580) 1efb986b9 Update generated design docs (#11582) d3763f655 Add shader coverage demos: image pipeline + BVH traversal (raw Vulkan) (#11553) 266f103db Fix HLSL emission for mesh shader output parameters (#10741) c4ee73d36 [codex] Keep zero init off lambda closures (#11574) eb9403ef5 Split Falcor workflows: build on build pool, test on internal hosts (#11562) 736e3a242 Fix anyvalue packing for embedded structs (#11537) 45c04170f ci: migrate GitHub Actions off deprecated Node 20 runtime (#11557) 3cb03e5ff Check user type for Bot rather than UID when labeling bot PRs (#11559) d000acded Shader coverage: boolean coverage mode (-trace-coverage-boolean) (#11525) a05648207 Skip GPU unit tests when the required API is unavailable instead of listing them as expected failures (#11546) d92b15e02 [Metal] Fix `xcrun` overriding `-metal-path` (#11459) 607bb020e Shader coverage: 64-bit counters with -trace-coverage-counter-width flag (#11451) d3ac243bb ci: pin unpinned tool installs (emsdk, macOS sccache, prettytable) (#11508) b2ec9a4f7 Fix #11543: emit HLSL mesh-shader output qualifiers exactly once (#11544) 05308fe91 Fix #11518: declare VariablePointers capability for Workgroup pointer function signatures (#11521) 9db5ea038 Disable coderabbit auto-assign-reviewer (#11529) 6bd8a5c4e Remove gh auth precondition from IR version check (#11539) 29e69b0bf docs: add Code Style and Review Conventions to instruction files (#11530) 0658ed792 Fix NonUniform decoration propagation to resource operands in SPIR-V (#10656) a005a9d15 Document principled problem-solving methodology and required PR description format (#11369) 142e00d93 Guard serialized IR flat table reads (#11514) 1fc15d23f Add regression test for autodiff recursive function hang (#10066) (#11417) 6b9f98ff9 Guard URI percent decoding bounds (#11515) 70dda1029 Fix compiler performance regressions from auto-diff refactor (#11491) 38c853dbe Unify associatedtype constraint representation; make autodiff requirement access order-agnostic (#11368) 4511c96d8 Print ci commands (#11497) cd6745324 Fix DXC source build with Apple Clang 21+ (Xcode 26+) (#11489) e2bb86bad Diagnose assignment to indexed property instead of ICE (#7160) (#11418) 71e78588f Include identifier name in 'expected a type' diagnostic (#9200) (#11419) dab90c78a Add regression test for autodiff inout struct cross-field gradient (#10081) (#11470) 7cfb3c6f6 Update generated design docs (#11490) 5230a81f2 Fix compiler hang with recursive function (#11112) fbf41e87a agentic suppression: fix post-reorg path drift and re-add flaky test (#11486) 52339028a Build slang as static lib for emscripten/wasm (#11481) 564ac9f05 Metal: lower pointer-to-pointer in buffer types via buffer-element-type framework (#11331) 8c4e02e40 Fix #11276 (Case 2): accept 0#INF symmetrically with 1#INF / 0.#INF (#11284) 0486484fb Agentic tests: restructure into conformance/ + design/ and add language-reference conformance bundles (#11421) 85c65f862 Fix unaligned byte-address descriptor loads (#11430) f46ccbd58 Enable default DXC source builds on macOS (#11461) 4512b165c Fix VM printf string literal operands (#11463) 11e97e771 Add slangc CLI shader coverage support (#11336) c6f104ca7 Avoid mesh line mode for isoline tessellation (#11462) eb0dba821 Write deps file when output is stdout (#11420) 726e0973b Fix descriptor heap acceleration structure loads (#11209) [BREAKING] a49a12580 Fix integer literal type handling (#11357) e2647ba06 Add logic to github action to label nv-slang-bot PRs separately (#11405) bbc4b0278 Fix Ninja race between cpu-shader-llvm-link and shader.o generation (#11456) f8f1602d3 Fix UBSan vptr UB: wrap IDxcBlob as ISlangBlob instead of reinterpret-casting (#11446) 0a73dcc4a Wire REVIEW.md into CodeRabbit and mark it agent-facing (#11413) 3dacd6028 Normalize downstream compiler paths that point to files (#11154) 1a90a9632 render-test: Add support for namespaces in test type parameters (#11444) adc996670 Gate SPIRV-Tools MergeReturnPass behind CMake option (#11237) ab7b5e962 Enable source-built DXC on macOS (#11434) 360da3b12 Handle descriptor heap byte address buffers (#11431) 2ad0ee2f6 Stack overflow in any-value interface dependency walk (#11412) e5ce1b5d0 Fix visibility mismatch of synthesized legacy backward derivative functions (#11140) 999b22fcc Handle global descriptor handle casts in SPIR-V (#11426) 63d421f52 Set DXIL default profile to SM 6.0 (#11362) 2da398bad Build DXC from source when system GLIBC does not match to the prebuilt binaries (#10935) 6ea7f243a Revert macro expansion stack diagnostics (#11351) 1df4c5766 ci-slang-coverage: enable agentic suite with -expected-failure-list (#11416) 7cbbcfea2 Improve LLM-generated design-doc workflow and grammar literals (#11363) fd4f6c7a6 ci-agentic-tests-nightly: drop wrapper, use slang-test natively, suppress 8 known failures (#11414) 5f6d51046 Remove GitHub API dependency in favor of git-tag-based version detection (#11401)
v2026.10.2
=== Breaking changes === 8aee8c932 Diagnose non-differentiable `dadd` and `dzero` implementations (#11196) === All changes for this release === 2129fc6cf Fix spurious push constant storage capabilities (#11134) aaa5f89dd Fix crash when ConstantBuffer<T>.Handle is used with spvDescriptorHeapEXT (#11037) (#11211) ea11331b6 Default implicit SPIR-V SER to EXT (#11343) ec8f06e93 Lower bash version requirement (#11411) a621b651a Use clone builder for prelink witness tables (#11208) 2fc25c6e5 Fix installation note for zstd in CONTRIBUTING.md (#11404) 8710c5140 Update zstd installation instructions in CONTRIBUTING.md 59af4744e Update CONTRIBUTING.md to include zstd installation 670f6bfa6 slang-test: Reorder init for disabled LLVM backend (#11391) f8a98ff73 Export replay exception classes (#11332) d63673d50 Wire agentic test suite into nightly + coverage CI (#11380) 30daa50d2 ci/coverage-windows: skip /d1trimfile on coverage builds; sanity-check Cobertura (#11382) b18c0d345 Fix Linux coverage no-GPU runner failures (#11376) d25453d7f Agentic tests: verify-before-commit, prompt hardening, cleanup pass (#11381) d59284fe8 autodiff: require carrying argument for Call in carryNonTrivialDiffSet (#11286) fb51dcf92 Add neural network parameter layout converter (#11314) [BREAKING] 8aee8c932 Diagnose non-differentiable `dadd` and `dzero` implementations (#11196) dab1be19f Add skills for clarity-focused review of changes (#11340) 8b789681d Proper fix for coopvec test failures on CI (#11361)