Prepare for the 1.0.0-MF release#1702
Conversation
|
Also we have update: 5 more first-time contributors |
Codecov Report
@@ Coverage Diff @@
## master #1702 +/- ##
=======================================
Coverage 94.87% 94.87%
=======================================
Files 241 241
Lines 4139 4139
Branches 103 103
=======================================
Hits 3927 3927
Misses 212 212Continue to review full report at Codecov.
|
|
I was going to wish for a way to do MTL style but that's supposed to be removed instead? I guess it requires a better typeclass encoding? |
|
@i-am-the-slime It's going to be its own separate module, |
|
I will finish the PR for #1600 this week. |
|
|
||
| To migrate from 0.9.0 | ||
|
|
||
| * `cats.free.Inject` is moved from `cats.free` to `cats.core` and renamed to `cats.InjectK`; |
There was a problem hiding this comment.
this implies moving to a cats.core package-- maybe use cats-core and cats-free to refer to modules?
There was a problem hiding this comment.
thanks! corrected.
| instead. The easiest way might be this [sbt-plugin](https://github.com/fiadliel/sbt-partial-unification). | ||
| * The creation methods (`left`, `right`, `apply`, `pure`, etc.) in `EitherT` is improved to take less | ||
| type arguments. | ||
| * Several `cats.core` type class instances for `cats.kernel` were moved from their compainion objects to separate traits |
There was a problem hiding this comment.
similar to above, this implies a cats.core package
|
|
||
| * `cats` no longer publish the all included bundle package `"org.typelevel" % "cats"`, use `cats-core`, `cats-free`, or `cats-law` | ||
| accordingly instead. If you need `cats.free`, use `"org.typelevel" % "cats-free"`, if you need `cats-law` use | ||
| `"org.typelevel" % "cats-law"`, if neither, use `"org.typelevel" % "cats-core"`. |
There was a problem hiding this comment.
I think it is cats-laws rather than cats-law?
There was a problem hiding this comment.
You are right, thanks for the review.
| ``` | ||
|
|
||
| This will pull in all of Cats' modules. If you only require some | ||
| This will pull in the cats-core module. If you require some other functionlaity |
| To migrate from 0.9.0 | ||
| ### To migrate from 0.9.0 | ||
|
|
||
| Appology for the number of breaking changes in this release. We are trying to include |
| #### Generic libraries to support pure functional programming | ||
|
|
||
| * [Circe](https://github.com/circe/circe): pure functional JSON library. | ||
| * [cats-effects](https://github.com/typelevel/cats-effect): provide a standard `IO` type for the cats ecosystem |
There was a problem hiding this comment.
Project name is cats-effect (singular).
There was a problem hiding this comment.
Also, this project doesn't provide just IO, but also the Sync, Async and Effect type classes, which I think are important, since this is an innovation.
|
|
||
| * [Circe](https://github.com/circe/circe): pure functional JSON library. | ||
| * [cats-effects](https://github.com/typelevel/cats-effect): provide a standard `IO` type for the cats ecosystem | ||
| * [cats-mtl](https://github.com/typelevel/cats-mtl): ?????? |
There was a problem hiding this comment.
cats-effect and cats-mtl deserve their own category imo, as they are sub-modules of Cats, just like cats-kernel, but with a different release cycle.
There was a problem hiding this comment.
In fact alleycats and mouse probably fall into that category as well. But I am not sure how to name this category though. These projects all have different set of maintainers and thus are more independent from each other than just submodules of cats with different release cycle.
| ## <a name="getting-started" href="#getting-started"></a>Getting Started | ||
|
|
||
|
|
||
| Cats is currently available for Scala 2.10, 2.11 and 2.12. |
There was a problem hiding this comment.
A mention that Cats supports Scala.js would be nice
a46dd8a to
358d55b
Compare
edmundnoble
left a comment
There was a problem hiding this comment.
Wonderful work, sorry for all the nitpicks :)
|
|
||
| ### To migrate from 0.9.0 | ||
|
|
||
| Apology for the number of breaking changes in this release. We are trying to include |
There was a problem hiding this comment.
I recommend "we apologize".
| ### To migrate from 0.9.0 | ||
|
|
||
| Apology for the number of breaking changes in this release. We are trying to include | ||
| as many breaking changes in this release before we lock down the API. |
There was a problem hiding this comment.
I recommend "as many breaking changes in this release as possible".
| Apology for the number of breaking changes in this release. We are trying to include | ||
| as many breaking changes in this release before we lock down the API. | ||
|
|
||
| * `cats` no longer publish the all inclusive bundle package `"org.typelevel" % "cats"`, use `cats-core`, `cats-free`, or `cats-law` |
| instead. The easiest way might be this [sbt-plugin](https://github.com/fiadliel/sbt-partial-unification). | ||
| * `FunctorFilter`, `MonadCombine`, `MonadFilter`, `MonadReader`, `MonadState`, `MonadTrans`, `MonadWriter` and `TraverseFilter` are no longer in `cats`, the functionalities they provided are inhereted by the new [cats-mtl](https://github.com/edmundnoble/cats-mtl) project. Please check [here](https://github.com/edmundnoble/cats-mtl#migration-guide) for migration guide. | ||
| * `CartesianBuilder` (i.e. `|@|`) syntax is deprecated, use the apply syntanx on tuples instead. E.g. `(x |@| y |@| z).map(...)` should be replaced by `(x, y, z).mapN(...)` | ||
| * The creation methods (`left`, `right`, `apply`, `pure`, etc.) in `EitherT` is improved to take less |
| * `foldLeftM` is removed from `Free`, use `foldM` on `Foldable` instead, see #1117 for detail. | ||
| * `iteratorFoldM` was removed from `Foldable` due to #1716 | ||
| * Apply syntax on tuple (e.g. `(x, y, z).map3(...)`) was moved from `cats.syntax.tuple._` to `cats.syntax.apply._` and renamed to `mapN`, `contramapN` and `imapN` respectively. | ||
| * `Split` is removed, the method `split` is moved to `Arrow`. Note that only under `CommutativeArrow` does it guarantee the non-interference between the effects. see #1567 |
There was a problem hiding this comment.
I'd add an and here after the comma.
|
|
||
| * [`cats-effect`](https://github.com/typelevel/cats-effect): `IO`, `Sync`, `Async` and `Effect` type classes for the cats ecosystem | ||
| * [`cats-mtl`](https://github.com/edmundnoble/cats-mtl): transformer typeclasses for cats' Monads, Applicatives and Functors. | ||
| * [`alleycats`](https://github.com/non/alleycats): Cats instances and classes which are outlaws, miscreants, and ne'er-do-wells. |
There was a problem hiding this comment.
Maybe we can be a bit more descriptive here. Perhaps "cats instances and classes which are not lawful"?
| enabled syntax ops are also removed. Please use the partial unification SI-2712 fix | ||
| instead. The easiest way might be this [sbt-plugin](https://github.com/fiadliel/sbt-partial-unification). | ||
| * `FunctorFilter`, `MonadCombine`, `MonadFilter`, `MonadReader`, `MonadState`, `MonadTrans`, `MonadWriter` and `TraverseFilter` are no longer in `cats`, the functionalities they provided are inhereted by the new [cats-mtl](https://github.com/edmundnoble/cats-mtl) project. Please check [here](https://github.com/edmundnoble/cats-mtl#migration-guide) for migration guide. | ||
| * `CartesianBuilder` (i.e. `|@|`) syntax is deprecated, use the apply syntanx on tuples instead. E.g. `(x |@| y |@| z).map(...)` should be replaced by `(x, y, z).mapN(...)` |
| * `CartesianBuilder` (i.e. `|@|`) syntax is deprecated, use the apply syntanx on tuples instead. E.g. `(x |@| y |@| z).map(...)` should be replaced by `(x, y, z).mapN(...)` | ||
| * The creation methods (`left`, `right`, `apply`, `pure`, etc.) in `EitherT` is improved to take less | ||
| type arguments. | ||
| * Several `cats-core` type class instances for `cats.kernel` were moved from their compainion objects to separate traits |
| * [#1691](https://github.com/typelevel/cats/pull/1691): Build JVM before JS on travis. by @peterneyens | ||
| * [#1677](https://github.com/typelevel/cats/pull/1677): Update readme with the new dev channel.. by @kailuowang | ||
| * [#1673](https://github.com/typelevel/cats/pull/1673): Use 2 workers in JVM build. by @ceedubs | ||
| * [#1671](https://github.com/typelevel/cats/pull/1671): Fixing `Eq[Function1]` in testsJS; break JS build to separate matrix build.. by @kailuowang |
| * [#1591](https://github.com/typelevel/cats/pull/1591): Improve test coverage. by @peterneyens | ||
| * [#1590](https://github.com/typelevel/cats/pull/1590): Check monad laws for `Cokleisli`. by @peterneyens | ||
| * [#1588](https://github.com/typelevel/cats/pull/1588): Docs/Tutorial -- Simplify `Kleisli` example. by @RawToast | ||
| * [#1581](https://github.com/typelevel/cats/pull/1581): restore the alphabetical order of maintainers list.. by @kailuowang |
| * [#1566](https://github.com/typelevel/cats/pull/1566): Fix mistake in documentation of `Group.remove`. by @LukaJCB | ||
| * [#1563](https://github.com/typelevel/cats/pull/1563): Remove references of the NEL `OneAnd` alias. by @peterneyens | ||
| * [#1561](https://github.com/typelevel/cats/pull/1561): Fix incorrect numbering in `FreeMonads` doc. by @cb372 | ||
| * [#1555](https://github.com/typelevel/cats/pull/1555): by fix scala.js badge version @xuwei-k |
|
@edmundnoble and @durban thanks so much for the review. feedback addressed. |
| We apologize for the number of breaking changes in this release. We are trying to include | ||
| as many breaking changes as possible in this release before we lock down the API. | ||
|
|
||
| * `cats` no longer publish the all-inclusive bundle package `"org.typelevel" % "cats"`, use `cats-core`, `cats-free`, or `cats-law` |
There was a problem hiding this comment.
Should it be "publishes" ?
| * `traverse1_`, `intercalate1` and `sequence1_` in `Reducible` were renamed to `nonEmptyTraverse_`, `nonEmptyIntercalate` and `nonEmptySequence_` respectively. | ||
| * `foldLeftM` is removed from `Free`, use `foldM` on `Foldable` instead, see #1117 for detail. | ||
| * `iteratorFoldM` was removed from `Foldable` due to #1716 | ||
| * Apply syntax on tuple (e.g. `(x, y, z).map3(...)`) was moved from `cats.syntax.tuple._` to `cats.syntax.apply._` and renamed to `mapN`, `contramapN` and `imapN` respectively. |
There was a problem hiding this comment.
Should we move this up to after the related CartesianBuilder deprecation bullet?
| * [#1707](https://github.com/typelevel/cats/pull/1707): Add NEL/NEV one. by @peterneyens | ||
| * [#1680](https://github.com/typelevel/cats/pull/1680): ~~`MonadTrans` instance for RWST and make `MonadTrans` serializable.~~ by @wedens | ||
| * [#1658](https://github.com/typelevel/cats/pull/1658): Add `Validated.validNel`. by @edmundnoble | ||
| * [#1651](https://github.com/typelevel/cats/pull/1651): Add state method to `MonadState`. by @oskoi |
There was a problem hiding this comment.
Should we "strike trough" this as well, like the MonadTrans improvements bullet above?
|
merging per gitter discussion |
Update:
The process started July 27 and last for a couple of days, mainly due to the coordination needed between cats and cats-mtl). Here are the steps:
As mentioned in the description, 1.0.0-MF is a draft for the final API of cats 1.0. Our user community will have the next couple of months to validate this draft and propose changes.
The merged changes are included in the CHANGES.md. Let's talk about the outstanding items.
Here are the outstanding PRs scheduled for 1.0.0-MF
suspendtodeferRenamesuspendtodefer#1709foldLeftMwithoutFree.foldLeftMwithoutFree. #1117Maintainers, if you have time, please help review, we can push them over the finish line.
Here are the outstanding issues scheduled for 1.0.0-MF
Eval.deferandFree.suspendWhy does Eval usedeferwhile Free usessuspend? #1635Foldableinstance forListbreaks substitutionFoldableinstance forListbreaks substitution #1716ReaderWriterStateTtype parameter order ReaderWriterStateT type parameter order #1763The ones with "?" are the ones that I'm uncertain if they should or can go into 1.0.0-MF. Also obviously, these aren't the complete set of outstanding issues and PRs. It was mostly just me scheduling them based on their impacts and my personal taste. So please chime in if you see anything you would like to go in 1.0.0-MF but not in this list. I would prioritize API changes over others, since this release is a draft for the final API for cats 1.0.
Let the party begins.
UPDATEs:
cats.Traverseshould implementcats.Foldable#107 and Multiple things are prefixed withBi-meaning different things. #1297 which will be continued in the next release.