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

2.3.1. 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)

2.3.2. 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)

2.3.3. 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)

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

2.3.5. WebAssembly backend

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

2.3.6. 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)

2.3.7. 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)

2.3.8. ghc library

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

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

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