.. _release-9-8-2: Version 9.8.2 ============== The significant changes to the various parts of the compiler are listed below. See the `migration guide `_ 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 recompilation checking bug impacting the relinking step, where we failed to relink if transitive dependencies were changed (:ghc-ticket:`23724`). - Fix a renamer bug where certain styles of import lists for associated type families would not be processed correctly (:ghc-ticket:`24084`). - Fix a typechecker bug that could lead to non-termination in certain situations (:ghc-ticket:`24134`). - Support code points greater than 2^16 in ``toJSString`` when using the JS backend (:ghc-ticket:`23628`). - Fix a code generation bug on the JS backend involving tuple constructors (:ghc-ticket:`23659`). - Fix a code generator panic when compiling code using FMA primops (:ghc-ticket:`24160`). - Fix a bug causing suboptimal error messages for certain invalid cyclic module graphs with hs-boot files (:ghc-ticket:`24196`, :ghc-ticket:`24275`). - Fix an incorrect assertion in the simplifier (:ghc-ticket:`23862`). - Fix a bug causing compiler panics with certain package databases involving unusable units and module reexports (:ghc-ticket:`21097`, :ghc-ticket:`16996`, :ghc-ticket:`11050`). - Fix some memory leaks in GHCi that manifest on reloads (:ghc-ticket:`24107`, :ghc-ticket:`24118`). - Fix a GHCi bug where a failure in the ``:add`` command would cause the process to exit (:ghc-ticket:`24115`). - Align objects in the data section properly when using the LLVM backend (:ghc-ticket:`24163`). - Fix a simplifier panic when simplifying certain unfoldings (:ghc-ticket:`24242`). - Fix a typechecker bug where ``TYPE`` and ``CONSTRAINT`` were treated as apart (:ghc-ticket:`24279`). - Allow template haskell code to look up record fields (:ghc-ticket:`24293`). - Add ``-finfo-table-map-with-fallback`` and ``-finfo-table-map-with-stack`` flags for info table profiling (:ghc-ticket:`23702`). - Improve compile time and code generation performance when ``-finfo-table-map`` is enabled (:ghc-ticket:`23103`). - Fix a bug in the check for unused type variables in type class instances (:ghc-ticket:`23768`). - Fix a panic when typechecking GADT data family instances with unused variables (:ghc-ticket:`23784`). - Improve error message for unused variables in RHS of data family instance (:ghc-ticket:`23778`). - Fix a compiler panic due to mismatches between ``.hs`` and ``.hs-boot`` files (:ghc-ticket:`16127`). - Improve error message for unused variables type family instances (:ghc-ticket:`23734`). - Fix a type checker crash on certain programs involving implicitly scoped type variables (:ghc-ticket:`24083`). - Fix a bug where certain warning flags were not recognised (:ghc-ticket:`24071`). - Fix a bug involving the miscompilation of certain loops (:ghc-ticket:`24295`). - Produce FMA instructions even if `-mfma` is not set on AArch64 (:ghc-ticket:`24311`). - Fix a bug leading to some template haskell splices failing on being reloaded into GHCi due to not clearing the interactive context properly (:ghc-ticket:`23405`). - Fix a bug where we could silently truncate 64 bit values to 32 bit on 32 bit architectures. - Don't produce invalid opcode for FMA instruction on LLVM (:ghc-ticket:`24223`). - Fix a warning about non-existent ``+fma`` flag on LLVM (:ghc-ticket:`24379`). - Ensure we give nested documentation comments accurate source spans (:ghc-ticket:`24378`). - Ensure we don't emit shadowing warnings for ``NoFieldSelector`` fields (:ghc-ticket:`24381`). - Fix several bugs involving free variables in breakpoints (:ghc-ticket:`23612`, :ghc-ticket:`23607`, :ghc-ticket:`23998`, :ghc-ticket:`23666`). - Fix a bug preventing some specialisations from firing (:ghc-ticket:`24370`). - On x86, Don't require ``-mavx2`` when using 256-bit floating-point SIMD primitives (:ghc-ticket:`24222`). - Fix a bug preventing haddock from computing the correct links (:ghc-ticket:`24294`). Runtime system -------------- - Ensure we respect maximum event length and don't overflow into program memory (:ghc-ticket:`24197`, :ghc-ticket:`24287`). - Ensure concurrent thunk update is sound (:ghc-ticket:`23185`). Build system and packaging -------------------------- - Ensure we use the right ``otool`` and ``install_name_tool`` on Darwin (:ghc-ticket:`24211`). - Ensure we use the correct bindist name for the test artifact when generating release ghcup metadata (:ghc-ticket:`24268`). - Ensure we handle CXX and CC flags involving standard flags correctly with new autotools versions (:ghc-ticket:`24324`). - Ensure we correctly set ``--target`` when configuring the linker (:ghc-ticket:`24414`). - Suppress duplicate library warnings on new macOS linker (:ghc-ticket:`24167`, :ghc-ticket:`24168`). - Fix a bug where ``-DNOSMP`` wasn't being passed to the C compiler even if the target doesn't support SMP (:ghc-ticket:`24082`). - Don't assume the locale is ``*.UTF-8`` in hadrian. Core libraries -------------- - Fix a bug in ghc-bignum where usage of `bigNatIsPowerOf2` might result in out of bounds access (:ghc-ticket:`24066`). - Bump ``base`` to 4.19.1.0 - Bump ``filepath`` to 1.4.200.1 - Bump ``unix`` to 2.8.4.0 - Bump ``bytestring`` to 0.12.1.0 - Bump ``text`` to 2.1.1 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