The GHC developers are very pleased to announce the availability
of the second release candidate for GHC 9.14.2. Binary distributions, source
distributions, and documentation are available at downloads.haskell.org and
via GHCup.
See also the previous announcement of 9.14.2-rc1.
The changes since the first release candidate are:
- Several fixes to the specialiser and demand analyser for miscompilations
causing incorrect runtime results, crashes, or hangs
(#27626, #27627, #27629, #27703, #27704, #27705, #27717). - Fixes for a number of runtime system bugs:
- a missing memory barrier in the parallel garbage collector, which could
crash or silently corrupt the heap on weakly-ordered architectures such
as AArch64 (#27477). - a use-after-free with TSOs (#26716, #26717).
- an “unknown/strange object” crash in the compacting collector when
collecting the large data constructors that the bytecode interpreter
allocates (#27649). - a segfault when querying the label of an unlabelled thread (#27618).
- a crash when capturing or resuming a delimited continuation that adjusts
the asynchronous exception masking state (#27651). - stack corruption when returning large unboxed tuples in GHCi (#27633).
- a missing memory barrier in the parallel garbage collector, which could
- Further fixes to the AArch64 native code generator, addressing bugs that
caused incorrect runtime results from subword operations
(#27430, #27533, #27537, #27538, #27539, #27550). toExceptionforSomeExceptionno longer drops the attached
ExceptionContext, and acatchSTMhandler no longer breaksretryor
asynchronous exception delivery (#27455, #27657).- Reduced memory usage with multiple home units
(#26423, #27308, #27500, #27748). - Fixes for panics and spurious out-of-scope errors involving type arguments
in pattern synonym right-hand sides (#27440, #27583, #27586). - The pattern-match checker now recognises
considerAccessibleunder ticks,
and no longer emits a spurious-Wincomplete-uni-patternswarning under
-finfo-table-map(#27314, #27360). - The deprecation warning for static forms, added in rc1, no longer fires on
free type variables (#27664). - A fix for a regression preventing modules from being loaded into GHCi after
startup (#27202, #27640). - A fix for representation-polymorphism checks producing a coercion that
fails Core Lint (#27639). - Support for LLVM up to version 23 (#27764).
- Updates for libffi (3.8.0),
directory(1.3.11.0),file-io(0.1.6),
haskeline(0.8.5.0) andos-string(2.0.10).
GHC 9.14.2 is a bug-fix release fixing many issues of a variety of
severities and scopes, including:
- Version 2 of the GHC Jobserver Protocol for GHC’s
-jsem
jobserver on Linux and other POSIX platforms (#25087, #27253). This is sadly
a necessary breaking change:-jsemrequires cabal-install 3.18 or later,
and is otherwise ignored with a warning, falling back to
sequential compilation. - A new deprecation warning for static forms that mention nested let-bound
variables. This will become an error in GHC 10.0
(GHC Proposal #732, #26718). - A fix for a CorePrep miscompilation that could project a field out of an
absent dictionary, resulting in a segfault (#25924). - A fix for demand analysis giving an absent demand to an argument that was
still used by the function’s stable unfolding, which could cause a runtime
crash (#26416). - Numerous fixes for register allocation and Cmm register-conflict analysis
bugs, preventing incorrect code generation and corruption of vector registers
when spilling and reloading (#26411, #26526, #26537, #26542, #26550, #26668). - Many NCG fixes on AArch64:
MOVKclobbering live values (#26980), register
clobbering and an incorrect overflow bit inMUL2(#27046, #27047), and
incorrect sign extension (#26978) and unsigned right shift (#26979) at subword
widths. - A fix for a stack alignment bug on x86 that could cause segfaults or corrupted
registers when using AVX/AVX-512 vector code (#26595, #26822). - Fixes for several black hole handling bugs that could lead to deadlocks or
crashes in multithreaded programs, showing up as hangs or “END_TSO_QUEUE
object entered” errors (#26922, #26936). - Fixes for many other runtime system crashes and races
(#26341, #26573, #26640, #27007, #27008, #27009, #27082). - A fix for an “unknown/strange object” crash in the compacting garbage
collector (#27434). - Fixes for split sections on Windows (#26696, #26494) and the LLVM
backend (#26770). - Fixes for the Wasm backend (#26916, #27257), and the RISC-V (#27300, #27303,
#27306) and PowerPC (#23969, #24145, #26828) native code generators. - The JavaScript backend now supports more than 128 registers, fixing runtime
ReferenceErrorfailures for functions taking very many arguments (#26558). - Correctness and performance improvements in the bytecode interpreter
(#12953, #26287, #26946, #26995, #27001). - Fixes for several compiler panics, including issues with SetLevels (#26681),
the type-class specialiser (#26682),mkTick(#26772, #27121), CoreToStg
(#27182, #27386), the pattern-match checker (#25926, #27124), module graph
reachability (#26568), and continuation trimming for bottoming functions
(#27261). - Fixes for several cases where the compiler could hang or loop, including with
negative type literals (#26861), deep subsumption (#26823), and when
simplifying the right-hand sides of rewrite rules (#26323, #26826). - A fix for cast worker/wrapper incorrectly firing on INLINE functions (#26903).
- A fix for exponential-time desugaring of nested
caseexpressions
(#27383, #20251). - A fix for a regression that caused overloaded functions to no longer be
specialised as effectively as in previous releases, hurting runtime
performance (#26831). - A fix for associated type family and data family instance changes not
triggering recompilation (#26183, #26705). - Fixes for Explicit Level Imports and Template Haskell staging
(#26088, #26098, #26099, #26616, #27385). - Improvements to determinism of compiler output, including the order in which
:infolists instances (#26846, #26858, #26877, #27532). - Additions for GHCi and GHC API users: the
-fimport-loaded-targetsflag
(#26866), custom external interpreter commands (#26652),decodeStackWithIpe
and related stack-decoding helpers (#27065), an optionalSrcLocon
StackAnnotation(#26806), and agc_sync_elapsed_nscounter in
RTSStats(#26944). - … and many more.
A full accounting of these fixes can be found in the release notes. As
always, GHC’s release status, including planned future releases, can be found on
the GHC Wiki status.
This release candidate will have a two-week testing period. If all goes well
the final release will be available the week of 1 October 2026.
GHC development is sponsored by:
- Juspay
- QBayLogic
- Channable
- Haskell Foundation
- Serokell
- Well-Typed
- Tweag
- Dotcom-Monitor
- LoadView
- Web Hosting Buddy
- Find My Electric
- Standard Chartered
- UpCloud
- Mercury
We would like to thank these sponsors and other anonymous contributors
whose on-going financial and in-kind support has facilitated GHC maintenance
and release management over the years. Finally, this release would not have
been possible without the hundreds of open-source contributors whose work
comprise this release.
As always, do give this release a try and open a ticket if you see
anything amiss.