2.2. Version 9.8.2

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

Issues fixed in this release include:

2.2.1.1. Compiler

  • Fix a recompilation checking bug impacting the relinking step, where we failed to relink if transitive dependencies were changed (#23724).
  • Fix a renamer bug where certain styles of import lists for associated type families would not be processed correctly (#24084).
  • Fix a typechecker bug that could lead to non-termination in certain situations (#24134).
  • Support code points greater than 2^16 in toJSString when using the JS backend (#23628).
  • Fix a code generation bug on the JS backend involving tuple constructors (#23659).
  • Fix a code generator panic when compiling code using FMA primops (#24160).
  • Fix a bug causing suboptimal error messages for certain invalid cyclic module graphs with hs-boot files (#24196, #24275).
  • Fix an incorrect assertion in the simplifier (#23862).
  • Fix a bug causing compiler panics with certain package databases involving unusable units and module reexports (#21097, #16996, #11050).
  • Fix some memory leaks in GHCi that manifest on reloads (#24107, #24118).
  • Fix a GHCi bug where a failure in the :add command would cause the process to exit (#24115).
  • Align objects in the data section properly when using the LLVM backend (#24163).
  • Fix a simplifier panic when simplifying certain unfoldings (#24242).
  • Fix a typechecker bug where TYPE and CONSTRAINT were treated as apart (#24279).
  • Allow template haskell code to look up record fields (#24293).
  • 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).
  • Fix a bug in the check for unused type variables in type class instances (#23768).
  • Fix a panic when typechecking GADT data family instances with unused variables (#23784).
  • Improve error message for unused variables in RHS of data family instance (#23778).
  • Fix a compiler panic due to mismatches between .hs and .hs-boot files (#16127).
  • Improve error message for unused variables type family instances (#23734).
  • Fix a type checker crash on certain programs involving implicitly scoped type variables (#24083).
  • Fix a bug where certain warning flags were not recognised (#24071).
  • Fix a bug involving the miscompilation of certain loops (#24295).
  • Produce FMA instructions even if -mfma is not set on AArch64 (#24311).
  • Fix a bug leading to some template haskell splices failing on being reloaded into GHCi due to not clearing the interactive context properly (#23405).
  • Fix a bug where we could silently truncate 64 bit values to 32 bit on 32 bit architectures.
  • Don’t produce invalid opcode for FMA instruction on LLVM (#24223).
  • Fix a warning about non-existent +fma flag on LLVM (#24379).
  • Ensure we give nested documentation comments accurate source spans (#24378).
  • Ensure we don’t emit shadowing warnings for NoFieldSelector fields (#24381).
  • Fix several bugs involving free variables in breakpoints (#23612, #23607, #23998, #23666).
  • Fix a bug preventing some specialisations from firing (#24370).
  • On x86, Don’t require -mavx2 when using 256-bit floating-point SIMD primitives (#24222).
  • Fix a bug preventing haddock from computing the correct links (#24294).

2.2.1.2. Runtime system

  • Ensure we respect maximum event length and don’t overflow into program memory (#24197, #24287).
  • Ensure concurrent thunk update is sound (#23185).

2.2.1.3. Build system and packaging

  • Ensure we use the right otool and install_name_tool on Darwin (#24211).
  • Ensure we use the correct bindist name for the test artifact when generating release ghcup metadata (#24268).
  • Ensure we handle CXX and CC flags involving standard flags correctly with new autotools versions (#24324).
  • Ensure we correctly set --target when configuring the linker (#24414).
  • Suppress duplicate library warnings on new macOS linker (#24167, #24168).
  • Fix a bug where -DNOSMP wasn’t being passed to the C compiler even if the target doesn’t support SMP (#24082).
  • Don’t assume the locale is *.UTF-8 in hadrian.

2.2.1.4. Core libraries

  • Fix a bug in ghc-bignum where usage of bigNatIsPowerOf2 might result in out of bounds access (#24066).
  • Bump base to 4.19.1.0
  • Bump filepath to 1.4.200.1
  • Bump unix to 2.8.4.0
  • Bump bytestring to 0.12.1.0
  • Bump text to 2.1.1

2.2.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.8.2 The compiler itself
Cabal-syntax 3.10.2.0 Dependency of ghc-pkg utility
Cabal 3.10.2.0 Dependency of ghc-pkg utility
Win32 2.13.4.0 Dependency of ghc library
array 0.5.6.0 Dependency of ghc library
base 4.19.1.0 Core library
binary 0.8.9.1 Dependency of ghc library
bytestring 0.12.1.0 Dependency of ghc library
containers 0.6.8 Dependency of ghc library
deepseq 1.5.0.0 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.8.2 Internal compiler library
ghc-boot 9.8.2 Internal compiler library
ghc-compact 0.1.0.0 Core library
ghc-heap 9.8.2 GHC heap-walking library
ghc-prim 0.11.0 Core library
ghci 9.8.2 The REPL interface
haskeline 0.8.2.1 Dependency of ghci executable
hpc 0.7.0.0 Dependency of hpc executable
integer-gmp 1.1 Core library
mtl 2.3.1 Dependency of Cabal library
parsec 3.1.17.0 Dependency of Cabal library
pretty 1.1.3.6 Dependency of ghc library
process 1.6.18.0 Dependency of ghc library
semaphore-compat 1.0.0 Dependency of ghc library
stm 2.5.2.1 Dependency of haskeline library
template-haskell 2.21.0.0 Core library
terminfo 0.4.1.6 Dependency of haskeline library
text 2.1.1 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