Skip to content

Commit 16f9531

Browse files
committed
Update changelog for 0.13.0.0 release
1 parent 76d1498 commit 16f9531

File tree

1 file changed

+42
-31
lines changed

1 file changed

+42
-31
lines changed

vector/changelog.md

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,73 @@
11
# Changes in version 0.13.0.0
22

3-
* Methods of type classes `Data.Vector.Generic.Mutable.MVector` and
4-
`Data.Vector.Generic.Vector` use concrete monads (ST,etc) being
5-
polymorphic. This allows use of GND and deriving via to define
6-
instances. Rest of API is unchanged and most existing instances should
7-
compiler fine with new definitions.
83
* `mkType` from `Data.Vector.Generic` is deprecated in favor of
94
`Data.Data.mkNoRepType`
105
* The role signatures on several `Vector` types were too permissive, so they
116
have been tightened up:
127
* The role signature for `Data.Vector.Mutable.MVector` is now
138
`type role MVector nominal representational` (previously, both arguments
14-
were `phantom`).
9+
were `phantom`). [#224](https://github.com/haskell/vector/pull/224)
1510
* The role signature for `Data.Vector.Primitive.Vector` is now
1611
`type role Vector nominal` (previously, it was `phantom`).
1712
The role signature for `Data.Vector.Primitive.Mutable.MVector` is now
1813
`type role MVector nominal nominal` (previously, both arguments were
19-
`phantom`).
14+
`phantom`). [#316](https://github.com/haskell/vector/pull/316)
2015
* The role signature for `Data.Vector.Storable.Vector` is now
2116
`type role Vector nominal` (previous, it was `phantom`), and the signature
2217
for `Data.Vector.Storable.Mutable.MVector` is now
2318
`type role MVector nominal nominal` (previous, both arguments were
24-
`phantom`).
19+
`phantom`). [#235](https://github.com/haskell/vector/pull/235)
2520

2621
We pick `nominal` for the role of the last argument instead of
27-
`representational` since the internal structure of a `Storable` vector
28-
is determined by the `Storable` instance of the element type, and it is
29-
not guaranteed that the `Storable` instances between two
30-
representationally equal types will preserve this internal structure.
31-
One consequence of this choice is that it is no longer possible to
32-
`coerce` between `Storable.Vector a` and `Storable.Vector b` if `a` and
33-
`b` are nominally distinct but representationally equal types. We now
34-
provide `unsafeCoerce{M}Vector` functions in
35-
`Data.Vector.Storable{.Mutable}` to allow this (the onus is on the user
36-
to ensure that no `Storable` invariants are broken when using these
37-
functions).
22+
`representational` since the internal structure of a `Storable` vector is
23+
determined by the `Storable` instance of the element type, and it is not
24+
guaranteed that the `Storable` instances between two representationally
25+
equal types will preserve this internal structure. One consequence of this
26+
choice is that it is no longer possible to `coerce` between
27+
`Storable.Vector a` and `Storable.Vector b` if `a` and `b` are nominally
28+
distinct but representationally equal types. We now provide
29+
`unsafeCoerce{M}Vector` and `unsafeCast` functions to allow this (the onus
30+
is on the user to ensure that no `Storable` invariants are broken when
31+
using these functions).
32+
* Methods of type classes `Data.Vector.Generic.Mutable.MVector` and
33+
`Data.Vector.Generic.Vector` use concrete monads (`ST`, etc) istead of being
34+
polymorphic (`PrimMonad`, etc). [#335](https://github.com/haskell/vector/pull/335).
35+
This makes it possible to derive `Unbox` with:
36+
* `GeneralizedNewtypeDeriving`
37+
* via `UnboxViaPrim` and `Prim` instance
38+
* via `As` and `IsoUnbox` instance: [#378](https://github.com/haskell/vector/pull/378)
39+
* Add `MonadFix` instance for boxed vectors: [#312](https://github.com/haskell/vector/pull/312)
40+
* Re-export `PrimMonad` and `RealWorld` from mutable vectors:
41+
[#320](https://github.com/haskell/vector/pull/320)
42+
* Add `maximumOn` and `minimumOn`: [#356](https://github.com/haskell/vector/pull/356)
3843
* The functions `scanl1`, `scanl1'`, `scanr1`, and `scanr1'` for immutable
3944
vectors are now defined when given empty vectors as arguments,
4045
in which case they return empty vectors. This new behavior is consistent
4146
with the one of the corresponding functions in `Data.List`.
4247
Prior to this change, applying an empty vector to any of those functions
4348
resulted in an error. This change was introduced in:
4449
[#382](https://github.com/haskell/vector/pull/382)
45-
* Remove redundant `Storable` constraints on to/from `ForeignPtr` conversions
46-
* Add `unsafeCast` to `Primitive` vectors
47-
* Add `groupBy` and `group` for `Data.Vector.Generic` and the specialized
48-
version in `Data.Vector`, `Data.Vector.Unboxed`, `Data.Vector.Storable` and
49-
`Data.Vector.Primitive`.
50-
* Add `toArraySlice` and `unsafeFromArraySlice` functions for conversion to and
51-
from the underlying boxed `Array`.
50+
* Change allocation strategy for `unfoldrN`: [#387](https://github.com/haskell/vector/pull/387)
51+
* Remove `CPP` driven error reporting in favor of `HasCallStack`:
52+
[#397](https://github.com/haskell/vector/pull/397)
53+
* Remove redundant `Storable` constraints on to/from `ForeignPtr` conversions:
54+
[#394](https://github.com/haskell/vector/pull/394)
55+
* Add `unsafeCast` to `Primitive` vectors: [#401](https://github.com/haskell/vector/pull/401)
56+
* Make `(!?)` operator strict: [#402](https://github.com/haskell/vector/pull/402)
57+
* Add `readMaybe`: [#425](https://github.com/haskell/vector/pull/425)
58+
* Add `groupBy` and `group` for `Data.Vector.Generic` and the specialized
59+
version in `Data.Vector`, `Data.Vector.Unboxed`, `Data.Vector.Storable` and
60+
`Data.Vector.Primitive`. [#427](https://github.com/haskell/vector/pull/427)
61+
* Add `toArraySlice` and `unsafeFromArraySlice` functions for conversion to and
62+
from the underlying boxed `Array`: [#434](https://github.com/haskell/vector/pull/434)
5263

5364
# Changes in version 0.12.3.1
5465

55-
* Bugfix for ghcjs and `Double` memset for `Storable` vector:
56-
[#410](https://github.com/haskell/vector/issues/410)
57-
* Avoid haddock bug: [#383](https://github.com/haskell/vector/issues/383)
58-
* Improve haddock and doctests
59-
* Disable problematic tests with -boundschecks [#407](https://github.com/haskell/vector/pull/407)
66+
* Bugfix for ghcjs and `Double` memset for `Storable` vector:
67+
[#410](https://github.com/haskell/vector/issues/410)
68+
* Avoid haddock bug: [#383](https://github.com/haskell/vector/issues/383)
69+
* Improve haddock and doctests
70+
* Disable problematic tests with -boundschecks [#407](https://github.com/haskell/vector/pull/407)
6071

6172
# Changes in version 0.12.3.0
6273

0 commit comments

Comments
 (0)