.. _release-9-8-3:

Version 9.8.3
==============

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 native code generator miscompilation of signed sub-word arguments of FFI calls on x86 (:ghc-ticket:`25018`)
- 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`)
- Fix miscompilation by x86 native code generator due to shortcutting (:ghc-ticket:`24507`)
- Fix uses of ``(~)`` and ``(@)`` being rejected in :extension:`TemplateHaskell` splices (:ghc-ticket:`23748`)

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

- Significantly improve performance of code loading via dynamic linking (:ghc-ticket:`23415`)
- Internal fragmentation incurred by the non-moving garbage collector's allocator has been reduced for small objects.
  In one real-world application, this has reduced resident set size by about 20% and modestly improved run-time.
  See :ghc-ticket:`23340`.
  :rts-flag:`--nonmoving-dense-allocator-count=⟨count⟩` has been added to fine-tune this behaviour.
- Fix runtime crash of the :rts-flag:`nonmoving garbage collector <--nonmoving-gc>` due to weak pointers with static key (:ghc-ticket:`24492`)
- Allow heap profiling when the :rts-flag:`--nonmoving-gc` is in use

GHCi
----

- Fix a crash involving use of field selectors in GHCi (:ghc-ticket:`25109`)

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

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

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

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

Haddock
-------
- Fix source links to hyperlinked sources output (:ghc-ticket:`24086`)

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

- Bump ``stm`` to 2.5.3.1
- Bump ``deepseq`` to 1.5.1.0
- Bump ``array`` to 0.5.8.0
- Bump ``Cabal`` to 3.10.3.0
- Bump ``directory`` to 1.3.8.5
- Bump ``process`` to 1.6.25.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/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/semaphore-compat/semaphore-compat.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