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