-
-
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.9.0 release notes #1511
Merged
adelbertc
merged 5 commits into
typelevel:master
from
travisbrown:topic/0.9.0-release-notes
Jan 15, 2017
Merged
Changes from 4 commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
17c8f1d
Draft of 0.9.0 release notes
travisbrown d43ee8c
Update after newly merged PRs
travisbrown 366c17c
Two more changes for 0.9.0
travisbrown 87c7af9
Three more PRs in 0.9.0 release notes
travisbrown 70804d8
Add new doc PR, minor fixes, update date
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,81 @@ | ||
## Version 0.9.0 | ||
|
||
> 2017 January 3 | ||
|
||
The biggest user-facing change in this release is to the behavior of the `flatMap` (and related methods) provided by `EitherOps` for the standard library's `Either` for Scala 2.10 and 2.11. These methods now match the behavior of the `flatMap` on `Either` in Scala 2.12 in that they don't require the left-hand side types to match. | ||
|
||
For example, the following would previously compile on 2.12, but not 2.10 or 2.11: | ||
|
||
```scala | ||
import cats.syntax.either._ | ||
|
||
sealed abstract class AppError | ||
case object Error1 extends AppError | ||
case object Error2 extends AppError | ||
|
||
val either1: Either[Error1.type, String] = Right("hi") | ||
val either2: Either[Error2.type, String] = Right("bye") | ||
|
||
val result: Either[AppError, String] = for { | ||
v1 <- either1 | ||
v2 <- either2 | ||
} yield v1 + v2 | ||
``` | ||
|
||
This code now works equivalently on all supported Scala versions. | ||
|
||
Changes: | ||
|
||
* [#1424](https://github.com/typelevel/cats/pull/1424): `NonEmptyList` and `NonEmptyVector` are now covariant | ||
* [#1506](https://github.com/typelevel/cats/pull/1506): `flatMap` provided by `Either` syntax matches 2.12's `Either#flatMap` | ||
* [#1466](https://github.com/typelevel/cats/pull/1466): Improved stack safety for `StateT` | ||
* [#1510](https://github.com/typelevel/cats/pull/1510): `catchNonFatal` for `Future` is now asynchronous | ||
|
||
Bug fixes: | ||
|
||
* [#1465](https://github.com/typelevel/cats/pull/1465) and [#1507](https://github.com/typelevel/cats/pull/1507): Stack safety law for `Monad#tailRecM` is less eager and doesn't throw exceptions | ||
|
||
New type class instances: | ||
|
||
* [#1475](https://github.com/typelevel/cats/pull/1475): `Reducible` instances for `Eval` and `Id` | ||
* [#1496](https://github.com/typelevel/cats/pull/1496): `Choice` instance for `Kleisli` | ||
* [#1484](https://github.com/typelevel/cats/pull/1484): `Show` instance for `Symbol` | ||
|
||
Other additions: | ||
|
||
* [#1446](https://github.com/typelevel/cats/pull/1446): `Cofree` comonad | ||
* [#1520](https://github.com/typelevel/cats/pull/1520) and [#1522](https://github.com/typelevel/cats/pull/1522): `intercalate` for `Foldable` (and `intercalate1` for `Reducible`) | ||
* [#1454](https://github.com/typelevel/cats/pull/1454): `asLeft` and `asRight` syntax methods for creating `Either` values | ||
* [#1468](https://github.com/typelevel/cats/pull/1468): `tupleLeft` and `tupleRight` for `Functor` | ||
* [#1500](https://github.com/typelevel/cats/pull/1500): `putLeft`, `putRight`, `mergeLeft`, and `mergeRight` methods for `Ior` | ||
* [#1495](https://github.com/typelevel/cats/pull/1495): `show` string interpolator | ||
* [#1448](https://github.com/typelevel/cats/pull/1448): `Validated#findValid` (like `orElse` but error accumulating) | ||
* [#1455](https://github.com/typelevel/cats/pull/1455): `reverse` for `NonEmptyList` | ||
* [#1517](https://github.com/typelevel/cats/pull/1517): `zipWithIndex` for `NonEmptyList` | ||
* [#1512](https://github.com/typelevel/cats/pull/1512) and [#1514](https://github.com/typelevel/cats/pull/1514): `filterNot` for `NonEmptyList` and `NonEmptyVector` | ||
* [#1480](https://github.com/typelevel/cats/pull/1480): `FunctionK#and` | ||
* [#1481](https://github.com/typelevel/cats/pull/1481): `EitherT.cond` | ||
|
||
Miscellaneous improvements (syntax, documentation, tests): | ||
|
||
* [#1440](https://github.com/typelevel/cats/pull/1440): Improved type class documentation | ||
* [#1442](https://github.com/typelevel/cats/pull/1442): Improved documentation for `Semigroup` and `Monoid` | ||
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. Improved documentation for Functor/Applicative/Traverse as well :-) #1513 |
||
* [#1479](https://github.com/typelevel/cats/pull/1479): Some instance traits are now package-private | ||
* [#1445](https://github.com/typelevel/cats/pull/1445): Workaround for Tut issue | ||
* [#1477](https://github.com/typelevel/cats/pull/1477): Use new kind-projector syntax for polymorphic lambdas | ||
* [#1483](https://github.com/typelevel/cats/pull/1483): Binary compatibility checking is now part of the build for cats-kernel | ||
* [#1469](https://github.com/typelevel/cats/pull/1469): More consistent instance names | ||
* [#1490](https://github.com/typelevel/cats/pull/1490): Avoid some duplication in build via sbt-travisci | ||
* [#1497](https://github.com/typelevel/cats/pull/1497): Site list clean-up | ||
|
||
And version updates: | ||
|
||
* [#1499](https://github.com/typelevel/cats/pull/1499): 2.12 version is now 2.12.1 | ||
* [#1509](https://github.com/typelevel/cats/pull/1509): Scala.js version is 0.6.14 | ||
|
||
As always thanks to everyone who filed issues, participated in the Cats Gitter | ||
channel, submitted code, or helped review pull requests. | ||
|
||
## Version 0.8.1 | ||
|
||
> 2016 November 9 | ||
|
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.
This just moved the
Choice
instance around, because there was an implicit ambiguity when you wanted aCategory[Kleisli, α, α]
.Should we just put this under miscellaneous as something like "Simpler creation of some
SemigroupK
andMonoidK
instances" ?