2.3. Version 9.12.3

The significant changes to the various parts of the compiler are listed in the following sections. See the migration guide on the GHC Wiki for specific guidance on migrating programs to this release.

2.3.1. Compiler

  • Fixed re-exports of MkSolo and MkSolo# (#25182)
  • Fixed the behavior of Language.Haskell.TH.mkName "FUN" (#25174)
  • Fixed miscompilation involving zonkEqTypes on AppTy/AppTy (#26256)
  • Fixed CprAnal to detect recursive newtypes (#25944)
  • Fixed specialisation of incoherent instances (#25883)
  • Fixed bytecode generation for tagToEnum# <LITERAL> (#25975)
  • Fixed panic with EmptyCase and RequiredTypeArguments (#25004)
  • Fixed tyConStupidTheta to handle PromotedDataCon (#25739)
  • Fixed unused import warnings for duplicate record fields (#24035)
  • Fixed lexing of "\^\" (#25937)
  • Fixed string gap collapsing (#25784)
  • Fixed lexing of comments in multiline strings (#25609)
  • Made unexpected LLVM versions a warning rather than an error (#25915)
  • Disabled -fprof-late-overloaded-calls for join points to avoid invalid transformations
  • Fixed bugs in integerRecipMod and integerPowMod (#26017)
  • Fixed naturalAndNot for NB/NS case (#26230)
  • Fixed ds_ev_typeable to use mkTrAppChecked (#25998)
  • Fixed GHC settings to always unescape escaped spaces (#25204)
  • Fixed issue with HasCallStack constraint caching (#25529)
  • Fixed archive member size writing logic in GHC.SysTools.Ar (#26120, #22586)

2.3.2. Runtime System

  • Fixed MessageBlackHole.link to always be a valid closure
  • Fixed handling of WHITEHOLE in messageBlackHole (#26205)
  • Fixed rts_clearMemory logic when sanity checks are enabled (#26011)
  • Fixed underflow frame lookups in the bytecode interpreter (#25750)
  • Fixed overflows and reentrancy in interpreter statistics calculation (#25756)
  • Fixed INTERP_STATS profiling code (#25695)
  • Removed problematic n_free variable from nonmovingGC (#26186)
  • Fixed incorrect format specifiers in era profiling
  • Improved documentation of SLIDE and PACK bytecode instructions
  • Eliminated redundant SLIDE x 0 bytecode instructions
  • Fixed compile issues on powerpc64 ELF v1

2.3.3. Code Generation

  • Fixed LLVM built-in variable predicate (was checking $llvm instead of @llvm)
  • Fixed linkage of built-in arrays for LLVM (#25769)
  • Fixed code generation for SSE vector operations (#25859)
  • Fixed bswap64 code generation on i386 (#25601)
  • Fixed sub-word arithmetic right shift on AArch64 (#26061)
  • Fixed LLVM vector literal emission to include type information
  • Fixed LLVM version detection
  • Fixed typo in padLiveArgs that caused segfaults (#25770, #25773)
  • Fixed constant-folding for Word->Float bitcasts
  • Added surface syntax for Word/Float bitcast operations
  • Fixed MOVD format in x86 NCG for unpackInt64X2#
  • Added -finter-module-far-jumps flag for AArch64
  • Fixed RV64 J instruction handling for non-local jumps (#25738)
  • Reapplied division by constants optimization
  • Fixed TNTC to set CmmProc entry_label properly (#25565)

2.3.4. Linker

  • Improved efficiency of proddable blocks structure (#26009)
  • Fixed Windows DLL loading to avoid redundant LoadLibraryEx calls (#26009)
  • Fixed incorrect use of break in nested for loop (#26052)
  • Fixed linker to not fail due to RTLD_NOW (#25943)
  • Dropped obsolete Windows XP compatibility checks

2.3.5. GHCi

  • Fixed mkTopLevEnv to use loadInterfaceForModule instead of loadSrcInterface (#25951)

2.3.6. Template Haskell

  • Added explicit export lists to all remaining template-haskell modules

2.3.7. Build system

  • Exposed all of Backtraces’ internals for ghc-internal (#26049)
  • Fixed cross-compilation configuration override (#26236)

2.3.8. Included libraries

The package database provided with this distribution also contains a number of packages other than GHC itself. See the changelogs provided with these packages for further change information.

Package Version Reason for inclusion
ghc 9.12.2.20250919 The compiler itself
Cabal-syntax 3.14.2.0 Dependency of ghc-pkg utility
Cabal 3.14.2.0 Dependency of ghc-pkg utility
Win32 2.14.1.0 Dependency of ghc library
array 0.5.8.0 Dependency of ghc library
base 4.21.1.0 Core library
binary 0.8.9.3 Dependency of ghc library
bytestring 0.12.2.0 Dependency of ghc library
containers 0.7 Dependency of ghc library
deepseq 1.5.1.0 Dependency of ghc library
directory 1.3.9.0 Dependency of ghc library
exceptions 0.10.10 Dependency of ghc and haskeline library
file-io 0.1.5 Dependency of directory library
filepath 1.5.4.0 Dependency of ghc library
ghc-boot-th 9.12.2.20250919 Internal compiler library
ghc-boot 9.12.2.20250919 Internal compiler library
ghc-compact 0.1.0.0 Core library
ghc-experimental 9.1202.0 Core library
ghc-heap 9.12.2.20250919 GHC heap-walking library
ghc-internal 9.1202.0 Core library
ghc-platform 0.1.0.0 Internal library
ghc-prim 0.13.0 Core library
ghci 9.12.2.20250919 The REPL interface
haskeline 0.8.2.1 Dependency of ghci executable
hpc 0.7.0.2 Dependency of hpc executable
integer-gmp 1.1 Core library
mtl 2.3.1 Dependency of Cabal library
os-string 2.0.8 Dependency of filepath library
parsec 3.1.18.0 Dependency of Cabal library
pretty 1.1.3.6 Dependency of ghc library
process 1.6.26.1 Dependency of ghc library
semaphore-compat 1.0.0 Dependency of ghc library
stm 2.5.3.1 Dependency of haskeline library
template-haskell 2.23.0.0 Core library
terminfo 0.4.1.7 Dependency of haskeline library
text 2.1.3 Dependency of Cabal library
time 1.14 Dependency of ghc library
transformers 0.6.1.2 Dependency of ghc library
unix 2.8.7.0 Dependency of ghc library
xhtml 3000.2.2.1 Dependency of haddock executable
haddock-api 2.30.0 Dependency of haddock executable
haddock-library 1.11.0 Dependency of haddock executable