GHC 9.14.1 is now available

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

GHC 9.14 brings a number of new features and improvements, including:

  • Significant improvements in specialisation:

    • The SPECIALISE pragma now allows use of type application syntax
    • The SPECIALISE pragma can be used to specialise for expression arguments
      as well as type arguments.
    • Specialisation is now considerably more reliable in the presence of
      newtypes
  • Significant GHCi improvements including:

    • Correctness and performance improvements in the bytecode interpreter
    • Features in the GHCi debugger
    • Support for multiple home units in GHCi
  • Implementation of the Explicit Level Imports proposal

  • RequiredTypeArguments can now be used in more contexts

  • Greatly improved SSE/AVX2 support in the x86 native code generator backend

  • Initial native code generator support for LoongArch

  • The WebAssembly backend now supports evaluation via the interpreter, allowing
    GHCi and TemplateHaskell evaluation, including foreign import javascript
    usage from within the browser

  • A new primop annotateStack# for pushing arbitrary data onto the call stack
    for later extraction when decoding stack traces

  • -Wincomplete-record-selectors is now part of -Wall. Libraries compiled
    with -Werror may need adjustment.

  • A major update of the Windows toolchain

  • Improved compatibility with macOS Tahoe

  • … and many more

A full accounting of changes can be found in the release notes.
See the migration guide for guidance on migrating programs to this release.

Note that while this release makes many improvements in the specialisation
optimisation, polymorphic specialisation remains disabled by default in the
release due to concern over regressions of the sort identified in
#26329. Users needing more aggressive specialisation can explicitly
enable this feature with the -fpolymorphic-specialisation flag. Depending
upon our experience with 9.14.1, we may enable this feature by default in a
later minor release.

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
comprises this release.

As always, do give this release a try and open a ticket if you see
anything amiss.

53 Likes

Also, this is the first official LTS Release.

Congratulations and thanks to all involved.

23 Likes

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

There is no x86_64-alpine3_12-linux binary distribution, so Stack’s linux64-musl variant now points at https://downloads.haskell.org/ghc/9.14.1/ghc-9.14.1-x86_64-alpine3_22-linux.tar.xz

3 Likes

When can we expect ghcup to offer the new release?

2 Likes

:partying_face: one step closer to cabal repl --enable-multi-repl --repl-no-load!

4 Likes

Maybe also good to note that this is the first GHC version that works with the new debugger:

23 Likes

Sometime this week. I’m away from my laptop most of the day.

11 Likes

The major update to the Windows toolchain is mentioned in the announcement message above and I see a new mingw/0.9 folder in downloads.haskell.org but I could not find it in the release notes.

2 Likes

Information about the Windows toolchain updates can be found here:

3 Likes

Just a reminder, I don’t think it’s been uploaded yet. (nor is 9.12.3) Thank you so much for ghcup.

1 Like

9.14.1 is now released in GHCup.

13 Likes

Are there any plans to ship GHC variants with the wasm or the js backends with ghcup?

4 Likes

This is great, thank you for the link!

I think it would be great to have the wasm and js backends show up in the TUI. It’s ok for them to check the environment and error out if the environment wasn’t prepared with these steps. The error could just give a link to this page.

They do, once you add the cross channel as described in the link.

The cross channel is not enabled by default, because those are entirely experimental bindists.

5 Likes

@mpilgrem GHC musl docker manifests glcr.b-data.ch/ghc/ghc-musl:9.14.1 and glcr.b-data.ch/ghc/ghc-musl:9.14.1-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.14.1
  • quay.io/benz0li/ghc-musl:9.14.1-int-native
  • docker.io/benz0li/ghc-musl:9.14.1
  • docker.io/benz0li/ghc-musl:9.14.1-int-native

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

5 Likes

When will it gain hls support?

1 Like

I believe that HLS must be compileable with GHC 9.14 to support it. So ā€œwhenā€ is when the package ecosystem catches up

1 Like

9.14 support by wz1000 Ā· Pull Request #4780 Ā· haskell/haskell-language-server Ā· GitHub you can follow this PR

5 Likes