.. _release-9-6-2:

Version 9.6.2
==============

The significant changes to the various parts of the compiler are listed below.
See the `migration guide
<https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.6>`_ on the GHC Wiki
for specific guidance on migrating programs to this release.

The :ghc-flag:`LLVM backend <-fllvm>` of this release is to be used with LLVM
11, 12, 13, 14 or 15.

- A :ghc-ticket:`simplifier bug <22761>` resulting in compiler crashes in some
  situations involving rules has been fixed.

- Several issues affecting the bytecode interpreter's handling of optimised
  programs have been fixed (:ghc-ticket:`23068`, :ghc-ticket:`22958`)

- A specialisation bug resulting looping of some programs involving
  non-trivial chains of instances (namely, requiring
  :extension:`UndecidableInstances`) has been fixed (:ghc-ticket:`22549`)

- A bug resulting in crashes of programs using the new ``listThreads#`` primop
  has been fixed (:ghc-ticket:`23071`).

- A compiler crash triggered by certain uses of quantified constraints has been
  fixed (:ghc-ticket:`23171`)

- Various bugs in the Javascript backend have been fixed (:ghc-ticket:`23399`,
  :ghc-ticket:`23360`, :ghc-ticket:`23346`)

- The non-moving garbage collector's treatment of weak pointers has been
  revamped which should allow more reliable finalization of ``Weak#``
  closures (:ghc-ticket:`22327`)

- The non-moving garbage collector now bounds the amount of marking it will
  do during the post-marking stop-the-world phase, greatly reducing tail
  latencies in some programs (:ghc-ticket:`22929`)

- A missing write barrier in the non-moving collector's handling of selector
  thunks has been fixed (:ghc-ticket:`22930`).

Included libraries
------------------

The package database provided with this distribution also contains a number of
packages other than GHC itself. See the changelogs provided with these packages
for further change information.