GHC 9.14.2-rc2 is now available

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).
  • Further fixes to the AArch64 native code generator, addressing bugs that
    caused incorrect runtime results from subword operations
    (#27430, #27533, #27537, #27538, #27539, #27550).
  • toException for SomeException no longer drops the attached
    ExceptionContext, and a catchSTM handler no longer breaks retry or
    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 considerAccessible under ticks,
    and no longer emits a spurious -Wincomplete-uni-patterns warning 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) and os-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: -jsem requires 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: MOVK clobbering live values (#26980), register
    clobbering and an incorrect overflow bit in MUL2 (#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
    ReferenceError failures 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 case expressions
    (#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
    :info lists instances (#26846, #26858, #26877, #27532).
  • Additions for GHCi and GHC API users: the -fimport-loaded-targets flag
    (#26866), custom external interpreter commands (#26652), decodeStackWithIpe
    and related stack-decoding helpers (#27065), an optional SrcLoc on
    StackAnnotation (#26806), and a gc_sync_elapsed_ns counter 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:

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.

26 Likes

Thanks, I have built it for Fedora Rawhide.

If you want to use GHC 9.14.2-rc2 with Stack:

Add a setup-info dictionary to a configuration file with the applicable entry for your operating system. For example, on Windows or macOS/AArch64, a stack.yaml:

snapshot: nightly-2026-09-18 # GHC 9.12.4
compiler: ghc-9.14.1.20260916
compiler-check: match-exact # Anticipating possible future RC releases

# Only required before the GHC version has been installed:
setup-info:
  ghc:
    windows64:
      9.14.1.20260916:
        url: https://downloads.haskell.org/ghc/9.14.2-rc2/ghc-9.14.1.20260916-x86_64-unknown-mingw32.tar.xz
        # Can be extended with SHA protections etc: see https://docs.haskellstack.org/en/stable/configure/yaml/non-project/#setup-info
    macosx-aarch64:
      9.14.1.20260916:
        url: https://downloads.haskell.org/ghc/9.14.2-rc2/ghc-9.14.1.20260916-aarch64-apple-darwin.tar.bz2
        # Can be extended with SHA protections etc: see https://docs.haskellstack.org/en/stable/configure/yaml/non-project/#setup-info