<commit_before>3.8
---
* Moved `At(at)` and `Contains(contains)` to `Control.Lens.At` and factored out `Ixed(ix)`.
* Deprecated `_at` and `resultAt`.
* Removed various `ordinal` and `ix` combinators, which are subsumed by `Ixed(ix)`.
* Changed `_head`, `_tail`, `_init` and `_last` to traversals in `Data.Vector.Lens` and `Data.Vector.Generic.Lens`.
* `Strict(strict)` is now a `Simple Iso`.
* Added `withPrism` and `withIso`.
* Added `wrapped'` and `unwrapped'` for scenarios where you need the help with type inference.
* Added `prism'` to construct `SimplePrism`s.
* Added `has` and `hasn't`.
* Replaced each of the different `SimpleFoo` type aliases with `Foo'` throughout.
* Made sweeping changes to `Iso` and `Prism` and `Indexed` lenses internally. They are now based on `profunctors`. This affects how you use `indexed` in the resulting code and dramatically changed the meaning of `Overloaded`.
* Added `Control.Lens.Operators` for users who insist on qualified use, but want access to the operators.
* Added `Control.Lens.Equality` for witnessing type equality, effectively a stronger form of `Iso` that can be used to safely cast.
* Added combinators and prisms to `Control.Exception.Lens` that enable you to work with GHC's extensible exceptions more easily.
* Added Numeric.Lens: `base` shows and reads integers at base-2 through base-36.
* Added `index` and `indices`, and removed `iwhere` and `iwhereOf`. Use `itraversed.indices even` and `bar.indices (>3)` instead.
* Added a notion of `Measured` traversals, folds, getters, setters, actions, etc.
* Generalized combinators to pass through measures and indices unmodified wherever possible.
* Converted `Zipper` to walk a `Magma` based on the original structure and to use indices from indexed traversals when restoring from tape. This also means that when zipping around within a balanced structure with ascending keys `moveTo` can operate in logarithmic time.
* Added `Control.Lens.Level` which provides the breadth-first-search Traversals `levels` and `ilevels` which can be used to do (optionally depth-limited) breadth-first searches through arbitrary traversals reaching all leaves at finite depth in finite time. To use these in full accordance with the laws you should restrict yourself to commutative operations and finite containers, but they are useful even in the absence of these properties.
* Added `Control.Lens.Review` which factors the `review` functionality out of `Prism` and exposes `unto`, which is to `review` what `to` is to `view`.

3.7.1.2 [maintenance release]
-------
* Made the doctest test suite hide all but the exact versions of packages used to build this package to avoid problems with complicated user environments.
* Removed doctests based on `:t` as they are fragile and break across GHC versions.
* Fixed GHC 7.0.4 compatibility by guarding `DefaultSignatures` in `Control.Lens.Each`.

3.7.1.1 [maintenance release]
-------
* Removed tests that will (likely) fail in the presence of `hashable` 1.2
<commit_msg>CHANGELOG for contravariant changes<commit_after>3.8
---
* Moved `At(at)` and `Contains(contains)` to `Control.Lens.At` and factored out `Ixed(ix)`.
* Deprecated `_at` and `resultAt`.
* Removed various `ordinal` and `ix` combinators, which are subsumed by `Ixed(ix)`.
* Changed `_head`, `_tail`, `_init` and `_last` to traversals in `Data.Vector.Lens` and `Data.Vector.Generic.Lens`.
* `Strict(strict)` is now a `Simple Iso`.
* Added `withPrism` and `withIso`.
* Added `wrapped'` and `unwrapped'` for scenarios where you need the help with type inference.
* Added `prism'` to construct `SimplePrism`s.
* Added `has` and `hasn't`.
* Replaced each of the different `SimpleFoo` type aliases with `Foo'` throughout.
* Made sweeping changes to `Iso` and `Prism` and `Indexed` lenses internally. They are now based on `profunctors`. This affects how you use `indexed` in the resulting code and dramatically changed the meaning of `Overloaded`.
* Added `Control.Lens.Operators` for users who insist on qualified use, but want access to the operators.
* Added `Control.Lens.Equality` for witnessing type equality, effectively a stronger form of `Iso` that can be used to safely cast.
* Added combinators and prisms to `Control.Exception.Lens` that enable you to work with GHC's extensible exceptions more easily.
* Added Numeric.Lens: `base` shows and reads integers at base-2 through base-36.
* Added `index` and `indices`, and removed `iwhere` and `iwhereOf`. Use `itraversed.indices even` and `bar.indices (>3)` instead.
* Added a notion of `Measured` traversals, folds, getters, setters, actions, etc.
* Generalized combinators to pass through measures and indices unmodified wherever possible.
* Converted `Zipper` to walk a `Magma` based on the original structure and to use indices from indexed traversals when restoring from tape. This also means that when zipping around within a balanced structure with ascending keys `moveTo` can operate in logarithmic time.
* Added `Control.Lens.Level` which provides the breadth-first-search Traversals `levels` and `ilevels` which can be used to do (optionally depth-limited) breadth-first searches through arbitrary traversals reaching all leaves at finite depth in finite time. To use these in full accordance with the laws you should restrict yourself to commutative operations and finite containers, but they are useful even in the absence of these properties.
* Added `Control.Lens.Review` which factors the `review` functionality out of `Prism` and exposes `unto`, which is to `review` what `to` is to `view`.
* Added `contramapped` and `argument` for mapping over inputs.

3.7.1.2 [maintenance release]
-------
* Made the doctest test suite hide all but the exact versions of packages used to build this package to avoid problems with complicated user environments.
* Removed doctests based on `:t` as they are fragile and break across GHC versions.
* Fixed GHC 7.0.4 compatibility by guarding `DefaultSignatures` in `Control.Lens.Each`.

3.7.1.1 [maintenance release]
-------
* Removed tests that will (likely) fail in the presence of `hashable` 1.2

{'fraction_non_alphanumeric': 0.09196530846015383, 'fraction_numerical': 0.006218294878088692, 'mean_word_length': 4.776937618147448, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7275002', 'n_tokens_mistral': 1792, 'n_tokens_neox': 1699, 'n_words': 827}