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