GHC 9.12.3 is now available

The GHC developers are very pleased to announce the release of GHC 9.12.3.
Binary distributions, source distributions, and documentation are available at
downloads.haskell.org.

GHC 9.12.3 is a bug-fix release fixing many issues of a variety of
severities and scopes, including:

  • Fix a number of crashes and miscompilations in the compiler frontend (#25004, #25960, #26256)
  • Improvements to efficiency of the runtime linker (#26009)
  • Fixes for several bugs in bytecode generation and the bytecode interpreter (#23210, #25975, #25750)
  • Fixes for bugs in the handling of WHITEHOLEs in the RTS (#26204, #26205)
  • Fix incorrect code generation for SSE vector operations (#25859)
  • Fix a use-after-free in the Windows runtime linker (#26613)
  • Support for synchronous JSFFI exports for the wasm backend
  • 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.

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.

13 Likes

I have updated Stack’s default setup-info dictionary for these binary distributions, and added GHC 9.12.3’s global hints to global-hints.yaml .

3 Likes

As of nightly-2025-12-31 Stackage Nightly is now on ghc-9.12.3.

Overall it went smoothly, except:

3 Likes

This release is broken: Sub-word division is broken in GHC 9.12.3 (again) (#26711) · Issues · Glasgow Haskell Compiler / GHC · GitLab

GHCup will skip it.

1 Like

I guess this is fallout from rts: Avoid static symbol references to ghc-internal (ecc03b62) · Commits · Glasgow Haskell Compiler / GHC · GitLab - though I don’t see it mentioned in the relnotes (see also !14892).

How does the Stackage project approach a new minor version of GHC discovered to be broken? Does nightly return to being based on GHC 9.12.2?

I would really rather not revert nightly - I hope we could see a quick follow-up 9.12.4 release…

Those affected can still use nightly-2024-12-30 or earlier anyway.

Also wish we could have stackage testing snapshots: Haskell needs better CI coverage overall.

5 Likes

@mpilgrem GHC musl docker manifests glcr.b-data.ch/ghc/ghc-musl:9.12.3 and glcr.b-data.ch/ghc/ghc-musl:9.12.3-int-native are available now.

These manifests are also published on Quay and Docker Hub and include images for linux/amd64, linux/arm64/v8 and linux/riscv64:

  • quay.io/benz0li/ghc-musl:9.12.3
  • quay.io/benz0li/ghc-musl:9.12.3-int-native
  • docker.io/benz0li/ghc-musl:9.12.3
  • docker.io/benz0li/ghc-musl:9.12.3-int-native

:information_source: Please be aware that these are unofficial and untested binary distributions of GHC on Alpine Linux.

1 Like

Hilarious timing, but I think you should maybe deprovision these manifests, considering Critical code generation bug with GHC 9.12.3

I am aware of that and labelled it as a broken release: ghc-musl/VERSION_MATRIX.md at main · benz0li/ghc-musl · GitHub

I will only consider deleting the manifests (and images) for GHC versions 9.12.3 (and for 9.12.1 + 9.2.1) if

are taken offline and all associated binary releases are deleted.

1 Like