# GHC 9.8.1 is now available

**URL:** https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832
**Category:** Uncategorized
**Created:** [October 9, 2023, 10:18pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832 "2023-10-09T22:18:30Z")
**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: [October 9, 2023, 10:18pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/1 "2023-10-09T22:18:30Z")

</div>

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

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

- Preliminary support the `TypeAbstractions` language extension, allowing types to be bound in type declarations [TypeAbstractions](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0425-decl-invis-binders.rst).

- Support for the `ExtendedLiterals` extension, providing syntax for non-word-sized numeric literals in the surface language [extended-literals](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0451-sized-literals.rst)

- Improved rewrite rule matching behavior, allowing limited matching of higher-order patterns

- Better support for user-defined warnings by way of the `WARNING` pragma [warnings](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0541-warning-pragmas-with-categories.rst)

- The introduction of the new `GHC.TypeError.Unsatisfiable` constraint, allowing more predictable user-defined type errors [unsatisfiable](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0433-unsatisfiable.rst)

- Implementation of the export deprecation proposal, allowing module exports to be marked with `DEPRECATE` pragmas [deprecated-exports](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0134-deprecating-exports-proposal.rst)

- The addition of build semaphore support for parallel compilation; with coming support in `cabal-install` this will allow better use of parallelism in multi-package builds [jsem](https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0540-jsem.rst)

- More efficient representation of info table provenance information, reducing binary sizes by over 50% in some cases when `-finfo-table-map` is in use

