2.3. Version 9.6.3

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.3.1. Significant Changes

Issues fixed in this release include:

2.3.1.1. Compiler

  • Disable Polymorphic Specialisation by default. It was discovered that Polymorphic Specialisation as currently implemented in GHC can lead to hard to diagnose bugs resulting in incorrect runtime results. Users wishing to use this optimisation despite the caveats will now have to explicitly enable the new -fpolymorphic-specialisation flag. For more details see #23469 as well as #23109, #21229, #23445.
  • Fix a panic with the typechecker, reporting a type error instead of panicing on certain programs (#22707).
  • Fix a bug preventing temporary directories created by GHC from being cleaned up after compilation (#22952).
  • Fix the behaviour of the -keep-tmp-files when used in a OPTIONS_GHC pragma (#23339).
  • Fix a bug with certain warnings being swallowed when -fdefer-diagnostics is enabled (#23305).
  • Fix a bug leading to incorrect “Redundant Constraint” warnings (#23323, #23143).
  • Fix the behaviour of -fsplit-sections on Windows (#22834).
  • Fix some segfaults affecting users of UnliftedDatatypes (#23146, #23231).
  • Fix compiler panics with certain RULE pragmas (#23208, #22761).
  • Fix a bug with .hie files containing spurious references to generated functions in files with partial field selectors (#23492).
  • Fix a specialiser bug leading to compiler panics (#23567).
  • Fix a bug preventing using the command line to compile .cmm files to assembly (#23610).
  • Fix a compiler panic on certain programs with typed holes (#22684).
  • Fix some simplifier panics due to incorrect scope tracking (#23630).
  • Ensure array read operations have proper memory barriers (#23541).
  • Make type equality (~) checks in the presence of quantified contrains more robust to argument ordering (#23333).
  • Fix a number of bugs having to do with default representation polymorphic type variables (#23153, #23154, #23176).
  • Fix the behaviour of the MulMayOflo operation on x86 and aarch64 (#23721).
  • Make the recompilation check more robust when code generation flags are changed (#23369).
  • With the aarch64 backend, fix a bug arising from lack of zero-extension for 8/16 bit add/sub with immediate (#23749).
  • Fix a bug in the STG rewriter leading to excess allocations in certain circumstances (#23783).
  • Fix a typechecker bug leading to incorrect multiplicity checking with -XLinearTypes and -XMultiWayIf (#23814).
  • Improve zonking behavior for defaulting plugins (#23821).
  • Fix a recompilation checking bug impacting the relinking step, where we failed to relink if transitive dependencies were changed (#23724).
  • Fix a code generator panic with unboxed tuples (#23914).
  • Fix a simplifier panic due to incorrect eta reduction of a join point (#23922).
  • Fix a simplifer bug leading to -dcore-lint failures (#23938).
  • Add -finfo-table-map-with-fallback and -finfo-table-map-with-stack flags for info table profiling (#23702).
  • Improve compile time and code generation performance when -finfo-table-map is enabled (#23103).

2.3.1.2. Runtime system

  • Performance improvements for the ELF linker (#23464).
  • Fix warnings with clang 14.0.3 (#23561).
  • Prevent some segfaults by ensuring that pinned allocations respect block size (#23400).
  • Prevent runtime crashes in statically linked GHCi sessions on AArch64 by providing some missing symbols from the RTS linker (#22012).
  • Improve bounds checking with -fcheck-prim-bounds (#21054).
  • On Windows, ensure reliability of IO manager shutdown (#23691).
  • Fix a bug with the GHC linker on windows (#22941).
  • Properly escape characters when writing JSON profiles (-pJ) (#23924).

2.3.1.3. Build system and packaging

  • Make hadrian more robust in the presence of symlinks (#22451).
  • Allow building documentation with sphinx versions older than 4.0 along with older versions of python (#23807, #23818).
  • Also build vanilla (non-static) alpine bindists (#23349, #23828).

2.3.1.4. Core libraries

  • Bump base to 4.18.1.0
  • base: Restore``mingwex`` dependency on Windows (#23309).
  • Bump bytestring to 0.11.5.2
  • Bump filepath to 1.4.100.4
  • Bump haddock to 2.29.1

2.3.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.4 The compiler itself
Cabal-syntax 3.10.1.0 Dependency of ghc-pkg utility
Cabal 3.10.1.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.0 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.1 Dependency of ghc library
exceptions 0.10.7 Dependency of ghc and haskeline library
filepath 1.4.200.1 Dependency of ghc library
ghc-boot-th 9.6.4 Internal compiler library
ghc-boot 9.6.4 Internal compiler library
ghc-compact 0.1.0.0 Core library
ghc-heap 9.6.4 GHC heap-walking library
ghc-prim 0.10.0 Core library
ghci 9.6.4 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.4 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.17.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