diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Revision history for large-generics
 
+## 0.2.3 -- 2025-07-19
+
+* Support ghc up to 9.12
+
 ## 0.2.2 -- 2024-05-30
 
 * Support ghc 9.6 (and drop ghc <= 8.8)
diff --git a/large-generics.cabal b/large-generics.cabal
--- a/large-generics.cabal
+++ b/large-generics.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               large-generics
-version:            0.2.2
+version:            0.2.3
 synopsis:           Generic programming API for large-records and large-anon
 description:        The large-generics package offers a style of generic
                     programming inspired by generics-sop, but optimized for
@@ -12,8 +12,14 @@
 author:             Edsko de Vries
 maintainer:         edsko@well-typed.com
 category:           Generics
-extra-source-files: CHANGELOG.md
-tested-with:        GHC ==8.10.7 || ==9.2.8 || ==9.4.8 || ==9.6.4
+extra-doc-files:    CHANGELOG.md
+tested-with:        GHC ==8.10.7
+                    GHC ==9.2.8
+                    GHC ==9.4.8
+                    GHC ==9.6.7
+                    GHC ==9.8.4
+                    GHC ==9.10.2
+                    GHC ==9.12.2
 
 library
   exposed-modules:
@@ -39,18 +45,16 @@
   ghc-options:
       -Wall
       -Wredundant-constraints
+      -Wunused-packages
   hs-source-dirs:
       src
   build-depends:
-      base         >= 4.14  && < 4.19
+      base         >= 4.14  && < 4.22
     , aeson        >= 1.4.4 && < 2.3
     , deepseq      >= 1.4.4 && < 1.6
     , generics-sop >= 0.5   && < 0.6
     , sop-core     >= 0.5   && < 0.6
-    , primitive    >= 0.8   && < 0.10
-
-  if impl(ghc >= 8.10)
-    ghc-options: -Wunused-packages
+    , primitive    >= 0.7.3 && < 0.10
 
 test-suite test-large-generics
   type:
@@ -74,6 +78,7 @@
   ghc-options:
       -Wall
       -Wredundant-constraints
+      -Wunused-packages
   hs-source-dirs:
       test
   build-depends:
