GHC 9.2.1 released

The GHC developers are very happy to at long last announce the availability of GHC
9.2.1. Binary distributions, source distributions, and documentation are
available at downloads.haskell.org.

GHC 9.2 brings a number of exciting features including:

  • A native code generation backend for AArch64, significantly speeding
    compilation time on ARM platforms like the Apple M1.

  • Many changes in the area of records, including the new
    RecordDotSyntax and NoFieldSelectors language extensions, as well
    as Support for DuplicateRecordFields with PatternSynonyms.

  • Introduction of the new GHC2021 language extension set, giving
    users convenient access to a larger set of language extensions which
    have been long considered stable.

  • Merging of ghc-exactprint into the GHC tree, providing
    infrastructure for source-to-source program rewriting out-of-the-box.

  • Introduction of a BoxedRep RuntimeRep, allowing for polymorphism
    over levity of boxed objects (#17526)

  • Implementation of the UnliftedDataTypes extension, allowing users
    to define types which do not admit lazy evaluation (proposal)

  • The new -hi profiling mechanism which provides significantly
    improved insight into thunk leaks.

  • Support for the ghc-debug out-of-process heap inspection library

  • Significant improvements in the bytecode interpreter, allowing more
    programs to be efficently run in GHCi and Template Haskell splices.

  • Support for profiling of pinned objects with the cost-centre profiler
    (#7275)

  • Faster compilation and a smaller memory footprint

  • Introduction of Haddock documentation support in TemplateHaskell (#5467)

Finally, thank you to Microsoft Research, GitHub, IOHK, the Zw3rk stake
pool, Tweag I/O, Serokell, Equinix, SimSpace, and other anonymous
contributors whose on-going financial and in-kind support has
facilitated GHC maintenance and release management over the years.
Moreover, this release would not have been possible without the hundreds
of open-source contributors whose work comprise this release.

As always, do open a ticket if you see anything amiss.

43 Likes

Finally! :slight_smile: I’m looking forward to the compiler perf improvements!

Huge thank you to everyone who’s made this release possible! I can’t wait to start using a whole bunch of these features, especially the changes to records. There’s a lot to love here :smiling_face_with_three_hearts:

6 Likes

:wave:

Anyone who is willing to take (as detailed as you are willing) notes on what it takes to upgrade to 9.2.1, please email or share them with me. I’m interested in the time and difficulties in particular, but I’m also happy to consolidate and create issues to help the GHC team.

4 Likes

YAY NEW UPDATE this is super cool especially the RecordDotSyntax :north_korea:

4 Likes

Awesome. The full release notes: https://downloads.haskell.org/~ghc/9.2.1/docs/html/users_guide/9.2.1-notes.html.

(presumably an oversight not to include this link in OP)

2 Likes

Congradulations, and thank you all for your hard work to make this happen!

Thank you to everybody who worked on this! I am really looking forward to trying out many of the new features!

I noticed that the release is not yet listed on the haskell.org/ghc page. Perhaps it is being prepared, but I am mentioning it in case it was overlooked.

Great news! Thanks everyone involved!

Particularly excited about the new implementation of ImpredicativeTypes (see release notes for details).

The original proposal called it RecordDotSyntax and the release notes say

Many changes in the area of records, including the new
RecordDotSyntax

but an extension with that name doesn’t actually seem to exist

% ghc-9.2 test12.hs
test12.hs:1:14: error: Unsupported extension: RecordDotSyntax
  |
1 | {-# LANGUAGE RecordDotSyntax #-}
  |              ^^^^^^^^^^^^^^^

It seems that the extension is actually called OverloadedRecordDot. Is that right?

Yes, see this GHC proposal for context: https://github.com/ghc-proposals/ghc-proposals/pull/405

2 Likes