# GHC 9.4.1-alpha1 is now available

**URL:** <https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455>\
**Category:** Announcements\
**Created:** [May 1, 2022, 11:28pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455 "2022-05-01T23:28:44Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![bgamari](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bgamari/32/3599_2.png) [@bgamari](https://discourse.haskell.org/u/bgamari)\
**Post date:** [May 1, 2022, 11:28pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/1 "2022-05-01T23:28:44Z")

</div>

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](https://downloads.haskell.org/ghc/9.4.1-alpha1).

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](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0302-cases.rst)

- 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](https://gitlab.haskell.org/ghc/ghc/-/issues/new) if you see  
anything amiss.

Happy testing,

- Ben

---

<div class="post-metadata">

**Author:** ![LaurentRDC](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/laurentrdc/32/4950_2.png) [@LaurentRDC](https://discourse.haskell.org/u/LaurentRDC)\
**Post date:** [May 2, 2022, 11:38am UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/2 "2022-05-02T11:38:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![jaror](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/jaror/32/3271_2.png) [@jaror](https://discourse.haskell.org/u/jaror)\
**Post date:** [May 2, 2022, 12:03pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/3 "2022-05-02T12:03:36Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![bgamari](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bgamari/32/3599_2.png) [@bgamari](https://discourse.haskell.org/u/bgamari)\
**Post date:** [May 2, 2022, 2:42pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/4 "2022-05-02T14:42:02Z")

</div>

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,

```bash
$ 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](https://www.haskell.org/ghcup/guide/#installing-custom-bindists) for details.

---

<div class="post-metadata">

**Author:** ![hasufell](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/hasufell/32/1250_2.png) [@hasufell](https://discourse.haskell.org/u/hasufell)\
**Post date:** [May 3, 2022, 6:49am UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/5 "2022-05-03T06:49:11Z")

</div>

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](https://gitlab.haskell.org/ghc/ghc/-/issues/21469)

After that is fixed, the prereleases will be added to a [separate release channel](https://github.com/haskell/ghcup-metadata/blob/master/ghcup-prereleases-0.0.7.yaml) that you have to enable yourself: [https://www.haskell.org/ghcup/guide/#pre-release-channels](https://www.haskell.org/ghcup/guide/#pre-release-channels)

---

<div class="post-metadata">

**Author:** ![hasufell](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/hasufell/32/1250_2.png) [@hasufell](https://discourse.haskell.org/u/hasufell)\
**Post date:** [May 3, 2022, 1:45pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/6 "2022-05-03T13:45:07Z")

</div>

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

```haskell
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](https://www.haskell.org/ghcup/guide/#pre-release-channels).

---

<div class="post-metadata">

**Author:** ![bergmark](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bergmark/32/418_2.png) [@bergmark](https://discourse.haskell.org/u/bergmark)\
**Post date:** [May 8, 2022, 4:32pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/7 "2022-05-08T16:32:05Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![bergmark](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bergmark/32/418_2.png) [@bergmark](https://discourse.haskell.org/u/bergmark)\
**Post date:** [May 8, 2022, 4:34pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/8 "2022-05-08T16:34:09Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![hdgarrood](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/hdgarrood/32/2420_2.png) [@hdgarrood](https://discourse.haskell.org/u/hdgarrood)\
**Post date:** [May 13, 2022, 3:42pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/9 "2022-05-13T15:42:19Z")

</div>

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](https://downloads.haskell.org/ghc/9.4.1-alpha1/docs/html/users_guide/index.html) (which is linked to from [GHC Documentation](https://downloads.haskell.org/ghc/9.4.1-alpha1/docs/html/)). The PDF works though.

---

<div class="post-metadata">

**Author:** ![adamgundry](https://avatars.discourse-cdn.com/v4/letter/a/34f0e0/32.png) [@adamgundry](https://discourse.haskell.org/u/adamgundry)\
**Post date:** [May 13, 2022, 6:01pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/10 "2022-05-13T18:01:46Z")

</div>

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](https://gitlab.haskell.org/ghc/ghc/-/issues/21509)

---

<div class="post-metadata">

**Author:** ![bergmark](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/bergmark/32/418_2.png) [@bergmark](https://discourse.haskell.org/u/bergmark)\
**Post date:** [May 21, 2022, 5:14pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-alpha1-is-now-available/4455/11 "2022-05-21T17:14:56Z")

</div>

I hacked [haskell-ci](https://github.com/haskell-ci/haskell-ci) to support testing with the alpha: [Support GHC alpha releases · Issue #588 · haskell-CI/haskell-ci · GitHub](https://github.com/haskell-CI/haskell-ci/issues/588)
