# Glasgow Haskell Compiler User's Guide

# 4. Release notes for version 8.2.2

The significant changes to the various parts of the compiler are listed in the following sections. This is a patch-level release which contains numerous bug-fixes over 8.2.1.

## 4.1. Highlights

The highlights since the 8.0 release include:

- Several important correctness issues fixing potential runtime crashes (Trac #13707, Trac #14346)
- A correctness issue leading to undefined behavior in some programs making use of STM (Trac #14717)
- A runtime system bug which may have manifested as a segmentation fault under low-memory conditions (Trac #14329)
- `ghc-pkg` now works correctly ihn environments with misconfigured NFS mounts (Trac #13945)
- GHC can now produce position-independent executables (Trac #13702)
- Significantly improved type errors (Trac #11198, Trac #12373, Trac #13530, Trac #13610)

## 4.2. Full details

### 4.2.1. Package system

- Various Backpack fixes (Trac #14304)

### 4.2.2. Language

- Sum patterns are now considered to be non-irrefutable (Trac #14228).
- `-XApplicativeDo` is now able to more robustly deal with `do` blocks containing strict patterns (Trac #14163).

### 4.2.3. Compiler

- An implementation inconsistency leading to subtly typechecker panics with
    `-j ⟨n⟩` has been fixed.
- We now always link with `libm`. This fixes `ld.gold` on some platforms (e.g. NixOS) which demand that we declare all link dependencies.
- We now link against `libpthread` instead of `libthr` on FreeBSD
- Fix renamer bug triggered by typechecking `hs-boot` files containing orphan instances (Trac #14128)
- The cost-center profiler’s event-log support now also supports breakdown by closure type (`-hT`, Trac #14096)
- A bug resulting in Core Lint failures for some programs using `-XStaticPointers` in GHCi has been fixed (Trac #13481)
- The compiler now robustly handles constraint wildcards which expand to large tuple constraints (i.e. wider than 63 constraints)
- We now catch more inappropriate levity polymorphism (Trac #13929)
- A bug leading to data constructor fields having incorrect strictness signatures has been fixed (Trac #14290)
- An incorrect strictness signature for `retry#` which may result in undefined behavior at runtime has been fixed (Trac #14171)
- A bug in the short-cut solver leading to an infinite in typechecking has been fixed (:ghc-tickets:`13943`)
- The compiler no longer panics when faced with `ByteArray#` arguments in a `foreign import`
- Over-zealous optimization of `Foreign.Marshal.Alloc.allocBytes[Aligned]` resulting in undefined behavior has been worked around (Trac #14346)

### 4.2.4. GHCi

- GHCi now behaves correctly when `Ctrl-C` is pressed on Windows (Trac #14150)
- GHCi now takes a `-show-mods-loaded` flag to reenable showing of names of modules loaded by `:load` (Trac #14427)

### 4.2.5. Build system

- `configure` now probes `ld.gold` even if `ld.lld` is found yet
    determined to be unusable (Trac #14280)

### 4.2.6. Runtime system

- Compact regions now support small pointer arrays (Trac #13860)
- The RTS can now load DLLs with with an empty import table on 32-bit Windows (Trac #14081)
- The `-po` flag now works; previously it existed but had no function.

### 4.2.7. hsc2hs

- Version number 0.68.2

## 4.3. Libraries

### 4.3.1. array

- Version number 0.5.2.0 (was 0.5.2.0)

### 4.3.2. base

See `changelog.md` in the `base` package for full release notes.

- Version number 4.10.1.0 (was 4.10.0.0)
- `clearBit :: Natural -> Natural` no longer bottoms (Trac #13203)
- The file locking primitives provided by `GHC.IO.Handle` now use Linux open file descriptor locking if available.

### 4.3.3. binary

- Version number 0.8.5.1 (was 0.8.5.1)

### 4.3.4. bytestring

- Version number 0.10.8.2 (was 0.10.8.2)

### 4.3.5. Cabal

- Version number 2.0.1.0 (was 2.0.0.2)

### 4.3.6. containers

- Version number 0.5.10.2 (was 0.5.10.2)

### 4.3.7. deepseq

- Version number 1.4.3.0 (was 1.4.3.0)

### 4.3.8. directory

- Version number 1.3.0.2 (was 1.3.0.0)

### 4.3.9. filepath

- Version number 1.4.1.2 (was 1.4.1.2)

### 4.3.10. ghc

- Version number 8.2.2

### 4.3.11. ghc-boot

- This is an internal package. Use with caution.

### 4.3.12. ghc-compact

The `ghc-compact` library provides an experimental API for placing immutable data structures into a contiguous memory region. Data in these regions is not traced during garbage collection and can be serialized to disk or over the network.

- Version number 0.1.0.0 (was 0.1.0.0)

### 4.3.13. ghc-prim

- Version number 0.5.1.0 (was 0.5.1.0)

### 4.3.14. hoopl

- Version number 3.10.2.2 (was 3.10.2.2)

### 4.3.15. hpc

- Version number 0.6.0.3 (was 0.6.0.3)

### 4.3.16. integer-gmp

- Version number 1.0.1.0 (was 1.0.0.1)

### 4.3.17. process

- Version number 1.6.1.0 (was 1.6.1.0)

### 4.3.18. template-haskell

- Version 2.12.0.0 (was 2.12.0.0)

### 4.3.19. time

- Version number 1.8.0.2 (was 1.8.0.2)

### 4.3.20. unix

- Version number 2.7.2.2 (was 2.7.2.2)

### 4.3.21. Win32

- Version number 2.5.4.1 (was 2.5.4.1)

## 4.4. Known bugs

None, happily.