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
toJSStringwhen 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
:addcommand 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
TYPEandCONSTRAINTwere treated as apart (#24279). - Allow template haskell code to look up record fields (#24293).
- Add
-finfo-table-map-with-fallbackand-finfo-table-map-with-stackflags for info table profiling (#23702). - Improve compile time and code generation performance when
-finfo-table-mapis 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
.hsand.hs-bootfiles (#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
+fmaflag on LLVM (#24379). - Ensure we give nested documentation comments accurate source spans (#24378).
- Ensure we don’t emit shadowing warnings for
NoFieldSelectorfields (#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
-mavx2when 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
otoolandinstall_name_toolon 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
--targetwhen configuring the linker (#24414). - Suppress duplicate library warnings on new macOS linker (#24167, #24168).
- Fix a bug where
-DNOSMPwasn’t being passed to the C compiler even if the target doesn’t support SMP (#24082). - Don’t assume the locale is
*.UTF-8in hadrian.