Skip to content
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

Prepare for the 1.0.0-MF release #1702

Merged
merged 10 commits into from
Aug 3, 2017

Conversation

kailuowang
Copy link
Contributor

@kailuowang kailuowang commented May 25, 2017

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

Maintainers, 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

The 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:

@kailuowang kailuowang added this to the 1.0.0-MF milestone May 25, 2017
@kailuowang
Copy link
Contributor Author

kailuowang commented May 25, 2017

Also we have 14 19 new first-time contributors! 💯

update: 5 more first-time contributors

@codecov-io
Copy link

codecov-io commented May 28, 2017

Codecov Report

Merging #1702 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #1702   +/-   ##
=======================================
  Coverage   94.87%   94.87%           
=======================================
  Files         241      241           
  Lines        4139     4139           
  Branches      103      103           
=======================================
  Hits         3927     3927           
  Misses        212      212

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 784aa10...55ffbf4. Read the comment docs.

@i-am-the-slime
Copy link
Contributor

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?

@LukaJCB
Copy link
Member

LukaJCB commented May 30, 2017

@i-am-the-slime It's going to be its own separate module, cats-mtl. I think you can find it here. Check issues #1616 and #1210 :)

@andyscott
Copy link
Contributor

I will finish the PR for #1600 this week.

CHANGES.md Outdated

To migrate from 0.9.0

* `cats.free.Inject` is moved from `cats.free` to `cats.core` and renamed to `cats.InjectK`;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this implies moving to a cats.core package-- maybe use cats-core and cats-free to refer to modules?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks! corrected.

CHANGES.md Outdated
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

similar to above, this implies a cats.core package

CHANGES.md Outdated

* `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"`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is cats-laws rather than cats-law?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right, thanks for the review.

README.md Outdated
```

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
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"functionality"

CHANGES.md Outdated
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
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Apology"

README.md Outdated

* [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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Project name is cats-effect (singular).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

README.md Outdated

* [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): ??????
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@@ -13,29 +13,32 @@ The name is a playful shortening of the word *category*.
guarantees about stability until a 1.0 release is made.</p></div>


### <a name="getting-started" href="#getting-started"></a>Getting Started
## <a name="getting-started" href="#getting-started"></a>Getting Started


Cats is currently available for Scala 2.10, 2.11 and 2.12.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A mention that Cats supports Scala.js would be nice

Copy link
Contributor

@edmundnoble edmundnoble left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wonderful work, sorry for all the nitpicks :)

CHANGES.md Outdated

### To migrate from 0.9.0

Apology for the number of breaking changes in this release. We are trying to include
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend "we apologize".

CHANGES.md Outdated
### 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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend "as many breaking changes in this release as possible".

CHANGES.md Outdated
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`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"all-inclusive" here.

CHANGES.md Outdated
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"were improved"

CHANGES.md Outdated
* `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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we can be a bit more descriptive here. Perhaps "cats instances and classes which are not lawful"?

CHANGES.md Outdated
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(...)`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"syntanx" -> "syntax"

CHANGES.md Outdated
* `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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"compainion" -> "companion"

CHANGES.md Outdated
* [#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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are 2 "."-s

CHANGES.md Outdated
* [#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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 "."-s

CHANGES.md Outdated
* [#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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move "by" to the end.

@kailuowang
Copy link
Contributor Author

@edmundnoble and @durban thanks so much for the review. feedback addressed.

CHANGES.md Outdated
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`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should it be "publishes" ?

CHANGES.md Outdated
* `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.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we move this up to after the related CartesianBuilder deprecation bullet?

CHANGES.md Outdated
* [#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
Copy link
Collaborator

@peterneyens peterneyens Aug 3, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we "strike trough" this as well, like the MonadTrans improvements bullet above?

@kailuowang
Copy link
Contributor Author

merging per gitter discussion

@kailuowang kailuowang merged commit 09c9077 into typelevel:master Aug 3, 2017
@kailuowang kailuowang deleted the prepare1.0.0MF branch August 3, 2017 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants