Version 9.10.3

The significant changes to the various parts of the compiler are listed in the following sections. See the migration guide on the GHC Wiki for specific guidance on migrating programs to this release.

Compiler

  • Don’t cache solved [W] HasCallStack constraints to avoid re-using old call-stacks instead of constructing new ones. (#25529)

  • Fix EmptyCase panic in tcMatches when case{} is checked against a function type preceded by invisible forall. (#25960)

  • Fix panic triggered by combination of case{} and forall t ->. (#25004)

  • Fix GHC.SysTools.Ar archive member size writing logic that was emitting wrong archive member sizes in headers. (#26120, #22586)

  • Use mkTrAppChecked in ds_ev_typeable to avoid false negatives for type equality involving function types. (#25998)

  • Fix bytecode generation for tagToEnum# <LITERAL>. (#25975)

  • Don’t report used duplicate record fields as unused. (#24035)

  • Propagate long distance info to guarded let binds for better pattern-match checking warnings. (#25749)

  • Prevent incorrect unpacking optimizations for GADTs with multiple constructors. (#25672)

  • Introduce a separate argument limit for forced specs via SPEC argument with warning when limit is exceeded. (#25197)

  • Fix compiler crash in the renamer with certain programs referencing out of scope record fields (#25056)

Build system and packaging

  • 9.10 hadrian can build with Cabal-3.12.1. (#25605)

  • GHC settings: always unescape escaped spaces to fix handling of spaces in executable paths. (#25204)

Native code generator backend

  • x86 NCG: Fix code generation of bswap64 on i386. (#25601)

  • AArch64 NCG: Fix sub-word arithmetic right shift by zero-extending sub-word values. (#26061)

  • NCG: AArch64 - Add -finter-module-far-jumps flag for modules with far jumps outside the current module. (#24648)

LLVM backend

  • LLVM: fix typo in padLiveArgs that was incorrectly computing too many padding registers causing segfaults. (#25770, #25773)

  • llvmGen: Fix linkage of built-in arrays to use Appending linkage instead of Internal. (#25769)

  • llvmGen: Fix built-in variable predicate to check for @llvm rather than $llvm.

WebAssembly backend

  • wasm: use primitive opcodes for fabs and sqrt operations.

Runtime system

  • rts: Fix a segfault involving STM (#26205).

  • rts: Implement WEAK EXTERNAL undef redirection by target symbol name.

  • rts: Handle API set symbol versioning conflicts.

  • rts: fix rts_clearMemory logic when sanity checks are enabled. (#26011)

  • rts/linker: Improve efficiency of proddable blocks structure by using binary search instead of linked lists for better performance with split sections. (#26009)

  • rts/linker/PEi386: Don’t repeatedly load DLLs by maintaining a hash-set of loaded DLL names. (#26009, #26052)

  • rts/linker: Don’t fail due to RTLD_NOW by attempting eager binding first, then reverting to lazy binding on failure. (#25943)

base library

  • base: Note strictness changes made in 4.16.0.0. (#25886)

  • Fix bugs in integerRecipMod and integerPowMod return values. (#26017)

  • Fix incorrect results for naturalAndNot (#26230)

ghc library

  • perf: Replace uses of genericLength with strictGenericLength to reduce time spent in ‘assembleBCOs’ and allocations. (#25706)

Build tools

  • get-win32-tarballs.py: List tarball files to be downloaded if we cannot find them. (#25929)

  • hp2ps Utilities.c: include stdlib.h instead of extern malloc and realloc.

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.10.3

The compiler itself

Cabal-syntax

3.12.1.0

Dependency of ghc-pkg utility

Cabal

3.12.1.0

Dependency of ghc-pkg utility

Win32

2.14.1.0

Dependency of ghc library

array

0.5.8.0

Dependency of ghc library

base

4.20.2.0

Core library

binary

0.8.9.3

Dependency of ghc library

bytestring

0.12.2.0

Dependency of ghc library

containers

0.7

Dependency of ghc library

deepseq

1.5.0.0

Dependency of ghc library

directory

1.3.8.5

Dependency of ghc library

exceptions

0.10.9

Dependency of ghc and haskeline library

filepath

1.5.4.0

Dependency of ghc library

ghc-boot-th

9.10.3

Internal compiler library

ghc-boot

9.10.3

Internal compiler library

ghc-compact

0.1.0.0

Core library

ghc-heap

9.10.3

GHC heap-walking library

ghc-prim

0.12.0

Core library

ghci

9.10.3

The REPL interface

haskeline

0.8.2.1

Dependency of ghci executable

hpc

0.7.0.2

Dependency of hpc executable

integer-gmp

1.1

Core library

mtl

2.3.1

Dependency of Cabal library

parsec

3.1.18.0

Dependency of Cabal library

pretty

1.1.3.6

Dependency of ghc library

process

1.6.26.1

Dependency of ghc library

stm

2.5.3.1

Dependency of haskeline library

template-haskell

2.22.0.0

Core library

terminfo

0.4.1.7

Dependency of haskeline library

text

2.1.3

Dependency of Cabal library

time

1.12.2

Dependency of ghc library

transformers

0.6.1.1

Dependency of ghc library

unix

2.8.7.0

Dependency of ghc library

xhtml

3000.2.2.1

Dependency of haddock executable