2.4. Version 9.12.4¶
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.4.1. Compiler¶
Fixed a bug in CSE where the in-scope set was not properly maintained (#25468)
Fixed
matchExpectedFunTysto usetcMkScaledFunTys(#26277)Fixed
parenBreakableListusage inppHsContextfor better pretty-printing of contextsImproved error messages for bad record updates to allow out-of-scope data constructors (#26391)
Fixed a missing InVar->OutVar lookup in
SetLevels(#26681)Fixed split sections for the LLVM backend (#26770)
Don’t re-use stack slots for growing registers (#26668)
Fixed cast worker/wrapper incorrectly firing on INLINE functions (#26903)
Fixed non-determinism in
TyLitMapby using deterministic maps for strings (#26846)Fixed non-determinism in
WithHsDocIdentifiersbinary instance by using a stable sort (#26858)Added
-mcmodel=mediummodule flag to generated LLVM IR on LoongArchPass the
mcmodel=mediumparameter to CC via GHC on LoongArchPass the
+evex512attribute to LLVM 18+ when-mavx512fis set (#26410)Improved error handling in
getPackageArchives(#26383)Fixed a shadowing bug in implicit parameters (#26451)
Fixed a subtle bug in
GHC.Core.Utils.mkTickthat could generate type-incorrect code (#26772)Fixed a long-standing interaction between ticks and casts in
Eliminate Identity CasesNamedDefaults: require the class to be standard or have an in-scope default declaration (#25775, #25778)NamedDefaults: allow named defaults for poly-kinded unary classes such asTypeable(#25882)Improved compiler performance by making
OccAnalstricter, reducing residency and improving compile timesFixed two critical Cmm register bugs affecting spill/reload behavior with vector types (#26542, #26550)
Fixed the order of spill/reload instructions in the native code generator (#26537)
Fixed five register allocation bugs relating to register formats, preventing data corruption when spilling and reloading vector registers (#26411, #26526)
Fixed PPC NCG shift right operations at smaller than word sizes (#26519)
Fixed associated type family changes not triggering recompilation in dependent modules (#26183)
Fixed data family instance type class instance changes not triggering recompilation (#26705)
Fixed negative type literals bypassing the renamer check via
RequiredTypeArguments, causing the compiler to hang (#26861)Fixed scoping errors in the type-class specialiser (#26682)
Fixed sign extension and casting for LLVM bit manipulation operations (#20645, #26109)
Fixed LLVM linking of Intel BMI intrinsics
pdep{8,16}andpext{8,16}(#26065)
2.4.2. Runtime System¶
Fixed a deadlock with eventlog flush interval and RTS shutdown (#26573)
Handle 16-bit overflow of ELF section header string table (#26603)
Fixed object file format detection in
loadArchive(#26630)Use
INFO_TABLE_CONSTRforstg_dummy_ret_closure(#26745)Fixed lost wakeups in
threadPausedfor threads blocked on black holes (#26324)Fixed
stg_AP_STACKto push the correct update frame (#26324)Fixed potential loop in heap reservation logic on certain kernels (#26151)
The runtime linker now supports COMMON symbols (#6107)
Don’t use CAS without
PARALLEL_GConSwitch prim to use modern atomic compiler builtins (#26729)
Removed obsolete
CC_SUPPORTS_TLS,HAS_VISIBILITY_HIDDEN,COMPILING_WINDOWS_DLL, and__GNUC__-related logicRemoved the
-O3pragma hack inHash.cRemoved unnecessary Cabal flags
2.4.3. Code Generation¶
2.4.4. Bytecode Compiler¶
Use 32 bits for breakpoint index (#26325)
2.4.5. base library¶
Expose
Backtracesconstructor and fields (#26049)Added
@sinceannotation toSystem.Info.fullCompilerVersion(#26973)Store
StackTraceandStackSnapshotinBacktraces, deferring decoding until displayEvaluate backtraces for
errorexceptions at the moment they are thrown (CLC proposal #383, #26751)
2.4.6. ghc-experimental library¶
Fixed
GHC.Exception.Backtrace.ExperimentalmoduleAdded ability to customise the collection of exception annotations
2.4.7. ghc-pkg¶
Removed
traceIdfromghc-pkgexecutable
2.4.8. ghc-toolchain¶
Dropped
ld.goldfrom merge object command
2.4.9. Packaging and Build System¶
Added
hpcto release scriptUse a response file to invoke GHC when analysing dependencies
Fixed
GHC.Platform.Hostgeneration for cross stage1 (#26449)Fixed runtime error during
users_guidebuild with Sphinx 9.1.0 (#26810)Added
ghc-{experimental,internal}.cabalto the list of dependencies of the doc target (#26738)Updated
libffito 3.5.2Bumped
directorysubmodule to 1.3.10.1Bumped
exceptionssubmodule to 0.10.12Bumped
file-iosubmodule to 0.1.6Bumped
filepathsubmodule to 1.5.5.0Bumped
haskelinesubmodule to 0.8.4.1Bumped
mtlsubmodule to 2.3.2Bumped
os-stringsubmodule to 2.0.10Bumped
textsubmodule to 2.1.4Bumped
transformerssubmodule to 0.6.3.0Bumped
unixsubmodule to 2.8.8.0Bumped
Win32submodule to 2.14.2.1
2.4.10. Wasm Backend¶
2.4.11. 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.12.4 | The compiler itself |
Cabal-syntax |
3.14.2.0 | Dependency of |
Cabal |
3.14.2.0 | Dependency of |
Win32 |
2.14.2.1 | Dependency of |
array |
0.5.8.0 | Dependency of |
base |
4.21.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.1.0 | Dependency of |
directory |
1.3.10.1 | Dependency of |
exceptions |
0.10.12 | Dependency of |
file-io |
0.1.6 | Dependency of |
filepath |
1.5.5.0 | Dependency of |
ghc-boot-th |
9.12.4 | Internal compiler library |
ghc-boot |
9.12.4 | Internal compiler library |
ghc-compact |
0.1.0.0 | Core library |
ghc-experimental |
9.1204.0 | Core library |
ghc-heap |
9.12.4 | GHC heap-walking library |
ghc-internal |
9.1204.0 | Core library |
ghc-platform |
0.1.0.0 | Internal library |
ghc-prim |
0.13.0 | Core library |
ghci |
9.12.4 | The REPL interface |
haskeline |
0.8.4.1 | Dependency of |
hpc |
0.7.0.2 | Dependency of |
integer-gmp |
1.1 | Core library |
mtl |
2.3.2 | Dependency of |
os-string |
2.0.10 | Dependency of |
parsec |
3.1.18.0 | Dependency of |
pretty |
1.1.3.6 | Dependency of |
process |
1.6.26.1 | Dependency of |
semaphore-compat |
1.0.0 | Dependency of |
stm |
2.5.3.1 | Dependency of |
template-haskell |
2.23.0.0 | Core library |
terminfo |
0.4.1.7 | Dependency of |
text |
2.1.4 | Dependency of |
time |
1.14 | Dependency of |
transformers |
0.6.3.0 | Dependency of |
unix |
2.8.8.0 | Dependency of |
xhtml |
3000.2.2.1 | Dependency of |
haddock-api |
2.32.0 | Dependency of |
haddock-library |
1.11.0 | Dependency of |