... |
... |
@@ -26,7 +26,8 @@ |
26
|
26
|
* Fix incorrect results of `integerPowMod` when the base is 0 and the exponent is negative, and `integerRecipMod` when the modulus is zero ([#26017](https://gitlab.haskell.org/ghc/ghc/-/issues/26017)).
|
27
|
27
|
|
28
|
28
|
|
29
|
|
-## 4.21.0.0 *TBA*
|
|
29
|
+## 4.21.0.0 *December 2024*
|
|
30
|
+ * Shipped with GHC 9.12.1
|
30
|
31
|
* Change `SrcLoc` to be a strict and unboxed (finishing [CLC proposal #55](https://github.com/haskell/core-libraries-committee/issues/55))
|
31
|
32
|
* Introduce `Data.Bounded` module exporting the `Bounded` typeclass (finishing [CLC proposal #208](https://github.com/haskell/core-libraries-committee/issues/208))
|
32
|
33
|
* Deprecate export of `Bounded` class from `Data.Enum` ([CLC proposal #208](https://github.com/haskell/core-libraries-committee/issues/208))
|
... |
... |
@@ -311,29 +312,29 @@ |
311
|
312
|
|
312
|
313
|
* Re-export the `IsList` typeclass from the new `GHC.IsList` module.
|
313
|
314
|
|
314
|
|
- * There's a new special function ``withDict`` in ``GHC.Exts``: ::
|
|
315
|
+ * There's a new special function `withDict` in `GHC.Exts`: ::
|
315
|
316
|
|
316
|
317
|
withDict :: forall {rr :: RuntimeRep} cls meth (r :: TYPE rr). WithDict cls meth => meth -> (cls => r) -> r
|
317
|
318
|
|
318
|
|
- where ``cls`` must be a class containing exactly one method, whose type
|
319
|
|
- must be ``meth``.
|
|
319
|
+ where `cls` must be a class containing exactly one method, whose type
|
|
320
|
+ must be `meth`.
|
320
|
321
|
|
321
|
|
- This function converts ``meth`` to a type class dictionary.
|
322
|
|
- It removes the need for ``unsafeCoerce`` in implementation of reflection
|
|
322
|
+ This function converts `meth` to a type class dictionary.
|
|
323
|
+ It removes the need for `unsafeCoerce` in implementation of reflection
|
323
|
324
|
libraries. It should be used with care, because it can introduce
|
324
|
325
|
incoherent instances.
|
325
|
326
|
|
326
|
|
- For example, the ``withTypeable`` function from the
|
327
|
|
- ``Type.Reflection`` module can now be defined as: ::
|
|
327
|
+ For example, the `withTypeable` function from the
|
|
328
|
+ `Type.Reflection` module can now be defined as: ::
|
328
|
329
|
|
329
|
330
|
withTypeable :: forall k (a :: k) rep (r :: TYPE rep). ()
|
330
|
331
|
=> TypeRep a -> (Typeable a => r) -> r
|
331
|
332
|
withTypeable rep k = withDict @(Typeable a) rep k
|
332
|
333
|
|
333
|
334
|
Note that the explicit type application is required, as the call to
|
334
|
|
- ``withDict`` would be ambiguous otherwise.
|
|
335
|
+ `withDict` would be ambiguous otherwise.
|
335
|
336
|
|
336
|
|
- This replaces the old ``GHC.Exts.magicDict``, which required
|
|
337
|
+ This replaces the old `GHC.Exts.magicDict`, which required
|
337
|
338
|
an intermediate data type and was less reliable.
|
338
|
339
|
|
339
|
340
|
* `Data.Word.Word64` and `Data.Int.Int64` are now always represented by
|
... |
... |
@@ -351,17 +352,17 @@ |
351
|
352
|
|
352
|
353
|
* Shipped with GHC 9.2.4
|
353
|
354
|
|
354
|
|
- * winio: make consoleReadNonBlocking not wait for any events at all.
|
|
355
|
+ * winio: make `consoleReadNonBlocking` not wait for any events at all.
|
355
|
356
|
|
356
|
|
- * winio: Add support to console handles to handleToHANDLE
|
|
357
|
+ * winio: Add support to console handles to `handleToHANDLE`
|
357
|
358
|
|
358
|
359
|
## 4.16.2.0 *May 2022*
|
359
|
360
|
|
360
|
361
|
* Shipped with GHC 9.2.2
|
361
|
362
|
|
362
|
|
- * Export GHC.Event.Internal on Windows (#21245)
|
|
363
|
+ * Export `GHC.Event.Internal` on Windows (#21245)
|
363
|
364
|
|
364
|
|
- # Documentation Fixes
|
|
365
|
+ * Documentation Fixes
|
365
|
366
|
|
366
|
367
|
## 4.16.1.0 *Feb 2022*
|
367
|
368
|
|
... |
... |
@@ -430,10 +431,17 @@ |
430
|
431
|
|
431
|
432
|
- Newtypes `And`, `Ior`, `Xor` and `Iff` which wrap their argument,
|
432
|
433
|
and whose `Semigroup` instances are defined using `(.&.)`, `(.|.)`, `xor`
|
433
|
|
- and ```\x y -> complement (x `xor` y)```, respectively.
|
|
434
|
+ and `\x y -> complement (x `xor` y)`, respectively.
|
434
|
435
|
|
435
|
436
|
- `oneBits :: FiniteBits a => a`, `oneBits = complement zeroBits`.
|
436
|
437
|
|
|
438
|
+ * Various folding operations in `GHC.List` are now implemented via strict
|
|
439
|
+ folds:
|
|
440
|
+ - `sum`
|
|
441
|
+ - `product`
|
|
442
|
+ - `maximum`
|
|
443
|
+ - `minimum`
|
|
444
|
+
|
437
|
445
|
## 4.15.0.0 *Feb 2021*
|
438
|
446
|
|
439
|
447
|
* Shipped with GHC 9.0.1
|