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)
Fix multiple bugs in name resolution of subordinate import lists related to type namespace specifiers and hiding clauses. (#22581, #25983, #25984, #25991)
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)
Build system and packaging¶
Native code generator backend¶
LLVM backend¶
WebAssembly backend¶
wasm: use primitive opcodes for fabs and sqrt operations.
Runtime system¶
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¶
ghc library¶
perf: Replace uses of genericLength with strictGenericLength to reduce time spent in ‘assembleBCOs’ and allocations. (#25706)
Build tools¶
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.2.20250804 | The compiler itself |
Cabal-syntax |
3.12.1.0 | Dependency of |
Cabal |
3.12.1.0 | Dependency of |
Win32 |
2.14.1.0 | Dependency of |
array |
0.5.8.0 | Dependency of |
base |
4.20.2.0 | Core library |
binary |
0.8.9.3 | Dependency of |
bytestring |
0.12.2.0 | Dependency of |
containers |
0.7 | Dependency of |
deepseq |
1.5.0.0 | Dependency of |
directory |
1.3.8.5 | Dependency of |
exceptions |
0.10.9 | Dependency of |
filepath |
1.5.4.0 | Dependency of |
ghc-boot-th |
9.10.2.20250804 | Internal compiler library |
ghc-boot |
9.10.2.20250804 | Internal compiler library |
ghc-compact |
0.1.0.0 | Core library |
ghc-heap |
9.10.2.20250804 | GHC heap-walking library |
ghc-prim |
0.12.0 | Core library |
ghci |
9.10.2.20250804 | The REPL interface |
haskeline |
0.8.2.1 | Dependency of |
hpc |
0.7.0.2 | Dependency of |
integer-gmp |
1.1 | Core library |
mtl |
2.3.1 | Dependency of |
parsec |
3.1.18.0 | Dependency of |
pretty |
1.1.3.6 | Dependency of |
process |
1.6.26.1 | Dependency of |
stm |
2.5.3.1 | Dependency of |
template-haskell |
2.22.0.0 | Core library |
terminfo |
0.4.1.7 | Dependency of |
text |
2.1.3 | Dependency of |
time |
1.12.2 | Dependency of |
transformers |
0.6.1.1 | Dependency of |
unix |
2.8.7.0 | Dependency of |
xhtml |
3000.2.2.1 | Dependency of |