diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,15 @@
 # Changelog for spirv-reflect-types
 
+## [0.4] - 2026-06-23
+
+* **Breaking:** minimum GHC raised to 9.2 (`base >= 4.16`).
+* Updated to `vulkan-sdk-1.4.350` (via `spirv-enum-1.104.350.0`).
+* `SpecializationConstant`: added `type_description` and `default_value` fields.
+* Added `GENERATOR_SLANG_SHADER_COMPILER`.
+* Fixed `TYPE_FLAG_REF` label (was aliased to `ARRAY`).
+
+[0.4]: https://gitlab.com/dpwiz/spirv-reflect/-/tree/v0.4-types
+
 ## [0.3] - 2024-07-07
 
 * Update types to accomodate `vulkan-sdk-1.3.283.0`.
diff --git a/lib/Data/SpirV/Reflect/Enums/Generator.hs b/lib/Data/SpirV/Reflect/Enums/Generator.hs
--- a/lib/Data/SpirV/Reflect/Enums/Generator.hs
+++ b/lib/Data/SpirV/Reflect/Enums/Generator.hs
@@ -35,6 +35,9 @@
 pattern GENERATOR_CLAY_CLAY_SHADER_COMPILER :: Generator
 pattern GENERATOR_CLAY_CLAY_SHADER_COMPILER = Generator 19
 
+pattern GENERATOR_SLANG_SHADER_COMPILER :: Generator
+pattern GENERATOR_SLANG_SHADER_COMPILER = Generator 40
+
 generatorName :: IsString label => Generator -> Maybe label
 generatorName = toLabel generatorNames
 
@@ -50,4 +53,5 @@
   , (GENERATOR_KHRONOS_SPIRV_TOOLS_LINKER, "Khronos SPIR-V Tools Linker")
   , (GENERATOR_WINE_VKD3D_SHADER_COMPILER, "Wine VKD3D Shader Compiler")
   , (GENERATOR_CLAY_CLAY_SHADER_COMPILER, "Clay Clay Shader Compiler")
+  , (GENERATOR_SLANG_SHADER_COMPILER, "Slang Shader Compiler")
   ]
diff --git a/lib/Data/SpirV/Reflect/Enums/TypeFlags.hs b/lib/Data/SpirV/Reflect/Enums/TypeFlags.hs
--- a/lib/Data/SpirV/Reflect/Enums/TypeFlags.hs
+++ b/lib/Data/SpirV/Reflect/Enums/TypeFlags.hs
@@ -74,7 +74,7 @@
   , (TYPE_FLAG_EXTERNAL_MASK, "EXTERNAL_MASK")
   , (TYPE_FLAG_STRUCT, "STRUCT")
   , (TYPE_FLAG_ARRAY, "ARRAY")
-  , (TYPE_FLAG_ARRAY, "REF")
+  , (TYPE_FLAG_REF, "REF")
   ]
 
 typeFlagsNames :: IsString label => TypeFlags -> [label]
diff --git a/lib/Data/SpirV/Reflect/SpecializationConstant.hs b/lib/Data/SpirV/Reflect/SpecializationConstant.hs
--- a/lib/Data/SpirV/Reflect/SpecializationConstant.hs
+++ b/lib/Data/SpirV/Reflect/SpecializationConstant.hs
@@ -3,12 +3,21 @@
   ) where
 
 import Data.Text (Text)
+import Data.Vector (Vector)
 import Data.Word (Word32)
 import GHC.Generics (Generic)
 
+import Data.SpirV.Reflect.TypeDescription (TypeDescription)
+
 data SpecializationConstant = SpecializationConstant
-  { spirv_id    :: Maybe Word32
-  , constant_id :: Word32
-  , name        :: Maybe Text
+  { spirv_id         :: Maybe Word32
+  , constant_id      :: Word32
+  , name             :: Maybe Text
+  , type_description :: Maybe TypeDescription
+  , default_value    :: Vector Word32
+    -- ^ Raw default value, as 32-bit words with the low-order word first
+    -- (the C @default_value_size@ in bytes equals @4 * length default_value@).
+    -- Interpret the bit pattern according to 'type_description'. Booleans use
+    -- a single word: @1@ for true, @0@ for false.
   }
   deriving (Eq, Show, Generic)
diff --git a/spirv-reflect-types.cabal b/spirv-reflect-types.cabal
--- a/spirv-reflect-types.cabal
+++ b/spirv-reflect-types.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.36.0.
+-- This file has been generated from package.yaml by hpack version 0.39.1.
 --
 -- see: https://github.com/sol/hpack
 
 name:           spirv-reflect-types
-version:        0.3
+version:        0.4
 synopsis:       Data types from spirv-reflect tool.
 category:       Graphics
 author:         IC Rainbow
@@ -63,9 +63,9 @@
       StrictData
       TypeApplications
   build-depends:
-      base >=4.7 && <5
+      base >=4.16 && <5
     , containers
-    , spirv-enum ==0.1.*
+    , spirv-enum >=0.1 && <2
     , text
     , vector
   default-language: Haskell2010
