2.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 LLVM backend
of this release is to be used with LLVM
11, 12, 13, 14 or 15.
2.2.1. Significant Changes¶
Issues fixed in this release include:
2.2.1.1. Compiler¶
- Fix a recompilation checking bug impacting the relinking step, where we failed to relink if transitive dependencies were changed (#23724).
- Fix a renamer bug where certain styles of import lists for associated type families would not be processed correctly (#24084).
- Fix a typechecker bug that could lead to non-termination in certain situations (#24134).
- Support code points greater than 2^16 in
toJSString
when using the JS backend (#23628). - Fix a code generation bug on the JS backend involving tuple constructors (#23659).
- Fix a code generator panic when compiling code using FMA primops (#24160).
- Fix a bug causing suboptimal error messages for certain invalid cyclic module graphs with hs-boot files (#24196, #24275).
- Fix an incorrect assertion in the simplifier (#23862).
- Fix a bug causing compiler panics with certain package databases involving unusable units and module reexports (#21097, #16996, #11050).
- Fix some memory leaks in GHCi that manifest on reloads (#24107, #24118).
- Fix a GHCi bug where a failure in the
:add
command would cause the process to exit (#24115). - Align objects in the data section properly when using the LLVM backend (#24163).
- Fix a simplifier panic when simplifying certain unfoldings (#24242).
- Fix a typechecker bug where
TYPE
andCONSTRAINT
were treated as apart (#24279). - Allow template haskell code to look up record fields (#24293).
- Add
-finfo-table-map-with-fallback
and-finfo-table-map-with-stack
flags for info table profiling (#23702). - Improve compile time and code generation performance when
-finfo-table-map
is enabled (#23103). - Fix a bug in the check for unused type variables in type class instances (#23768).
- Fix a panic when typechecking GADT data family instances with unused variables (#23784).
- Improve error message for unused variables in RHS of data family instance (#23778).
- Fix a compiler panic due to mismatches between
.hs
and.hs-boot
files (#16127). - Improve error message for unused variables type family instances (#23734).
- Fix a type checker crash on certain programs involving implicitly scoped type variables (#24083).
- Fix a bug where certain warning flags were not recognised (#24071).
- Fix a bug involving the miscompilation of certain loops (#24295).
- Produce FMA instructions even if -mfma is not set on AArch64 (#24311).
- Fix a bug leading to some template haskell splices failing on being reloaded into GHCi due to not clearing the interactive context properly (#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 (#24223).
- Fix a warning about non-existent
+fma
flag on LLVM (#24379). - Ensure we give nested documentation comments accurate source spans (#24378).
- Ensure we don’t emit shadowing warnings for
NoFieldSelector
fields (#24381). - Fix several bugs involving free variables in breakpoints (#23612, #23607, #23998, #23666).
- Fix a bug preventing some specialisations from firing (#24370).
- On x86, Don’t require
-mavx2
when using 256-bit floating-point SIMD primitives (#24222). - Fix a bug preventing haddock from computing the correct links (#24294).
2.2.1.2. Runtime system¶
2.2.1.3. Build system and packaging¶
- Ensure we use the right
otool
andinstall_name_tool
on Darwin (#24211). - Ensure we use the correct bindist name for the test artifact when generating release ghcup metadata (#24268).
- Ensure we handle CXX and CC flags involving standard flags correctly with new autotools versions (#24324).
- Ensure we correctly set
--target
when configuring the linker (#24414). - Suppress duplicate library warnings on new macOS linker (#24167, #24168).
- Fix a bug where
-DNOSMP
wasn’t being passed to the C compiler even if the target doesn’t support SMP (#24082). - Don’t assume the locale is
*.UTF-8
in hadrian.