.. _release-9.6.6:

Version 9.6.6
==============

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.

Significant Changes
~~~~~~~~~~~~~~~~~~~~

Issues fixed in this release include:

Compiler
--------

- Fix a bug in the NCG that could lead to incorrect runtime results due to
  erroneously removing a jump instruction (:ghc-ticket:`24507`).
- Fix a bug leading to runtime exponential in the size of the package dependency
  graph when checking if a multiple home unit session satisfied the closure
  property.
- Fix a bug arising from interactions between GHC and cabal in how they
  call the linker to merge objects, resulting in linker errors in
  certain situations (:ghc-ticket:`22210`).
- Improve the algorithm used to detect missing home modules for the purpose of
  emitting warnings, making it no longer quadratic (:ghc-ticket:`24778`).
- Ensure ``-ddump-splices`` doesn't omit required parentheses when printing
  pattern signatures (:ghc-ticket:`24837`).
- Fix a possible alignment confusion in the code generator
  (:ghc-ticket:`24930`).
- Fix sign hints for the PowerPC NCG in C foreign calls (:ghc-ticket:`23034`).
- Fix a simplifier bug that could lead to compiler panics in certain sitations
  due to incorrect eta expansion (:ghc-ticket:`24718`).
- Fix a segfault in the bytecode interpreter due to incorrect constructor tagging
  (:ghc-ticket:`24870`).

Runtime system
--------------

- Fixes for various warnings emitted by ``UndefinedBehaviorSanitizer``. 
- Fix an argument ordering warning for ``stgCallocBytes`` (:ghc-ticket:`24828`).
- Fix a GC bug that manifests in certain situations when byte code objects end up
  on the mutable list (:ghc-ticket:`23375`).

Build system and packaging
--------------------------

- Allow hadrian to be bootstrapped using GHC 9.6 and Cabal 3.10.3 (:ghc-ticket:`24694`).
- The ``no_dynamic_libs`` flavour transformer now doesn't need users to also explicitly
  disable building a dynamic GHC.
- 

Core libraries
--------------

- Bump ``directory`` to 1.3.8.5

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.

.. ghc-package-list::

    libraries/array/array.cabal:             Dependency of ``ghc`` library
    libraries/base/base.cabal:               Core library
    libraries/binary/binary.cabal:           Dependency of ``ghc`` library
    libraries/bytestring/bytestring.cabal:   Dependency of ``ghc`` library
    libraries/Cabal/Cabal/Cabal.cabal:       Dependency of ``ghc-pkg`` utility
    libraries/Cabal/Cabal-syntax/Cabal-syntax.cabal:  Dependency of ``ghc-pkg`` utility
    libraries/containers/containers/containers.cabal: Dependency of ``ghc`` library
    libraries/deepseq/deepseq.cabal:         Dependency of ``ghc`` library
    libraries/directory/directory.cabal:     Dependency of ``ghc`` library
    libraries/exceptions/exceptions.cabal:   Dependency of ``ghc`` and ``haskeline`` library
    libraries/filepath/filepath.cabal:       Dependency of ``ghc`` library
    compiler/ghc.cabal:                      The compiler itself
    libraries/ghci/ghci.cabal:               The REPL interface
    libraries/ghc-boot/ghc-boot.cabal:       Internal compiler library
    libraries/ghc-boot-th/ghc-boot-th.cabal: Internal compiler library
    libraries/ghc-compact/ghc-compact.cabal: Core library
    libraries/ghc-heap/ghc-heap.cabal:       GHC heap-walking library
    libraries/ghc-prim/ghc-prim.cabal:       Core library
    libraries/haskeline/haskeline.cabal:     Dependency of ``ghci`` executable
    libraries/hpc/hpc.cabal:                 Dependency of ``hpc`` executable
    libraries/integer-gmp/integer-gmp.cabal: Core library
    libraries/libiserv/libiserv.cabal:       Internal compiler library
    libraries/mtl/mtl.cabal:                 Dependency of ``Cabal`` library
    libraries/parsec/parsec.cabal:           Dependency of ``Cabal`` library
    libraries/pretty/pretty.cabal:           Dependency of ``ghc`` library
    libraries/process/process.cabal:         Dependency of ``ghc`` library
    libraries/stm/stm.cabal:                 Dependency of ``haskeline`` library
    libraries/template-haskell/template-haskell.cabal: Core library
    libraries/terminfo/terminfo.cabal:       Dependency of ``haskeline`` library
    libraries/text/text.cabal:               Dependency of ``Cabal`` library
    libraries/time/time.cabal:               Dependency of ``ghc`` library
    libraries/transformers/transformers.cabal: Dependency of ``ghc`` library
    libraries/unix/unix.cabal:               Dependency of ``ghc`` library
    libraries/Win32/Win32.cabal:             Dependency of ``ghc`` library
    libraries/xhtml/xhtml.cabal:             Dependency of ``haddock`` executable