GHC 9.6.1-alpha1 is now available

The GHC team is very pleased to announce the availability of GHC 9.6.1-alpha1.
As usual, binaries and source distributions are available at
downloads.haskell.org.
This is the first alpha release in the 9.6 series which will bring a number of
exciting features:

  • A new Javascript code generation backend

  • A new WebAssembly code generation backend,

  • Significant latency improvements in the non-moving garbage collector

  • Support for loading of multiple components in GHCi

  • Efficient support for delimited continuations

  • Improvements in error messages

  • Numerous improvements in compiler-residency

Note that both the Javascript and WebAssembly backends are still in a state of
infancy and are present in this release as a technology preview; we hope that
they will mature considerably before the final 9.6.1 release.

Please give this release a try and open a ticket if you see anything
amiss.

Cheers,

  • Ben
31 Likes

Easily the most exciting release I’ve seen since I learned Haskell 4 years ago. Thank you!

Numerous improvements in compiler-residency

I know some work was done for tracking compile times of GHC versions in a public website. Does that still exist so we can see the difference?

8 Likes
2 Likes

I have the JS backend compiled as in this article:

Can I now use the release binary (how to invoke the backend?), or do I need to keep using the compiled one?

I’m not sure if this is a GHC problem or a GHCup problem, but I was unable to install GHC 9.6.1-alpha1 on ARM64. I ran ghcup install ghc 9.6.0.20230111 --set and got an error that said:

Both installation and setting the tool failed. Install error was: Tar directory does not exist: ghc-9.6.0.20230111-x86_64-unknown-linux

Here’s a link to the build on GitHub:

1 Like

This is the first time we are generating the metadata automatically on normal GHC pipelines and it is a bug in this automatic generation script. Totally my fault, thanks for pointing it out. I have corrected it so that it won’t happen again. Once I am back from my holiday next week I will extend our CI testing to test installation on aarch64 as well as x86 (which would have caught this bug).

Here is the corrected metadata if you wish to try manually.

6 Likes

That worked! Thank you for the quick response :slight_smile:

If anyone wants to try out GHC 9.6.1-alpha1 inside a Docker container, you should be able to use this image: public.ecr.aws/acilearning/haskell:9.6.0.20230111-7714b1adf6210c8a235445693a455d4ee2e34dba.

There seems to be another error in the metadata for Mac.

On AArch64:

% ghcup config add-release-channel https://gist.githubusercontent.com/mpickering/b0b86998d1fc94711294edd0127ae16f/raw/862357134ea4b4bbc4b55f34889af7b2f610e35f/metadata_test.yaml
% ghcup install ghc 9.6.0.20230111
[ Info  ] downloading: https://downloads.haskell.org/~ghc/9.6.0.20230111/ghc-9.6.0.20230111-aarch64-apple-darwin.tar.xz as file $HOME/.ghcup/tmp/ghcup-8791572735447784/ghc-9.6.0.20230111-aarch64-apple-darwin.tar.xz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  194M  100  194M    0     0  3369k      0  0:00:59  0:00:59 --:--:-- 3477k
[ Info  ] verifying digest of: ghc-9.6.0.20230111-aarch64-apple-darwin.tar.xz
[ Info  ] Unpacking: ghc-9.6.0.20230111-aarch64-apple-darwin.tar.xz to $HOME/.ghcup/tmp/ghcup-dfd9c7cf08f383d1
[ Error ] [GHCup-00190] Tar directory does not exist: ghc-9.6.0.20230111-aarch64-unknown-darwin
[ Error ] Also check the logs in $HOME/.ghcup/logs

On x86_64:

[ Info  ] Unpacking: ghc-9.6.0.20230111-x86_64-apple-darwin.tar.xz to $HOME/.ghcup/tmp/ghcup-48d21ded3bcaf875
[ Error ] Tar directory does not exist: ghc-9.6.0.20230111-x86_64-unknown-darwin

The directory name is ghc-9.6.0.20230111-{x86_64,aarch64}-apple-darwin instead of *-unknown-*.

Thanks, fixed in the script as well and new metadata here

1 Like

That still has an incorrect windows subdir.

I fixed those here: Fixup 9.6.0.20230111 subdirs · haskell/ghcup-metadata@25b2314 · GitHub

2 Likes

I’m excited about this one. The inability to get the fast ghcid-based feedback loop made me resort to weird hacks with many common stanzas (like in https://github.com/nomeata/kaleidogen/blob/master/kaleidogen.cabal) instead of just using internal libraries, so maybe that’s possible now.

Is there documentation on how to use it? Can I just say cabal repl comp1 comp2 and things work as they should? (I guess the answer is “not yet”, based on https://github.com/haskell/cabal/issues/8238 and https://github.com/haskell/cabal/issues/8491)

3 Likes

Documentation is definitely still lacking in this area, although I do hope this will be improved in time for final release.

2 Likes