-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft of 0.7.0 release notes #1259
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
ae53e37
Draft of 0.7.0 release notes
travisbrown f33e0f1
Add recent changes
travisbrown c92a137
Add 0.6-to-0.7 migration notes
travisbrown db058ad
Minor edits to migration guide
travisbrown fa4c298
Add new authors
travisbrown bb4a3d7
Update versions
travisbrown 1ccd221
Update release notes to reflect new NonEmpty* changes
travisbrown aea278b
Update 0.7.0 release notes for recent changes
travisbrown 6edc820
Add new contributors
travisbrown edbcb43
Last update for 0.7.0
travisbrown File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,137 @@ | ||
## Version 0.7.0 | ||
|
||
> 2016 August 2 | ||
|
||
Version 0.7.0 is the seventh Cats release, and includes several major rearrangements and changes to names. | ||
|
||
### Migration notes | ||
|
||
If you're updating from Cats 0.6.0, it's likely that you'll need to make extensive (but mostly mechanical) changes. The following list includes some of the changes that are likely to be necessary for most projects; see the complete list of changes below for more detail. | ||
|
||
* All references to `cats.std` will need to be changed to `cats.instances` ([#1140](https://github.com/typelevel/cats/pull/1140)). If you're using `cats.std.all` or the other `cats.std` objects with wildcard imports, this is likely to be the only change you need to make. If you are importing or referring to instance definitions by name, you'll need to be aware that the naming convention has changed (see [#1066](https://github.com/typelevel/cats/pull/1066), [#1068](https://github.com/typelevel/cats/pull/1068), [#1110](https://github.com/typelevel/cats/pull/1110), and [#1122](https://github.com/typelevel/cats/pull/1122)). | ||
* `NonEmptyList` and `NonEmptyVector` are no longer type aliases for `OneAnd`, so any code using `OneAnd` to construct or pattern match on these types will need to be changed to use `NonEmptyList` or `NonEmptyVector` directly. There are also some API changes; for example, `unwrap` calls will need to be replaced by `toList` or `toVector`, and `NonEmptyList(1, 2, 3)` is now `NonEmptyList.of(1, 2, 3)`. | ||
* `pureEval` has been removed from `Applicative` ([#1234](https://github.com/typelevel/cats/pull/1234)), and has not been replaced, so if you are relying on it for laziness or effect capturing (which wasn't enforced or guaranteed), you'll need to find another approach. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What I suggested was to require a |
||
* All references to `NaturalTransformation` will need to be replaced by either `FunctionK` or `~>`. | ||
* The `FlatMap` type class now has a `tailRecM` method that is designed to support stack-safe recursive monadic binding. If your monad's `flatMap` is stack safe, you can implement a stack-safe `tailRecM` by calling `Monad#defaultTailRecM`. The stack safety of `tailRecM` is not enforced, but if your implementation is stack safe, you should also provide an instance of the `RecursiveTailRecM` marker type class. | ||
* If you are interpreting a free algebra into a context `F` with `foldMap`, you'll now need `F` to have an instance of the `RecursiveTailRecM` marker type class (in addition to the `Monad` instance). | ||
|
||
If you run into any issues while updating, please get in touch on [Gitter](https://gitter.im/typelevel/cats). | ||
|
||
### Changes | ||
|
||
This release includes a fix for a bug in 0.6.0 (also fixed in 0.6.1): | ||
|
||
* [#1062](https://github.com/typelevel/cats/pull/1062): `Order` instances for tuples are now lexicographic (instead of only comparing first elements) | ||
|
||
And other bug fixes: | ||
|
||
* [#1096](https://github.com/typelevel/cats/pull/1096): `inj` and `prj` on `Inject` now work consistently with respect to `null` | ||
|
||
And some additions: | ||
|
||
* [#1289](https://github.com/typelevel/cats/pull/1289) and [#1306](https://github.com/typelevel/cats/pull/1306): `EitherT` and improved `Either` syntax | ||
* [#1280](https://github.com/typelevel/cats/pull/1280): `FlatMap` now has a `tailRecM` method | ||
* [#1280](https://github.com/typelevel/cats/pull/1280): `RecursiveTailRecM` marker type class indicating that `tailRecM` is stack safe | ||
* [#1266](https://github.com/typelevel/cats/pull/1266): `FreeT` monad transformer | ||
* [#1225](https://github.com/typelevel/cats/pull/1225): `FunctorFilter` and `TraverseFilter` | ||
* [#1121](https://github.com/typelevel/cats/pull/1121): `valueOr` and `merge` for `Validated` | ||
* [#1188](https://github.com/typelevel/cats/pull/1188): `toValidatedNel` for `XorT` | ||
* [#1127](https://github.com/typelevel/cats/pull/1127): `toTry` for `Xor` | ||
* [#1269](https://github.com/typelevel/cats/pull/1269): `catchNonFatal` for `ApplicativeError` | ||
* [#1130](https://github.com/typelevel/cats/pull/1130): `isEmpty` syntax method for `Monoid` | ||
* [#1167](https://github.com/typelevel/cats/pull/1167): `minimum`, `maximum`, and related helper methods for `Foldable` and `Reducible` | ||
* [#1243](https://github.com/typelevel/cats/pull/1243): `distinct` on `NonEmptyList` and `NonEmptyVector` | ||
* [#1134](https://github.com/typelevel/cats/pull/1134): `cats.syntax.list` for à la carte list syntax imports | ||
* [#1191](https://github.com/typelevel/cats/pull/1191): `cats.syntax.monoid` for à la carte `Monoid` syntax imports | ||
* [#588](https://github.com/typelevel/cats/pull/588) and [#1063](https://github.com/typelevel/cats/pull/1063): `IdT`, the identity monad transformer | ||
* [#1021](https://github.com/typelevel/cats/pull/1021) and [#1221](https://github.com/typelevel/cats/pull/1221): `Nested` (represents nested composition of type constructors) | ||
* [#1172](https://github.com/typelevel/cats/pull/1172): `toNested` for `OptionT` and `XorT` | ||
* [#1102](https://github.com/typelevel/cats/pull/1102) and [#1170](https://github.com/typelevel/cats/pull/1170): `Comparison` (represents the result of an `Order` comparison) | ||
* [#1090](https://github.com/typelevel/cats/pull/1090): `Kleisli.lift` | ||
* [#1169](https://github.com/typelevel/cats/pull/1169): `lift`, `inspect`, and related methods for `StateT` | ||
* [#1114](https://github.com/typelevel/cats/pull/1114): `size` for `Foldable` | ||
* [#1193](https://github.com/typelevel/cats/pull/1193): `reduceLeftM` for `Reducible` | ||
* [#1097](https://github.com/typelevel/cats/pull/1097): Functor variance helpers (`widen` for `Functor` and `narrow` for `Contravariant`) | ||
* [#1207](https://github.com/typelevel/cats/pull/1207): `tell` for `Writer` and `WriterT`, `value` for `Writer` | ||
* [#1155](https://github.com/typelevel/cats/pull/1155): Convenience methods for constructing `XorT` values | ||
* [#1085](https://github.com/typelevel/cats/pull/1085): `runTailRec` and `foldLeftM` for `Free` | ||
* [#1299](https://github.com/typelevel/cats/pull/1299): `ContravariantCartesian` type class | ||
|
||
And some name changes: | ||
|
||
* [#1140](https://github.com/typelevel/cats/pull/1140): `cats.std` is now `cats.instances` | ||
* [#1066](https://github.com/typelevel/cats/pull/1066), [#1068](https://github.com/typelevel/cats/pull/1068), [#1110](https://github.com/typelevel/cats/pull/1110), and [#1122](https://github.com/typelevel/cats/pull/1122): More unique type class instance names | ||
* [#1072](https://github.com/typelevel/cats/pull/1072): `NaturalTransformation` is now `FunctionK` | ||
* [#1085](https://github.com/typelevel/cats/pull/1085): `mapSuspension` on `Free` is now `compile` | ||
* [#1111](https://github.com/typelevel/cats/pull/1111): `Free.Gosub` is now `Free.FlatMapped` | ||
* [#1133](https://github.com/typelevel/cats/pull/1133): `Composite*` traits for binary type classes are renamed to `Composed*` for consistency (and are now private) | ||
|
||
And other API changes: | ||
|
||
* [#1231](https://github.com/typelevel/cats/pull/1231): `NonEmptyList` is now a case class instead of a type alias for a `OneAnd` | ||
* [#1137](https://github.com/typelevel/cats/pull/1137): `NonEmptyVector` is now a value class instead of a type alias for a `OneAnd` | ||
* [#1267](https://github.com/typelevel/cats/pull/1267): Overloaded variadic `apply` on `NonEmptyList` and `NonEmptyVector` is now `of` | ||
* [#1234](https://github.com/typelevel/cats/pull/1234): `Applicative#pureEval` has been removed | ||
* [#1202](https://github.com/typelevel/cats/pull/1202): `MonadFilter` no longer has a `filterM` method (see [#1225](https://github.com/typelevel/cats/pull/1225)) | ||
* [#1075](https://github.com/typelevel/cats/pull/1075): `foldMap` on `Free` now requires a `MonadRec` instance (instead of simply `Monad`) | ||
* [#1085](https://github.com/typelevel/cats/pull/1085): `Free.suspend` no longer requires an `Applicative` instance | ||
* [#1084](https://github.com/typelevel/cats/pull/1084): Safer `toString` for `Free` and `FreeApplicative` | ||
* [#1100](https://github.com/typelevel/cats/pull/1100): Simplified constraints for methods on `Xor` and related types | ||
* [#1171](https://github.com/typelevel/cats/pull/1171): Prioritization traits are now private | ||
|
||
And many new instances: | ||
|
||
* [#1059](https://github.com/typelevel/cats/pull/1059) and [#1147](https://github.com/typelevel/cats/pull/1147): `Monoid`, `MonadError`, and other instances for `scala.util.Try` | ||
* [#1299](https://github.com/typelevel/cats/pull/1299): `Monad` for `Tuple2` | ||
* [#1211](https://github.com/typelevel/cats/pull/1211): `Contravariant` for `Eq` | ||
* [#1220](https://github.com/typelevel/cats/pull/1220): `Traverse` and `Comonad` for `Tuple2` | ||
* [#1103](https://github.com/typelevel/cats/pull/1103): `Order`, `MonadError`, and other instances for `OptionT` | ||
* [#1106](https://github.com/typelevel/cats/pull/1106): `Semigroup` and `Monoid` for `XorT` | ||
* [#1138](https://github.com/typelevel/cats/pull/1138): `SemigroupK` and `MonadCombine` for `StateT` | ||
* [#1128](https://github.com/typelevel/cats/pull/1128) `Semigroup` and `Monoid` for `Applicative` | ||
* [#1049](https://github.com/typelevel/cats/pull/1049): `CoflatMap` for `WriterT` | ||
* [#1076](https://github.com/typelevel/cats/pull/1076) and [#1261](https://github.com/typelevel/cats/pull/1261): `MonadRec` instances for `Eval`, `StateT`, and `Future` | ||
* [#1105](https://github.com/typelevel/cats/pull/1105): `Unapply` instances for `Nested` shapes | ||
|
||
And miscellaneous improvements to style and performance: | ||
|
||
* [#1079](https://github.com/typelevel/cats/pull/1079): More consistent type lambdas | ||
* [#1300](https://github.com/typelevel/cats/pull/1300): Much faster `Monoid` instances for `Map` | ||
|
||
And improvements to the documentation: | ||
|
||
* [#1145](https://github.com/typelevel/cats/pull/1145): Major rearrangements and additions | ||
* [#1136](https://github.com/typelevel/cats/pull/1136): New chart for symbols | ||
* [#1052](https://github.com/typelevel/cats/pull/1052): New "Why?" section | ||
* [#1095](https://github.com/typelevel/cats/pull/1095), [#1226](https://github.com/typelevel/cats/pull/1226), and [#1227](https://github.com/typelevel/cats/pull/1227): New FAQ section | ||
* [#1163](https://github.com/typelevel/cats/pull/1163): New import guide section | ||
* [#1217](https://github.com/typelevel/cats/pull/1217), [#1223](https://github.com/typelevel/cats/pull/1223), and [#1239](https://github.com/typelevel/cats/pull/1239): New related projects | ||
* [#1057](https://github.com/typelevel/cats/pull/1057) and [#1157](https://github.com/typelevel/cats/pull/1157): Copy-paste-friendly code blocks | ||
* [#1104](https://github.com/typelevel/cats/pull/1104) and [#1115](https://github.com/typelevel/cats/pull/1115): Kitchen-sink imports in example code | ||
* [#1050](https://github.com/typelevel/cats/pull/1050): Switch to [rouge](https://github.com/jneen/rouge) for syntax highlighting in the GitHub Pages site | ||
* [#1119](https://github.com/typelevel/cats/pull/1119): Fix for `contramap` signature | ||
* [#1141](https://github.com/typelevel/cats/pull/1141) and [#1162](https://github.com/typelevel/cats/pull/1162): Fixes for cats-kernel documentation | ||
* [#1149](https://github.com/typelevel/cats/pull/1149): Spelling consistency for "type class" | ||
* [#1183](https://github.com/typelevel/cats/pull/1183): More documentation about use of Machinist, Simulacrum, and kind-projector | ||
* [#1056](https://github.com/typelevel/cats/pull/1056): Clarification about forgetful functors and the free monad | ||
* [#1131](https://github.com/typelevel/cats/pull/1131) and [#1241](https://github.com/typelevel/cats/pull/1241): Simplified project structure listings | ||
* [#1185](https://github.com/typelevel/cats/pull/1185), [#1186](https://github.com/typelevel/cats/pull/1186), and [#1189](https://github.com/typelevel/cats/pull/1189): Miscellaneous improvements for `Traverse` documentation | ||
|
||
And the build: | ||
|
||
* [#1159](https://github.com/typelevel/cats/pull/1159): Binary compatibility checking for cats-kernel via MiMa | ||
* [#1256](https://github.com/typelevel/cats/pull/1256): More reliable Scala.js testing in Travis CI | ||
* [#1123](https://github.com/typelevel/cats/pull/1123): cats-kernel is now included in the API documentation | ||
* [#1051](https://github.com/typelevel/cats/pull/1051): Empty Scaladocs for 2.10 to avoid issues macros cause for API documentation generation on 2.10 | ||
* [#1154](https://github.com/typelevel/cats/pull/1154): Better POM hygiene: no Scoverage dependency | ||
* [#1153](https://github.com/typelevel/cats/pull/1153) and [#1218](https://github.com/typelevel/cats/pull/1218): More consistent use of Simulacrum for syntax | ||
* [#1093](https://github.com/typelevel/cats/pull/1093): Scalastyle is now aware of shared and Scala.js-specific source files | ||
* [#1142](https://github.com/typelevel/cats/pull/1142): Additional formatting rules for Scalastyle | ||
* [#1099](https://github.com/typelevel/cats/pull/1099): Type lambda style is now enforced by Scalastyle | ||
* [#1258](https://github.com/typelevel/cats/pull/1258): Version updates for SBT and SBT plugins | ||
|
||
We also welcome [Kailuo Wang](https://github.com/typelevel/cats/pull/1129), [Peter Neyens](https://github.com/typelevel/cats/pull/1179), and [Oscar Boykin](https://github.com/typelevel/cats/pull/1180) as new Cats maintainers! | ||
|
||
## Version 0.6.1 | ||
|
||
> 2016 July 14 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for adding this section @travisbrown. I think this will be really helpful for people.