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.20251110

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.20251110

Internal compiler library

ghc-boot

9.12.2.20251110

Internal compiler library

ghc-compact

0.1.0.0

Core library

ghc-experimental

9.1202.0

Core library

ghc-heap

9.12.2.20251110

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.20251110

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