2.3. Version 9.8.3

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

  • Fixed a bug that caused GHC to panic when using the AArch64 ncg and -fregs-graph on certain programs (#24941).
  • Fix invalid optimisation of Cmm programs on 32-bit platforms when targetting 64-bit targets (#24893 and #24700)
  • Improve float-out surrounding applications of runRW# (#25055)
  • Fix -fregs-graph crash when targetting AArch64 (#24941)
  • Fix native code generator miscompilation of signed sub-word arguments of FFI calls on x86 (#25018)
  • Fix code generation of foreign exports with more than 6 arguments when some are subword-width (#24314)
  • Fix recompilation avoidance behavior of -fwrite-if-simplified-core (#24656)
  • Fix linking error when TypeData and StrictData are in use (#24620)
  • Fix miscompilation by x86 native code generator due to shortcutting (#24507)
  • Fix uses of (~) and (@) being rejected in TemplateHaskell splices (#23748)

2.3.1.2. Runtime system

  • Significantly improve performance of code loading via dynamic linking (#23415)
  • Internal fragmentation incurred by the non-moving garbage collector’s allocator has been reduced for small objects. In one real-world application, this has reduced resident set size by about 20% and modestly improved run-time. See #23340. --nonmoving-dense-allocator-count=⟨count⟩ has been added to fine-tune this behaviour.
  • Fix runtime crash of the nonmoving garbage collector due to weak pointers with static key (#24492)
  • Allow heap profiling when the --nonmoving-gc is in use

2.3.1.3. GHCi

  • Fix a crash involving use of field selectors in GHCi (#25109)

2.3.1.4. JavaScript backend

  • Fix compiler crash involving rubbish literals (#25177, #24664)

2.3.1.5. base

  • Bump version to 4.19.2.0
  • Fix spurious closing of file descriptors after fork on platforms using the KQueue event manager backend (#24672)

2.3.1.6. Haddock

  • Fix source links to hyperlinked sources output (#24086)

2.3.1.7. Other Core Libraries

  • Bump stm to 2.5.3.1
  • Bump deepseq to 1.5.1.0
  • Bump array to 0.5.8.0
  • Bump Cabal to 3.10.3.0
  • Bump directory to 1.3.8.5
  • Bump process to 1.6.25.0

2.3.1.8. 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.4 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.4.0 Dependency of ghc library
array 0.5.8.0 Dependency of ghc library
base 4.19.2.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.1.0 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.301.0 Dependency of ghc library
ghc-boot-th 9.8.4 Internal compiler library
ghc-boot 9.8.4 Internal compiler library
ghc-compact 0.1.0.0 Core library
ghc-heap 9.8.4 GHC heap-walking library
ghc-prim 0.11.0 Core library
ghci 9.8.4 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.25.0 Dependency of ghc library
semaphore-compat 1.0.0 Dependency of ghc library
stm 2.5.3.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.6.0 Dependency of ghc library
xhtml 3000.2.2.1 Dependency of haddock executable