2.5. Version 9.12.5

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.5.1. Compiler

This release of GHC supports LLVM versions 13 through 19.

  • When there are no remaining argument demands, bottoming applications are now being trimmed to avoid panics (#27261)

  • Implement version 2 of the ghc semaphore protocol for GHC’s -jsem jobserver on Linux and other POSIX platforms (#25087, #27253)

  • several improvements to the pattern match checker (#25926, #27124)

  • Avoid putting ticks around coercions (#27121)

  • Let the driver recognise .dyn_o as valid object files to allow plugins with this suffix to run. (#24486)

  • Don’t move ticks in between a join point and its jumps (#26929, #26642, #26693)

  • Remove StgAsyncResult to fix crash/leaks (#26341)

  • ffi: collapse void pointer chains in capi wrappers (#26852)

  • aarch64: fix MOVK reguUsageOfInstr to mark dst as both read and written (#26980)

  • Fix dsuppress-uniques for free variables in demand signatures (#27106)

  • demand analysis: take stable unfoldings into account when determining argument demands (#26416)

2.5.2. Runtime System

  • prevent the WinIO manager from swallowing exceptions in overlapped IO (#27283)

  • several fixes for blackholes (#27261)

  • add --optimistic-linking flag which binds unknown symbols in the runtime linker to 0xDEADBEEF instead of failing (#25240)

  • add a few missing i386 relocations in the rts linker

  • handle heap allocation failures in I/O primops (#24105)

  • small fixes to allow more configurations to succesfully build (debugging RTS with optimizations)

  • fix race conditions between flushEventLog acquiring/releasing the state_change mutex

  • align stack to 64-byte boundary in StgRun on x65 (#26595, ghc-ticket:26822)

  • carefully SLIDE off the end of a stack chunk (#27001)

  • Fix missing profiling header for origin_thunk frame (#27007)

2.5.3. Code Generation

  • aarch64: use ASR not LSR for MO_U_Shr at W8/W16 (#26979)

  • fix finalizers on multiple platforms (#27072)

2.5.4. Bytecode Compiler

2.5.5. base library

2.5.6. ghc-internal library

  • update to unicode 17.0.0

2.5.7. ghc-experimental library

2.5.8. ghc-pkg

2.5.9. ghc-toolchain

2.5.10. Packaging and Build System

  • bumped process submodule to 1.6.29.0

  • bumped semaphore-compat submodule to 2.0.0

  • accept happy version 2.2

  • hadrian: don’t include package hash in haddock library

  • configure: fix check for --target support in stage0 CC (#26999)

2.5.11. Wasm Backend

  • ensure post-linker output is synchronous ESM (#27257)

2.5.12. 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.4.20260606

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

Dependency of ghc library

array

0.5.8.0

Dependency of ghc library

base

4.21.3.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.10.1

Dependency of ghc library

exceptions

0.10.12

Dependency of ghc and haskeline library

file-io

0.1.6

Dependency of directory library

filepath

1.5.5.0

Dependency of ghc library

ghc-boot-th

9.12.4.20260606

Internal compiler library

ghc-boot

9.12.4.20260606

Internal compiler library

ghc-compact

0.1.0.0

Core library

ghc-experimental

9.1204.0

Core library

ghc-heap

9.12.4.20260606

GHC heap-walking library

ghc-internal

9.1204.0

Core library

ghc-platform

0.1.0.0

Internal library

ghc-prim

0.13.0

Core library

ghci

9.12.4.20260606

The REPL interface

haskeline

0.8.4.1

Dependency of ghci executable

hpc

0.7.0.2

Dependency of hpc executable

integer-gmp

1.1

Core library

mtl

2.3.2

Dependency of Cabal library

os-string

2.0.10

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

Dependency of ghc library

semaphore-compat

2.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.4

Dependency of Cabal library

time

1.14

Dependency of ghc library

transformers

0.6.3.0

Dependency of ghc library

unix

2.8.8.0

Dependency of ghc library

xhtml

3000.2.2.1

Dependency of haddock executable

haddock-api

2.32.0

Dependency of haddock executable

haddock-library

1.11.0

Dependency of haddock executable