2.6. Version 9.6.6

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

The LLVM backend of this release is to be used with LLVM 11, 12, 13, 14 or 15.

2.6.1. Significant Changes

Issues fixed in this release include:

2.6.1.1. Compiler

  • Fix a bug in the NCG that could lead to incorrect runtime results due to erroneously removing a jump instruction (#24507).
  • Fix a bug leading to runtime exponential in the size of the package dependency graph when checking if a multiple home unit session satisfied the closure property.
  • Fix a bug arising from interactions between GHC and cabal in how they call the linker to merge objects, resulting in linker errors in certain situations (#22210).
  • Improve the algorithm used to detect missing home modules for the purpose of emitting warnings, making it no longer quadratic (#24778).
  • Ensure -ddump-splices doesn’t omit required parentheses when printing pattern signatures (#24837).
  • Fix a possible alignment confusion in the code generator (#24930).
  • Fix sign hints for the PowerPC NCG in C foreign calls (#23034).
  • Fix a simplifier bug that could lead to compiler panics in certain sitations due to incorrect eta expansion (#24718).
  • Fix a segfault in the bytecode interpreter due to incorrect constructor tagging (#24870).

2.6.1.2. Runtime system

  • Fixes for various warnings emitted by UndefinedBehaviorSanitizer.
  • Fix an argument ordering warning for stgCallocBytes (#24828).
  • Fix a GC bug that manifests in certain situations when byte code objects end up on the mutable list (#23375).

2.6.1.3. Build system and packaging

  • Allow hadrian to be bootstrapped using GHC 9.6 and Cabal 3.10.3 (#24694).
  • The no_dynamic_libs flavour transformer now doesn’t need users to also explicitly disable building a dynamic GHC.

2.6.1.4. Core libraries

  • Bump directory to 1.3.8.5

2.6.1.5. 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.6.6 The compiler itself
Cabal-syntax 3.10.3.0 Dependency of ghc-pkg utility
Cabal 3.10.3.0 Dependency of ghc-pkg utility
Win32 2.13.3.0 Dependency of ghc library
array 0.5.6.0 Dependency of ghc library
base 4.18.2.1 Core library
binary 0.8.9.1 Dependency of ghc library
bytestring 0.11.5.3 Dependency of ghc library
containers 0.6.7 Dependency of ghc library
deepseq 1.4.8.1 Dependency of ghc library
directory 1.3.8.5 Dependency of ghc library
exceptions 0.10.7 Dependency of ghc and haskeline library
filepath 1.4.300.1 Dependency of ghc library
ghc-boot-th 9.6.6 Internal compiler library
ghc-boot 9.6.6 Internal compiler library
ghc-compact 0.1.0.0 Core library
ghc-heap 9.6.6 GHC heap-walking library
ghc-prim 0.10.0 Core library
ghci 9.6.6 The REPL interface
haskeline 0.8.2.1 Dependency of ghci executable
hpc 0.6.2.0 Dependency of hpc executable
integer-gmp 1.1 Core library
libiserv 9.6.6 Internal compiler library
mtl 2.3.1 Dependency of Cabal library
parsec 3.1.16.1 Dependency of Cabal library
pretty 1.1.3.6 Dependency of ghc library
process 1.6.19.0 Dependency of ghc library
stm 2.5.1.0 Dependency of haskeline library
template-haskell 2.20.0.0 Core library
terminfo 0.4.1.6 Dependency of haskeline library
text 2.0.2 Dependency of Cabal library
time 1.12.2 Dependency of ghc library
transformers 0.6.1.0 Dependency of ghc library
unix 2.8.4.0 Dependency of ghc library
xhtml 3000.2.2.1 Dependency of haddock executable