diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,16 @@
+0.16.1.2
+========
+
+_Andreas Abel, 2023-04-06_
+
+- Support unix-2.8
+- Tested with GHC 7.8 - 9.6.1
+
 0.16.1.1
 ========
 
+_Andreas Abel, 2022-06-01_
+
 - Adapt to changes in hedgehog-1.1 related to barbies
 - Support mtl-2.3
 - Tested with GHC 7.8 - 9.2.3
@@ -8,10 +18,19 @@
 0.16.1
 ======
 
+_David Fox, 2022-02-18_
+
  - Support GHC-9.0.2, template-haskell 2.18
 
+0.16.0.1
+========
+
+_Jeremy Shaw, 2020-05-19_
+
 0.16.0
 ======
+
+_Jeremy Shaw, 2019-11-14_
 
  - support network-3.x and ghc-8.8.1
  - Fix tests
diff --git a/acid-state.cabal b/acid-state.cabal
--- a/acid-state.cabal
+++ b/acid-state.cabal
@@ -1,5 +1,5 @@
 Name:                acid-state
-Version:             0.16.1.1
+Version:             0.16.1.2
 Synopsis:            Add ACID guarantees to any serializable Haskell data structure.
 Description:         Use regular Haskell data structures as your database and get stronger ACID guarantees than most RDBMS offer.
 Homepage:            https://github.com/acid-state/acid-state
@@ -12,7 +12,9 @@
 Cabal-version:       >=1.10
 
 tested-with:
-  GHC == 9.2.3
+  GHC == 9.6.1
+  GHC == 9.4.4
+  GHC == 9.2.7
   GHC == 9.0.2
   GHC == 8.10.7
   GHC == 8.8.4
@@ -69,7 +71,7 @@
                        mtl,
                        network < 3.2,
                        network-bsd,
-                       template-haskell < 2.19,
+                       template-haskell < 2.21,
                        th-expand-syns
 
   if os(windows)
@@ -136,6 +138,7 @@
   other-modules:       Data.Acid.KeyValueStateMachine
                        Data.Acid.StateMachineTest
   default-language:    Haskell2010
+  default-extensions:  TypeOperators
 
   if flag(skip-state-machine-test)
     buildable: False
@@ -195,32 +198,33 @@
     system-fileio == 0.3.*,
     system-filepath,
     -- perRunEnv was added in criterion-1.2.0.0
-    criterion >= 1.2.0.0 && < 1.6,
+    criterion >= 1.2.0.0 && < 1.7,
     mtl,
     base,
     acid-state
   default-language:
     Haskell2010
   default-extensions:
-    PatternGuards
+    -- keep this list alphabetically sorted!
+    ConstraintKinds
+    DataKinds
+    DefaultSignatures
+    DeriveDataTypeable
+    EmptyDataDecls
+    FlexibleContexts
+    FlexibleInstances
     GADTs
-    StandaloneDeriving
     MultiParamTypeClasses
-    ScopedTypeVariables
-    FlexibleInstances
-    TypeFamilies
-    TypeOperators
-    FlexibleContexts
     NoImplicitPrelude
-    EmptyDataDecls
-    DataKinds
     NoMonomorphismRestriction
+    OverloadedStrings
+    PatternGuards
     RankNTypes
-    ConstraintKinds
-    DefaultSignatures
-    TupleSections
+    ScopedTypeVariables
+    StandaloneDeriving
     TemplateHaskell
-    OverloadedStrings
-    DeriveDataTypeable
+    TupleSections
+    TypeFamilies
+    TypeOperators
   ghc-options:
     -O2
diff --git a/src-unix/FileIO.hs b/src-unix/FileIO.hs
--- a/src-unix/FileIO.hs
+++ b/src-unix/FileIO.hs
@@ -1,13 +1,17 @@
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE ForeignFunctionInterface #-}
+
 module FileIO(FHandle,open,write,flush,close) where
-import System.Posix(Fd(Fd),
-                    openFd,
-                    fdWriteBuf,
-                    closeFd,
-                    OpenMode(WriteOnly),
-                    defaultFileFlags,
-                    stdFileMode
-                   )
+
+import System.Posix
+  ( Fd(Fd), openFd, fdWriteBuf, closeFd
+  , OpenMode(WriteOnly)
+#if MIN_VERSION_unix(2,8,0)
+  , OpenFileFlags(creat)
+#endif
+  , defaultFileFlags
+  , stdFileMode
+  )
 import Data.Word(Word8,Word32)
 import Foreign(Ptr)
 import Foreign.C(CInt(..))
@@ -16,7 +20,11 @@
 
 -- should handle opening flags correctly
 open :: FilePath -> IO FHandle
+#if !MIN_VERSION_unix(2,8,0)
 open filename = fmap FHandle $ openFd filename WriteOnly (Just stdFileMode) defaultFileFlags
+#else
+open filename = fmap FHandle $ openFd filename WriteOnly defaultFileFlags{ creat = Just stdFileMode }
+#endif
 
 write :: FHandle -> Ptr Word8 -> Word32 -> IO Word32
 write (FHandle fd) data' length = fmap fromIntegral $ fdWriteBuf fd data' $ fromIntegral length
diff --git a/test-state/OldStateTest1/events-0000000681.log b/test-state/OldStateTest1/events-0000000681.log
deleted file mode 100644
--- a/test-state/OldStateTest1/events-0000000681.log
+++ /dev/null
diff --git a/test-state/OldStateTest2/events-0000000149.log b/test-state/OldStateTest2/events-0000000149.log
deleted file mode 100644
--- a/test-state/OldStateTest2/events-0000000149.log
+++ /dev/null
diff --git a/test-state/OldStateTest3/events-0000000100.log b/test-state/OldStateTest3/events-0000000100.log
deleted file mode 100644
--- a/test-state/OldStateTest3/events-0000000100.log
+++ /dev/null
