diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,28 @@
+## 0.1.3 (2025-02-17)
+
+### Improvements
+
+- Allow building with GHC-9.8
+
+## 0.1.2 (2023-03-23)
+
+### Features / Improvements
+
+- Allow building with text-2.0 (and thus GHC-9.4)
+- Decode names referencing integer literal template parameters
+- Decode names of static function definitions
+- Improve pretty printing for templated constructors and destructors
+- Improve pretty printing for template arguments
+- Decode names of const declarations for non-builtin datatypes
+- Replace some calls to `error` with structured exceptions
+
+### Fixes
+
+- More strictly parse substitution IDs
+
+## 0.1.1.1
+
+- Bump bounds on boomerang to force a newer version
+
+  Some builds (especially under CI) were picking up older versions of boomerang
+  that do not compile with modern versions of GHC
diff --git a/itanium-abi.cabal b/itanium-abi.cabal
--- a/itanium-abi.cabal
+++ b/itanium-abi.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name: itanium-abi
-version: 0.1.2
+version: 0.1.3
 synopsis: An implementation of name mangling/demangling for the Itanium ABI
 license: BSD3
 license-file: LICENSE
@@ -10,13 +10,14 @@
 maintainer: tristan@ravit.ch
 category: Development
 build-type: Simple
-cabal-version: >=1.10
+cabal-version: 1.18
 tested-with: GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4
 description: Currently supports everything in the standard but templates
              and C++11.  Support for these will be added.  Includes a name
              mangler, demangler, and pretty printer.
 -- copyright:
 extra-source-files: tests/test-cases.txt
+extra-doc-files:    CHANGELOG.md
 
 library
   default-language: Haskell2010
@@ -25,7 +26,7 @@
   build-depends: base >= 4 && < 5,
                  boomerang >= 1.4.5.6 && < 1.5,
                  exceptions >= 0.10 && < 0.11,
-                 text >= 0.11 && < 2.1,
+                 text >= 0.11 && < 2.2,
                  transformers,
                  unordered-containers >= 0.2.3.0 && < 0.3
   exposed-modules: ABI.Itanium
diff --git a/src/ABI/Itanium/Pretty.hs b/src/ABI/Itanium/Pretty.hs
--- a/src/ABI/Itanium/Pretty.hs
+++ b/src/ABI/Itanium/Pretty.hs
@@ -608,14 +608,16 @@
       -- stub will never be referenced because function types aren't
       -- first-class
       ts' <- mapM showType ts
-      if null ts'
-        then return()
-        else recordSubstitution'
-             $ mconcat [ head ts'
-                       , fromString " ("
-                       , mconcat $ intersperse (fromString ", ") $ tail ts'
-                       , singleton ')'
-                       ]
+      case ts' of
+        [] ->
+          return()
+        ty:tys ->
+          recordSubstitution'
+          $ mconcat [ ty
+                    , fromString " ("
+                    , mconcat $ intersperse (fromString ", ") tys
+                    , singleton ')'
+                    ]
       r <- showFunctionType ts
       recordSubstitution $! r
     PointerToType t' -> do
