File: CHANGELOG.md

package info (click to toggle)
haskell-generic-data 1.1.0.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 304 kB
  • sloc: haskell: 2,577; makefile: 6
file content (158 lines) | stat: -rw-r--r-- 5,380 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# 1.1.0.1

- Compatibility with *base* 4.21 (GHC 9.12)
- Avoid dependency on *contravariant*

# 1.1.0.0

- Remove `Eq` and `Ord` for `Generically1` instances.
  They are now available in *base* 4.18, and *base-orphans* 0.8.8
  for backwards compatibility.
- (Revisions) Also compatible with *base* 4.20 (GHC 9.10) and 4.19 (GHC 9.8)

# 1.0.0.1

- Compatibility with *base* 4.18 (GHC 9.6)

# 1.0.0.0

- `Generically` and `Generically1` are in *base* 4.17 (GHC 9.4.1)!

    + *generic-data* reexports `Generically` and `Generically1` if using *base* >= 4.17.
      The following instances remain as orphans: `Eq`, `Ord`, `Read`, `Show`,
      `Enum`, `Ix`, `Bounded`, `Foldable`, `Traversable`, `Read1`, `Show1`.
    + base 4.17 includes instances for the non-stock-derivable classes:
      `Semigroup` and `Monoid` for `Generically`; `Eq1`, `Ord1`, `Functor`,
      `Applicative`, and `Alternative` for `Generically1`.
    + Note: the `Semigroup` and `Monoid` instances of *base*'s `Generically`
      are those of *generic-data*'s `GenericProduct` (which is subtly different
      from `Generically`'s previous instance in *generic-data*).
    + `Generically` and `Generically1` are no longer defined using record syntax,
      so the `unGenerically`(`1`) field accessor no longer exists.
      The field accessors for `FiniteEnumeration` and `GenericProduct` were also
      removed for uniformity.

# 0.9.2.1

- No external changes.
- Use cabal-docspec instead of doctest

# 0.9.2.0

- Add instance of `Bounded` for `FiniteEnumeration` (the same as `Generically`)

# 0.9.1.0

- Fix `conIdToString` (it was completely broken)
- Add `conIdMin` and `conIdMax` representing the leftmost and rightmost
  constructors of a data type.
- Add `NonEmptyType` and `IsEmptyType` to express the constraint that
  a generic type must or must not be empty.
- Reexport `Generic` and `Generic1` for convenience.

# 0.9.0.0

- Improved definition of `gfoldMap`, `gtraverse`, and `sequenceA`.
  The optimized Core of `Traversable` instances eliminates all `GHC.Generic` instance
  boilerplate. In many cases, it is identical to the result of GHC's `DeriveFoldable`
  and `DeriveTraversable` extensions (note: this was already not a problem for
  `gfmap`).

  It's worth noting that there are currently issues with inlining which prevent
  optimizations that *generic-data* would ideally rely on.

    + The biggest issue is that GHC will not even inline the `to` and `from`
      methods of the `Generic` instance it derives for large types (this shows
      up at around 5 constructors and 10 fields, which is indeed not really
      big). This will be fixed by a patch for GHC (WIP):
      https://gitlab.haskell.org/ghc/ghc/-/merge_requests/2965

    + There appear to be some more inlining issues beyond that (issue #40).

# 0.8.3.0

- Add generic `Read`. Thanks to RyanGlScott.

# 0.8.2.0

- Add microsurgery `CopyRep`.
- Improve documentation of `Microsurgery` module.
- Fix a bug where `gshowsPrec` would incorrectly display prefix uses of
  symbol data constructors or record selectors (e.g., `data R = (:!:) Int Int`
  or `data S = MkS { (##) :: Int -> Int }`). Thanks to RyanGlScott.
- Fix a bug where `gshowsPrec` would incorrectly display infix uses of
  alphanumeric data constructors (e.g., ```data T = Int `MkT` Int```).
  Thanks to RyanGlScott.

# 0.8.1.0

- Add `Old` type family mapping newtypes to their underlying type.

# 0.8.0.0

- Add `GenericProduct`, for deriving `via GenericProduct B` when `B` is not the
  type `A` you want the derived instance for.
  Note this used to be `Generically`'s behavior for `Monoid` before 0.7.0.0.
- Add generic implementations for `Ix`. Thanks to Topsii.

- Add `conIdNamed`, to get a `ConId` by its type-level name
- Add instance `Show (ConId a)`
- Improve type errors for deriving `Semigroup` and `Monoid` via `Generically`.
  Thanks to yairchu.

# 0.7.0.0

- Change `Monoid` instance for `Generically`, to be compatible with users'
  non-generic instances of `Semigroup`. Thanks to yairchu.
- Add `gcoerce`, `gcoerceBinop`.

# 0.6.0.1

- Fix derivation of `Show1` for `(:.:)`

# 0.6.0.0

- Add `Surgery` newtype for DerivingVia
- `Derecordify`, `Typeage`, `RenameFields`, `RenameConstrs`, `OnFields`
  are no longer type families, but defunctionalized symbols
  to be applied using `GSurgery`.

# 0.5.0.0

- Specialize `onData` to `Data`
- Add some instances for `U1` and `V1` in `Microsurgery`
- Add `OnFields` and `DOnFields` surgeries ("higher-kindification")

# 0.4.0.0

- Created `Microsurgery` module. Initial set of surgeries:

    + `Derecordify`
    + `Typeage`
    + `RenameFields`, `RenameConstrs`
    + Some doc about using generic-lens for surgeries

# 0.3.0.0

- Add generic implementations of `enumFrom`, `enumFromThen`, `enumFromTo`,
  `enumFromThenTo`. They are actually required to be explicit for correct
  `Enum` instances. Thanks to Topsii.
- Parameterize `GEnum` by a type-level option, and add `FiniteEnum` option
  to allow `Enum` to be derived for composite types. Thanks to Topsii.

# 0.2.0.0

- Remove `Generic.Data.Types.Map`
- Add `Generic.Data.Data.Types.toData` and `fromData`
- Remove `Defun` module (subsumed by `first-class-families` package)

# 0.1.1.0

- Add `gconIndex`
- Interface for constructor tags
- Type-level `Meta` accessors
- Add basic `Newtype` functions

# 0.1.0.0

Released generic-data