GHC 9.4.1-alpha1 is now available

The GHC developers are happy to announce the availability of the first
alpha release of the GHC 9.4 series. Binary distributions, source
distributions, and documentation are available at
downloads.haskell.org.

This major release will include:

  • A new profiling mode, -fprof-late, which adds automatic cost-center
    annotations to all top-level functions after Core optimisation has
    run. This incurs significantly less performance cost while still
    providing informative profiles.

  • A variety of plugin improvements including the introduction of a new
    plugin type, defaulting plugins, and the ability for typechecking
    plugins to rewrite type-families.

  • An improved constructed product result analysis, allowing unboxing of
    nested structures, and a new boxity analysis, leading to less reboxing.

  • Introduction of a tag-check elision optimisation, bringing
    significant performance improvements in strict programs.

  • Generalisation of a variety of primitive types to be levity
    polymorphic. Consequently, the ArrayArray# type can at long last be
    retired, replaced by standard Array#.

  • Introduction of the \cases syntax from GHC proposal 0302

  • A complete overhaul of GHC’s Windows support. This includes a
    migration to a fully Clang-based C toolchain, a deep refactoring of
    the linker, and many fixes in WinIO.

  • Support for multiple home packages, significantly improving support
    in IDEs and other tools for multi-package projects.

  • A refactoring of GHC’s error message infrastructure, allowing GHC to
    provide diagnostic information to downstream consumers as structured
    data, greatly easing IDE support.

  • Significant compile-time improvements to runtime and memory consumption.

  • … and much more

We would like to thank Microsoft Azure, 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.
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.

Happy testing,

  • Ben
31 Likes

I wonder how difficult it would be to offer alpha/beta/RC versions of GHC via GHCup? That would make it trivial to test new versions of GHC

3 Likes

I know I’ve seen preview versions on GHCup before. I think it would be nice, but maybe it is too much effort for @hasufell to support. Having access to the main releases within a few days is already very nice.

If I knew how to do it and it wasn’t too difficult I would consider opening pull requests to add these preview releases myself. But maybe not everyone wants all these options, so perhaps they should be hidden by default and there should be a flag to show preview releases.

While I don’t think ghc-up currently knows about 9.4.1-alpha1, it is fairly easy to tell ghc-up to install arbitrary binary distributions. For instance,

$ ghcup install ghc -u 'https://downloads.haskell.org/~ghc/9.4.1-alpha1/ghc-9.4.0.20220501-x86_64-deb10-linux-dwarf.tar.xz' 9.4.1-alpha1

See the users guide for details.

12 Likes

I’m waiting for 9.4.1-alpha1 does not provide bindists linked against libtinfo5.so (x86_64 linux) (#21469) · Issues · Glasgow Haskell Compiler / GHC · GitLab

After that is fixed, the prereleases will be added to a separate release channel that you have to enable yourself: https://www.haskell.org/ghcup/guide/#pre-release-channels

6 Likes

I just added the bindists. To use the prerelease, you can do this now:

ghcup config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml
ghcup install ghc 9.4.0.20220501

To remove the pre-release channel, run ghcup config set url-source '{"GHCupURL": []}' (this will not remove the already installed GHCs). More information here.

7 Likes

Just a note that @bgamari’s command works for me, but trying to use the pre-release channel gives me “(Unable to find a download for the requested version/distro., ())” with no further info in .ghucp/logs. This is on WSL2 with Ubuntu 20.04.4

Oh nevermind, I must have messed something up before because now it works.

Amazing! Excited to give this a try. I noticed that the HTML user’s guide doesn’t appear to be there, I get a 404 from https://downloads.haskell.org/ghc/9.4.1-alpha1/docs/html/users_guide/index.html (which is linked to from GHC Documentation). The PDF works though.

Yes, this is a known issue with the alpha which will be resolved before the release: 9.4.1-alpha1 is missing docs (#21509) · Issues · Glasgow Haskell Compiler / GHC · GitLab

2 Likes

I hacked haskell-ci to support testing with the alpha: Support GHC alpha releases · Issue #588 · haskell-CI/haskell-ci · GitHub

3 Likes