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