.. _release-9-6-7:

Version 9.6.7
==============

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

- Fixed a bug that caused GHC to panic when using the AArch64 ncg and :ghc-flag:`-fregs-graph` on certain programs (:ghc-ticket:`24941`).
- Fix invalid optimisation of Cmm programs on 32-bit platforms when targetting 64-bit targets (:ghc-ticket:`24893` and :ghc-ticket:`24700`).
- Improve float-out surrounding applications of ``runRW#`` (:ghc-ticket:`25055`).
- Fix :ghc-flag:`-fregs-graph` crash when targetting AArch64 (:ghc-ticket:`24941`).
- Fix code generation of foreign exports with more than 6 arguments when some are subword-width (:ghc-ticket:`24314`).
- Fix recompilation avoidance behavior of :ghc-flag:`-fwrite-if-simplified-core` (:ghc-ticket:`24656`).
- Fix linking error when :extension:`TypeData` and :extension:`StrictData` are in use (:ghc-ticket:`24620`).
- :ghc-flag:`-Wmissing-home-modules` now behaves correctly when multiple units have expose the same module name (:ghc-ticket:`25122`).
- Adjust the demand signature of the ``prompt#`` to avoid invalid optimisation of non-terminating programs (:ghc-ticket:`25439`).
- GHC's internal ``Unique`` type has been widened to 64-bits on 32-bit architectures, avoiding potential miscompilations on large projects (:ghc-ticket:`22010`).
- Fix LLVM version detection on newer LLVM versions (:ghc-ticket:`25606`).
- Determine ``max_n_capabilities`` at RTS startup, removing the previous static cap at 256 (:ghc-ticket:`25560`).
- Fix out-of-bounds memory mapping logic, resolving an infinite loop on FreeBSD (:ghc-ticket:`25492`).
- Find C++ probing when GCC version is the latest but G++ is old (:ghc-ticket:`23118`).
- Consider Wanteds with rewriters as insoluble, fixing a situation where the program fails to typecheck but no errors are reported (:ghc-ticket:`25325`).
- Fix x86 NCG foreign argument promotion. The x86 NCG now correctly promotes 8 bit and 16 bits arguments by sign extension (:ghc-ticket:`25018`).
- Fix GHC flag ``-working-dir`` for foreign files (:ghc-ticket:`25150`).
- Added new flags :ghc-flag:`-fspec-eval` and :ghc-flag:`-fspec-eval-dictfun` to allow switching off speculative evaluation (:ghc-ticket:`25284`).
- Fix a runtime crash when using the compacting GC, caused by black holes in large objects (:ghc-ticket:`24791`).

Hadrian and builds
------------------

- Bump the minimum version of the `directory` dependency for Hadrian to 1.3.9.0 to avoid a race condition on Windows (:ghc-ticket:`#24382`). Also updated the bootstrap build plans for hadrian.
- Hadrian: Set `-this-package-name`. This fixes package imports for `ghci-multi` and was required to update the `unix` package.
- Add Ubuntu 22.04 builds for nightlies and release (:ghc-ticket:`25317`).

JavaScript backend
------------------

- Fix compiler crash involving rubbish literals (:ghc-ticket:`25177`, :ghc-ticket:`24664`).

``base``
--------

- Bump version to 4.18.2.2
- Fix spurious closing of file descriptors after ``fork`` on platforms using
  the KQueue event manager backend (:ghc-ticket:`24672`), visible on FreeBSD.

Other Core Libraries
--------------------

- The ``filepath`` library has been upgraded to 1.4.301.0, fixing a potentially
  exploitable behavior with ``splitFileName`` on Windows (:ghc-ticket:`24597`).
- ``unix-2.8.6.0`` is included, fixing an `issue
  <https://github.com/haskell/unix/pull/252>`_ affecting ``musl`` targets.
- ``bytestring`` has been upgraded to 0.11.5.4, fixing a race condition in
   ``toLazyByteString`` that could generate wrong results if two threads
   concurrently evaluated the result.
- ``array`` has been upgraded to 0.5.8.0.
- ``ghc-bignum``: the bundled gmp library has been upgraded to 6.3.0.

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