A full accounting of changes can be found in the [release notes](https://downloads.haskell.org/ghc/9.8.1/docs/users_guide/9.8.1-notes.html). Plans for GHC’s future releases can be found on the [GHC Wiki](https://gitlab.haskell.org/ghc/ghc/-/wikis/GHC-status).

We would like to thank GitHub, IOG, the Zw3rk stake pool, Well-Typed, Tweag I/O, Serokell, Equinix, SimSpace, the 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.

---

<div class="post-metadata">

### Author: ![tomjaguarpaw](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/tomjaguarpaw/32/1230_2.png) [@tomjaguarpaw](https://discourse.haskell.org/u/tomjaguarpaw)
#### Post date: [October 10, 2023, 9:22am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/2 "2023-10-10T09:22:02Z")

</div>

It’s fantastic that I can see this message, fire up `ghcup tui`, and immediately install GHC 9.8! Thanks so much to everyone involved in the workflow that makes this possible. It means I was already able to update [`product-profunctors`](https://hackage.haskell.org/package/product-profunctors) to 9.8.

---

<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: [October 10, 2023, 4:05pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/3 "2023-10-10T16:05:21Z")

</div>

@bgamari and @wz1000 have been taking over maintenance of the GHC metadata portion in ghcup, taking a lot of work off my plate.

While we’re still looking for contributors that can help with a strict review workflow, I’m happy this has been working fairly smoothly so far.

---

<div class="post-metadata">

### Author: ![mitchellwrosen](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mitchellwrosen/32/1307_2.png) [@mitchellwrosen](https://discourse.haskell.org/u/mitchellwrosen)
#### Post date: [October 10, 2023, 4:47pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/4 "2023-10-10T16:47:33Z")

</div>

Yes! It’s incredible.

Not too long ago, each time a new GHC was released I recall idly clicking around a directory of tarballs hosted on [haskell.org](http://haskell.org), double-checking my architecture before firing off a download, wondering where to put the binary and what to name it…

I eventually wrote an awful [bash script](https://github.com/mitchellwrosen/ghc-switch/blob/master/ghc-switch) I used to somewhat maintain before ghcup came along and did everything better.

---

<div class="post-metadata">

### Author: ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)
#### Post date: [October 10, 2023, 5:52pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/5 "2023-10-10T17:52:30Z")

</div>

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

---

<div class="post-metadata">

### Author: ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)
#### Post date: [October 11, 2023, 12:49am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/6 "2023-10-11T00:49:10Z")

</div>

I specified `text: 2.1` (a number) instead of `text: '2.1'` (a string) - causing Stack to complain vigorously (see Stack issue [#6284](https://github.com/commercialhaskell/stack/issues/6284)). This should now be fixed. Sorry to anyone inconvenienced.

---

<div class="post-metadata">

### Author: ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)
#### Post date: [October 11, 2023, 1:04am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/7 "2023-10-11T01:04:11Z")

</div>

When using Stack 2.13.1 with `resolver: ghc-9.8.1`, Stack will warn that it has not been tested with GHC 9.8 and above, and it may also warn that it failed to decode module interfaces. The latter is because the format of GHC’s `*.hi` files changed after GHC 9.6.3. Those warnings can be ignored, and will be fixed in the next version of Stack.

---

<div class="post-metadata">

### Author: ![benz0li](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/benz0li/32/3654_2.png) [@benz0li](https://discourse.haskell.org/u/benz0li)
#### Post date: [October 11, 2023, 9:37am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/8 "2023-10-11T09:37:56Z")

</div>

@mpilgrem Image `glcr.b-data.ch/ghc/ghc-musl:9.8.1` is also available now. I have created a pull request to update Stack’s Dev Containers.  
ℹ HLS has been updated to version 2.4.0.0 in Stack’s default Dev Container.

Cross reference: [Haskell Language Server 2.4.0.0 is now available](http://discourse.haskell.org/t/haskell-language-server-2-4-0-0-is-now-available/7840)

---

<div class="post-metadata">

### Author: ![nomeata](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/nomeata/32/1188_2.png) [@nomeata](https://discourse.haskell.org/u/nomeata)
#### Post date: [October 12, 2023, 9:22pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/9 "2023-10-12T21:22:44Z")

</div>

Nice set of new features!

Ben, I see that you link to the proposals. Is that the best user-facing source of more information? I’d have expected that these features come with sections in the user’s guide, and that that would be the more suitable description for end users (and also more accurate, in case the implementation ended up a bit different than in the proposal).

---

<div class="post-metadata">

### Author: ![nomeata](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/nomeata/32/1188_2.png) [@nomeata](https://discourse.haskell.org/u/nomeata)
#### Post date: [October 12, 2023, 9:27pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/10 "2023-10-12T21:27:22Z")

</div>

> [@tomjaguarpaw](#):
>
> It’s fantastic that I can see this message, fire up `ghcup tui`, and immediately install GHC 9.8

My CIs haven’t picked it up yet, despite being configured to use `latest` via the Haskell setup action. Is it because 9.8 is [added to ghcup-vanilla](https://github.com/haskell/ghcup-metadata/commit/dd4f6ff001d22ab431c92e78949fc7042556e731), but not yet the main `ghcup` metadata?

---

<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: [October 13, 2023, 2:25am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/11 "2023-10-13T02:25:19Z")

</div>

9.8.1 is in the default channel already [Add GHC 9.8.1 · haskell/ghcup-metadata@43f4782 · GitHub](https://github.com/haskell/ghcup-metadata/commit/43f47826587639c42a9a15b53fa10437d4965cf9)

I think the reason is that the haskell action duplicates ghcup efforts:

- [https://github.com/haskell/actions/blob/77e8db13129474e08c7c1ea3887d12491cc60cf2/setup/lib/opts.js#L85](https://github.com/haskell/actions/blob/77e8db13129474e08c7c1ea3887d12491cc60cf2/setup/lib/opts.js#L85)
- [https://github.com/haskell/actions/blob/77e8db13129474e08c7c1ea3887d12491cc60cf2/setup/lib/versions.json](https://github.com/haskell/actions/blob/77e8db13129474e08c7c1ea3887d12491cc60cf2/setup/lib/versions.json)

My suggestion is to just use plain ghcup in your CI. Example is [here](https://github.com/haskell/unix/blob/71e56488132021d0b67970c70278c13e5b2c2e26/.github/workflows/ci.yml#L19).

---

<div class="post-metadata">

### Author: ![nomeata](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/nomeata/32/1188_2.png) [@nomeata](https://discourse.haskell.org/u/nomeata)
#### Post date: [October 13, 2023, 9:14am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/12 "2023-10-13T09:14:33Z")

</div>

Ah, yes, it worked a bit later. I thought I deleted my post, but looks like I misclicked. All well, thanks!

---

<div class="post-metadata">

### Author: ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)
#### Post date: [October 14, 2023, 2:39pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/13 "2023-10-14T14:39:04Z")

</div>

In the `master` branch version of Stack:

- the `*.hi` file warnings are fixed. Thanks to @hsyl20, who makes the necessary changes to the `hi-file-parser` package, on which Stack depends; and
- Stack users now have the ability to mute the ‘Stack not tested on latest GHC/Cabal version’ warnings, if those messages are unwanted - see, for example, [Configuration (project and global) - The Haskell Tool Stack](https://docs.haskellstack.org/en/latest/yaml_configuration/#notify-if-ghc-untested) . The messages irk some users.

In respect of ‘Stack not tested’ messages, they are updated in Stack’s code when sufficient experience of new GHC/Cabal (the library) versions is accumulated. The hurdle is low, but experience tends not to be accumulated until Stackage moves its `nightly` snapshot on to the GHC version in question.

In respect of obtaining the `master` branch version of Stack:

- Stack can build Stack from source, with `stack upgrade --source-only --git` - see [upgrade command - The Haskell Tool Stack](https://docs.haskellstack.org/en/stable/upgrade_command/) ;
- also, each time Stack’s CI is triggered and passes, it creates binary distributions for Stack. They are available as artefacts produced by the `integration tests` GitHub Action at Stack’s repository;
- however, be aware that using Stack to manage Stack can conflict with using GHCup to manage Stack. That is because GHCup creates a ‘shim’ executable named `stack` on the PATH which calls Stack (proper). `stack upgrade` will likely overwrite GHCup’s ‘shim’ executable with the Stack executable (proper).

In respect of ‘released’ versions of Stack:

- I aim to release them on a quaterly rhythym (if the changes since the last release merit a release); I don’t want to ‘spam’ the community with Stack releases; but
- if somebody makes the case at Stack’s repository that a new ‘released’ version is needed more urgently than that, it is possible to release a new version of Stack outside of that rhythm.

---

<div class="post-metadata">

### Author: ![pdobsan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/pdobsan/32/3230_2.png) [@pdobsan](https://discourse.haskell.org/u/pdobsan)
#### Post date: [October 16, 2023, 10:07am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/14 "2023-10-16T10:07:50Z")

</div>

Using ghc 9.8.1 with cabal latest (3.10.1.0) gives a warning:

```haskell
Warning: Unknown/unsupported 'ghc' version detected (Cabal 3.10.1.0 supports
'ghc' version < 9.8): /home/peter/.ghcup/bin/ghc is version 9.8.1

```

---

<div class="post-metadata">

### Author: ![mpilgrem](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/mpilgrem/32/2529_2.png) [@mpilgrem](https://discourse.haskell.org/u/mpilgrem)
#### Post date: [October 16, 2023, 8:02pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/15 "2023-10-16T20:02:46Z")

</div>

The [release notes](https://www.haskell.org/ghc/download_ghc_9_8_1.html) for GHC 9.8.1 state that GHC 9.8 only works with `cabal-install >= 3.10.2.0` but the most recent version of that package on Hackage is [`cabal-install-3.10.1.0`](https://hackage.haskell.org/package/cabal-install).

---

<div class="post-metadata">

### Author: ![andreabedini](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/andreabedini/32/2201_2.png) [@andreabedini](https://discourse.haskell.org/u/andreabedini)
#### Post date: [October 16, 2023, 11:18pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/16 "2023-10-16T23:18:28Z")

</div>

The tl;dr is that cabal had planned a release but the release pipeline had (and still has) some issues which are delaying the release. GHC eventually shipped with a tagged but not released version of Cabal and Cabal-syntax.

> [@mpilgrem](#):
>
> The [release notes](https://www.haskell.org/ghc/download_ghc_9_8_1.html) for GHC 9.8.1 state that GHC 9.8 only works with `cabal-install >= 3.10.2.0`

TBH I find this statement a bit confusing.

1. GHC does not depend on cabal-install; so it obviously work also for `cabal-install == 0`
2. A statement on whether or not cabal-install fully support a GHC version would be more appropriate to cabal-install’s release notes.

---

<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: [October 17, 2023, 3:04am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/17 "2023-10-17T03:04:22Z")

</div>

> [@andreabedini](#):
>
> GHC eventually shipped with a tagged but not released version of Cabal and Cabal-syntax.

That sounds like GHC and Cabal need better coordination.

@bgamari @Kleidukos

---

<div class="post-metadata">

### Author: ![pdobsan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/pdobsan/32/3230_2.png) [@pdobsan](https://discourse.haskell.org/u/pdobsan)
#### Post date: [October 19, 2023, 10:10pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/18 "2023-10-19T22:10:00Z")

</div>

> [@mpilgrem](#):
>
> The [release notes](https://www.haskell.org/ghc/download_ghc_9_8_1.html) for GHC 9.8.1 state that GHC 9.8 only works with `cabal-install >= 3.10.2.0`

I cannot find this statement in the release notes. The only reference to cabal versions is in the 2.1.11 section talking about the package database coming with the release.

Despite of the warning, cabal 3.10.1.0 does seem to work with ghc 9.8.1.

> [@mpilgrem](#):
>
> but the most recent version of that package on Hackage is [`cabal-install-3.10.1.0`](https://hackage.haskell.org/package/cabal-install).

Additionally, if cabal-install is rebuilt with ghc 9.8.1 as below:

```haskell
cabal install cabal-install --allow-newer

```

even the warning disappear and the new cabal seems to work fine, at least for me so far. This build uses sources from Hackage only.

* * *

Edit: I sent my reply above by email two days ago but it never landed here for some reason.

---

<div class="post-metadata">

### Author: ![benz0li](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/benz0li/32/3654_2.png) [@benz0li](https://discourse.haskell.org/u/benz0li)
#### Post date: [October 20, 2023, 11:21am UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/19 "2023-10-20T11:21:35Z")

</div>

> [@pdobsan](#):
>
> I cannot find this statement in the release notes. The only reference to cabal versions is in the 2.1.11 section talking about the package database coming with the release.

Here: [GHC 9.8.1 download — The Glasgow Haskell Compiler](https://www.haskell.org/ghc/download_ghc_9_8_1.html)

> [@pdobsan](#):
>
> Additionally, if cabal-install is rebuilt with ghc 9.8.1 as below:
> 
> ```haskell
> cabal install cabal-install --allow-newer
> 
> ```
> 
> even the warning disappear and the new cabal seems to work fine, at least for me so far. This build uses sources from Hackage only.

I can confirm that the warning disappears if cabal-install-3.10.1.0 is rebuilt with GHC 9.8.1.

---

<div class="post-metadata">

### Author: ![janus](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.haskell.org/janus/32/1060_2.png) [@janus](https://discourse.haskell.org/u/janus)
#### Post date: [October 20, 2023, 9:30pm UTC](https://discourse.haskell.org/t/ghc-9-8-1-is-now-available/7832/20 "2023-10-20T21:30:49Z")

</div>

Would it be possible to update the [version history](https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history) gitlab page?

So that people can see that 9.8 ships with deepseq-1.5 and text-2.1.

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