linear-1.21: CHANGELOG.markdown
1.21 [2020.02.03]
-----------------
* Add instances for direct sums (`Product`) and tensor products (`Compose`) of
other vector spaces. This makes is much more convenient to do things like treat
a matrix temporarily as a vector through Compose, or to consider things like
Gauss-Jordan elimination, which wants augmented structures.
* Add `frobenius` for computing the Frobenius norm of a matrix.
* Added `Random` instances for `System.Random`. We had an indirect dependency
through `vector` anyways.
* Add "obvious" zipping `Semigroup` and `Monoid` instances to all the
representable vector spaces.
* Add `R1`..`R4` instances to `Quaternion`. `_w` is the scalar component so that
`_x`,`_y`,`_z` can be directional.
* Add more solvers to `Linear.Matrix`, available with `base-4.8` or later.
* Add `unangle` function to `Linear.V2`.
1.20.9 [2019.05.02]
-------------------
* Derive `Lift` instances for `Plucker`, `Quaternion`, and `V{0,1,2,3,4}`.
1.20.8 [2018.07.03]
-------------------
* Add instances of the `Field` classes from `lens`.
* Add `Epsilon` instance for `Complex`.
* Use specialized implementations of the `null` and `length` methods in
`Foldable` instances.
* Add `Hashable1` instances for data types in `linear`. Also add a
`Hashable` instance for `V`.
* Fix a bug in which `Quaternion`s were incorrectly exponentiated.
1.20.7
------
* Support `semigroupoids-5.2.1` and `doctest-0.12`
1.20.6
------
* Revamp `Setup.hs` to use `cabal-doctest`. This makes it build
with `Cabal-2.0`, and makes the `doctest`s work with `cabal new-build` and
sandboxes.
* Make `(1 / x)` and `recip x` agree in the `Fractional` instance for `Quaternion`
* Use newtype instances for `Point` vectors in `Linear.Affine`
* Enable `PolyKinds` in `Linear.Trace`. Also enable `PolyKinds` when GHC 7.6 or
later is used (previously, it was GHC 7.8 or later).
* Fix a segfault arising from the `MVector` instance for `V`
* Add `Finite` class for conversion between `V` and fixed-size vector types
1.20.5
------
* GHC 8 compatibility
* Fixed the `perspective` calculation.
1.20.4
------
* Compatibility with `base-orphans` 0.5
1.20.3
------
* Support `vector` 0.11.0.0.
* Support `cereal` 0.5
* You can now unboxed vectors of `V n` vectors.
1.20.2
------
* Modified the `doctest` machinery to work with `stack` and builds to non-standard locations.
* Removed the local `.ghci` file.
* Various numerical stability improvements were made to the quaternion and projection functions.
1.20.1
------
* Fixed doctests broken by the previous change.
* Unboxed vector instances for various linear data types now use unpacked integers even on older GHCs.
1.20
----
* `inv22`, `inv33` and `inv44` no longer attempt an epsilon check. They no longer return a `Maybe` result as a consequence.
You should filter for the 0 determinant case yourself.
1.19.1.3
--------
* `vector` 0.11.0.0 support
1.19.1.2
--------
* Fix GHC 7.4.
1.19.1.1
--------
* Proper `reflection` 2 support
1.19.1
------
* `reflection` 2 support
1.19
----
* Change the Ixed instance for `Linear.V` to use `Int` as the index type. This makes `V n` a _lot_ easier to use.
1.18.3
------
* Compile warning-free on GHC 7.10.
1.18.2
------
* Added `NFData` instance for `Point`
1.18.1
------
* Added an `-f-template-haskell` option to allow disabling `template-haskell` support. This is an unsupported configuration but may be useful for expert users in sandbox configurations.
* Added lenses for extracting corner various sub-matrices e.g. `_m22`, `_m33`
1.18.0.2
--------
* Fixed builds on even older GHCs.
1.18.0.1
--------
* Fixed the test suite.
* Fixed builds on older GHCs.
1.18
----
* Consolidated `eye2` .. `eye4` into a single `identity` combinator.
* Fixed the `Data` instance `V n a` for GHC 7.10-RC3.
1.17.1.1
--------
* `filepath` 1.4 support
1.17.1
------
* Added support for `Data.Functor.Classes` from `transformers` 0.5 via `transformers-compat`.
* Added missing support for `binary`, `bytes` and `cereal` for `Point`
1.17
----
* Better support for `binary`. Added support for `bytes` and `cereal`
1.16.4
------
* `ortho` and `inverseOrtho` now only require a `Fractional` constraint.
* Added missing `Floating` instances.
1.16.3
----
* Improve the performance of `fromQuaternion`, `mkTransformation`,
`mkTransformationMat`, `basisFor`, `scaled` by using implementations
that inline well for functions that were previously reference
implementations.
1.16.2
----
* Added `NFData` instances for the various vector types.
* Added `!!/` operator for matrix division by scalar.
1.16.1
----
* Added `Trace` instance for `V1`.
1.16
----
* Renamed `kronecker` to `scaled`.
1.15.5
------
* Added `Metric` instances for `[]`, `ZipList`, `Maybe`
* Added `det44` and `inv44` to `Linear.Matrix`
* Added `Data` instance for `Point`
1.15.4
------
* Added Typeable and Data instances for V
1.15.3
------
* Added missing `FunctorWithIndex`, `FoldableWithIndex` and `TraversableWithIndex Int (V n)` instances for `V`
1.15.2
------
* Added `frustum`, analogous to the old `glFrustum` call.
* Added `inverseInfinitePerspective`, `inverseOrtho`, `inverseFrustum`.
1.15.1
------
* Added `inversePerspective`. It is much more accurate to compute it directly than to compute an inverse.
1.15.0.1
--------
* Fixed build failures caused by `Linear` re-exporting the old name.
1.15
----
* Renamed `Linear.Perspective` to `Linear.Projection`.
* Fixed a build issue with GHC HEAD.
1.14.0.1
--------
* Fixed test failures caused by 1.14
1.14
----
* Moved `Coincides` to `Linear.Plucker.Coincides`. The constructors `Line` and `Ray` oft collided with user code.
1.13
----
* Switched 'ortho' to follow the OpenGL handedness.
1.12.1
------
* Added "swizzle" lenses **e.g.** `_yzx`, which are useful for working with libraries like `gl`.
1.12
------
* Added 'transpose'
* Added missing 'Mxy' matrices up to 4 dimensions -- they were commonly reimplemented by users.
1.11.3
------
* Fixed an issue with `UndecidableInstances` on GHC 7.6.3
1.11.2
------
* Added `Linear.Perspective`.
1.11.1
------
* Added `_Point`, `relative` and a few instances for `Point`.
1.11
----
* Changed the 'representation' of `V n` from `E (V n)`, which was hard to use, to `Int`, which is a bit too permissive, but is easy to use.
1.10.1
------
* Added `Linear.V2.angle`.
1.10
----
* Added `Hashable` instances.
1.9.1
-----
* Added a role annotation to `V n a` to prevent users from using GHC 7.8's `Coercible` machinery to violate invariants.
1.9.0.1
-----
* Fixed a broken build
1.9
---
* Added `MonadZip` instances.
* Added `MonadFix` instances.
* Added `Control.Lens.Each.Each` instances
1.8.1
-----
* Bugfixed `slerp`
1.8
---
* Added missing `Unbox` instances for working with unboxed vectors of `linear` data types.
1.7
---
* Fixed `axisAngle`
* `unit` now has a rank 1 type.
1.5
---
* `lens` 4 compatibility
1.4
---
* Renamed `incore` to `column` and added an example.
1.3.1.1
-------
* Build bugfix
1.3.1
---
* Better implementations of `basis` and `basisFor`.
* Derived Generic instances.
1.2
---
* Improved matrix multiplication to properly support the sparse/sparse case.
1.1.4
-----
* Marked modules `Trustworthy` as necessary.
1.1.2
-----
* Dependency bump for `reflection` compatibility
1.1.1
-----
* Fixed an infinite loop in the default definition of `liftI2`.
1.1
---
* Added `Additive` instances for `[]`, `Maybe` and `Vector`.
1.0
---
* Strict vectors
* Exported `mkTransformationMat`
* Bumped dependency bounds
0.9.1 [bug fix]
-----
* Exported `Linear.V0`!
0.9
---
* Added sparse vector support.
0.8
---
* Added `Linear.V0`
0.7
---
* Added `Linear.Instances`
* More documentation
0.6
---
* Removed the direct dependency on `lens`.
* Added `Linear.Core` to cover vector spaces as corepresentable functors.
0.5
-------
* Added `Ix` instances for `V2`, `V3`, and `V4`
0.4.2.2
-------
* Removed the upper bound on `distributive`
0.2
---
* Initial hackage release