# GHC 9.4.1 is now available!

**URL:** https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901
**Category:** Announcements
**Created:** [August 7, 2022, 9:28pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901 "2022-08-07T21:28:29Z")
**Posts on this page:** 20
**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: [August 7, 2022, 9:28pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/1 "2022-08-07T21:28:29Z")

</div>

The GHC developers are very pleased to announce the availability of GHC  
9.4.1. Binary distributions, source distributions, and documentation are  
available at [downloads.haskell.org](https://downloads.haskell.org/ghc/9.4.1).

This release includes:

- A new profiling mode, `-fprof-late`, which adds automatic cost-center  
annotations to all top-level functions _after_ Core optimisation has  
run. This provides informative profiles while interfering  
significantly less with GHC’s aggressive optimisations, making it  
easier to understand the performance of programs which depend upon  
simplification…

- 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.

- On overhaul of our packaging infrastructure, allowing full  
traceability of release artifacts and more reliable binary  
distributions.

- Reintroduction of deep subsumption (which was previously dropped with the  
_simplified subsumption_ change) as a language extension.

- … and much more. See the [release notes](https://downloads.haskell.org/~ghc/9.4.1/docs/users_guide/9.4.1-notes.html) for a full accounting.

Note that, as 9.4.1 is the first release for which the released artifacts will  
all be generated by our Hadrian build system, it is possible that there will be  
packaging issues. If you enounter trouble while using a binary distribution,  
please open a [ticket](https://gitlab.haskell.org/ghc/ghc/-/issues/new). Likewise, if you are a downstream packager, do consider  
migrating to [Hadrian](https://gitlab.haskell.org/ghc/ghc/-/blob/e2520df3fffa0cf22fb19c5fb872832d11c07d35/hadrian) to run your build; the Hadrian build system can be built  
using `cabal-install`, `stack`, or the in-tree [bootstrap script](https://gitlab.haskell.org/ghc/ghc/-/blob/e2520df3fffa0cf22fb19c5fb872832d11c07d35/hadrian/bootstrap/README.md). See the accompanying  
[blog post](https://www.haskell.org/ghc/blog/20220805-make-to-hadrian.html) for details on migrating packaging to Hadrian.

We would like to thank Microsoft Azure, GitHub, IOG, the Zw3rk stake pool,  
Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, Haskell Foundation, 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: ![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: [August 7, 2022, 9:39pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/2 "2022-08-07T21:39:33Z")

</div>

Might this release be related to this issue I just reported?

> <https://github.com/haskell-infra/www.haskell.org/issues/209>
>
> The address https://downloads.haskell.org/~ghc/latest/docs/html/ used to give a …html page for the GHC manual, but now it gives a 404 error.
> 
> The parent https://downloads.haskell.org/~ghc/latest/docs/ does work and seems to indicate that the 'html' folder exists, but clicking that links gives the 404 error.

---

<div class="post-metadata">

### Author: ![Kleidukos](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/kleidukos/32/1213_2.png) [@Kleidukos](https://discourse.haskell.org/u/Kleidukos)
#### Post date: [August 7, 2022, 9:43pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/3 "2022-08-07T21:43:53Z")

</div>

Congratulations Ben!

---

<div class="post-metadata">

### Author: ![vmchale](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/vmchale/32/86_2.png) [@vmchale](https://discourse.haskell.org/u/vmchale)
#### Post date: [August 7, 2022, 9:53pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/4 "2022-08-07T21:53:29Z")

</div>

The aarch64-darwin seems to install some of the symlinks a bit wrong (I don’t think this is just ghcup!):

```haskell
vanessa@Vanessas-Air bin % ./ghc-9.4.1
zsh: permission denied: ./ghc-9.4.1

vanessa@Vanessas-Air bin % file ghc-9.4.1
ghc-9.4.1: ASCII text

```

---

<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: [August 7, 2022, 10:07pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/5 "2022-08-07T22:07:36Z")

</div>

> The aarch64-darwin seems to install some of the symlinks a bit wrong (I don’t think this is just ghcup!):

Sigh, indeed, I can reproduce this and it does look wrong. It appears that Darwin’s `cp -P` behaves differently from the same from `coreutils`. Bizarrely, it appears that one must pass `cp -RP` to reproduce the standard semantics.

---

<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: [August 7, 2022, 10:27pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/6 "2022-08-07T22:27:31Z")

</div>

Yes, it appears that BSD and `coreutils` differ in their behavior here; clearly we need to improve our testing coverage of the wrapper scripts.

I have fixed this issue in [!8789](https://gitlab.haskell.org/ghc/ghc/-/merge_requests/8789). Needless to say, we will need to put out a 9.4.2 quite soon. In the meantime, BSD users can patch the binary distribution with,

```diff
--- Makefile.old 2022-08-07 18:26:32.288968006 -0400
+++ Makefile 2022-08-07 18:26:44.505988585 -0400
@@ -40,7 +40,7 @@
 define installscript
        echo "installscript $1 -> $2"
        @if [-L 'wrappers/$1']; then \
- $(CP) -P 'wrappers/$1' '$2' ; \
+ $(CP) -RP 'wrappers/$1' '$2' ; \
        else \
                rm -f '$2' && \
                $(CREATE_SCRIPT) '$2' && \

```

---

<div class="post-metadata">

### Author: ![AlistairB](https://avatars.discourse-cdn.com/v4/letter/a/41988e/32.png) [@AlistairB](https://discourse.haskell.org/u/AlistairB)
#### Post date: [August 8, 2022, 2:49am UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/7 "2022-08-08T02:49:14Z")

</div>

Hi, couple of small things I note:

1. Previous releases contained a directory `ghc-9.2.4` in the archive. 9.4.1 instead has something like `ghc-9.4.1-x86_64-unknown-linux` for `ghc-9.4.1-x86_64-deb10-linux.tar.xz`. Unsure if this is a deliberate change.
2. It seems that deb11 is supported for `x86_64` but there is no `aarch64` release. Can we expect `aarch64` deb11 support to appear at some point?

---

<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: [August 8, 2022, 3:20am UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/8 "2022-08-08T03:20:10Z")

</div>

So there’s no automatic testing of bindists?

---

<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: [August 8, 2022, 3:22am UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/9 "2022-08-08T03:22:50Z")

</div>

> [@AlistairB](#):
>
> Previous releases contained a directory `ghc-9.2.4` in the archive. 9.4.1 instead has something like `ghc-9.4.1-x86_64-unknown-linux` for `ghc-9.4.1-x86_64-deb10-linux.tar.xz`. Unsure if this is a deliberate change.

This is a result of the switch to Hadrian.

> [@AlistairB](#):
>
> It seems that deb11 is supported for `x86_64` but there is no `aarch64` release. Can we expect `aarch64` deb11 support to appear at some point?

Sure, I can add this configuration.

---

<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: [August 8, 2022, 3:25am UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/10 "2022-08-08T03:25:40Z")

</div>

> [@hasufell](#):
>
> So there’s no automatic testing of bindists?

There is indeed automatic testing of bindists in every CI job. However, this particular issue was not caught because we used `coreutils` in our Darwin testing environment rather than Darwin’s native BSD tools. This is being fixed.

For the record, this issue is being tracked as [GHC #21974](https://gitlab.haskell.org/ghc/ghc/-/issues/21974).

---

<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: [August 8, 2022, 5:16am UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/11 "2022-08-08T05:16:16Z")

</div>

This sounds like only a limited number of people are affected (those that haven’t installed coreutils via brew)?

---

<div class="post-metadata">

### Author: ![ChShersh](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/chshersh/32/2551_2.png) [@ChShersh](https://discourse.haskell.org/u/ChShersh)
#### Post date: [August 8, 2022, 9:40am UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/12 "2022-08-08T09:40:01Z")

</div>

Hackage documentation index for [base-4.17.0.0](https://hackage.haskell.org/package/base-4.17.0.0) seems broken. Pressing s doesn’t open the quick-jump search box. Though, it works with [base-4.16.3.0](https://hackage.haskell.org/package/base-4.16.3.0).

---

<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: [August 8, 2022, 1:33pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/13 "2022-08-08T13:33:32Z")

</div>

> [@ChShersh](#):
>
> Hackage documentation index for [base-4.17.0.0](https://hackage.haskell.org/package/base-4.17.0.0) seems broken.

Hmm, that is indeed mysterious. Can you open a ticket?

---

<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: [August 8, 2022, 1:34pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/14 "2022-08-08T13:34:21Z")

</div>

That is to some extent true; I’d imagine there are quite a few Darwin users who are using `coreutils`, although we certainly can’t depend upon this fact.

---

<div class="post-metadata">

### Author: ![wolverian](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/wolverian/32/1387_2.png) [@wolverian](https://discourse.haskell.org/u/wolverian)
#### Post date: [August 8, 2022, 5:57pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/15 "2022-08-08T17:57:07Z")

</div>

Congrats on the release!

Can I help/pester `ghcup install ghc 9.4.1` to happen? Is ghcup maintained by the GHC team?

---

<div class="post-metadata">

### Author: ![ChShersh](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/chshersh/32/2551_2.png) [@ChShersh](https://discourse.haskell.org/u/ChShersh)
#### Post date: [August 8, 2022, 6:03pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/16 "2022-08-08T18:03:28Z")

</div>

Sure, here is the issue:

- [Hackage index is broken for base-4.17.0.0 (#21984) · Issues · Glasgow Haskell Compiler / GHC · GitLab](https://gitlab.haskell.org/ghc/ghc/-/issues/21984)

---

<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: [August 8, 2022, 6:06pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/17 "2022-08-08T18:06:25Z")

</div>

It’s maintained by @hasufell although we do try to work with him to ensure it’s well-supported. Unfortunately, the Darwin bindist issue mentioned above complicates matters.

---

<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: [August 8, 2022, 7:15pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/18 "2022-08-08T19:15:56Z")

</div>

You can install 9.4.1 already as a custom bindist, see [the GHCup user guide page on installing custom bindists](https://www.haskell.org/ghcup/guide/#installing-custom-bindists) and [the list of GHC binaries](https://www.haskell.org/ghc/download_ghc_9_4_1.html#binaries), e.g.:

```haskell
ghcup install ghc -u 'https://downloads.haskell.org/~ghc/9.4.1/ghc-9.4.1-x86_64-deb11-linux.tar.xz' 9.4.1

```

That is for the Debian 11 bindist, but should also work on some other Linux distributions.

---

<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: [August 9, 2022, 11:14am UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/19 "2022-08-09T11:14:32Z")

</div>

9.4.1 is now added to ghcup: [Comparing 19bc7f338e8e3ccaa1ce22019e255165f935c506^...master · haskell/ghcup-metadata · GitHub](https://github.com/haskell/ghcup-metadata/compare/19bc7f338e8e3ccaa1ce22019e255165f935c506%5E...master)

Fixed darwin bindists are hosted here: [Index of /ghcup/unofficial-bindists/ghc/curated/9.4.1/](https://downloads.haskell.org/~ghcup/unofficial-bindists/ghc/curated/9.4.1/)

---

<div class="post-metadata">

### Author: ![grguthrie](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/grguthrie/32/2466_2.png) [@grguthrie](https://discourse.haskell.org/u/grguthrie)
#### Post date: [August 10, 2022, 5:07pm UTC](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901/20 "2022-08-10T17:07:40Z")

</div>

Why does: “ghcup install ghc”  
seem to install ghc 8.10.7 by default instead of this newer version?

## Also; I did a “ghcup install ghc 9.4.1” and it seemed to do it, but then running “ghc --version” still gives 8.10.2 , it seems I must manually edit the $PATH in the environment?

[Next page](https://discourse.haskell.org/t/ghc-9-4-1-is-now-available/4901.md?page=2)
