cats v1.0.0-RC1 Release Notes
-
2017 Oct 21
🚀 This is the only planned release candidate release prior to 1.0.0.
💥 Breaking changes and migration
- #1964 Require an
Order
instance forNonEmptyList
's groupBy function by @igstan - #1961 rename
Cartesian
toSemigroupal
by @kailuowang - 🗄 #1955 Deprecate
FlatMap
's>>
and<<
by @LukaJCB - #1947 Rename
EitherT.liftT
toEitherT.liftF
by @aeons - #1934 Restruct
functor
by @kailuowang - #1803 Convert
ReaderWriterStateT
toIndexedReaderWriterStateT
by @iravid - #1775 Convert
StateT
toIndexedStateT
by @iravid - #1098 Add a different
MonoidK
andSemigroupK
instance forKleisli
by @peterneyens - #1922 Make kernel laws consistent with core laws by @LukaJCB
- 🔀 #1838 Sync
NonEmptyList
andNonEmptyVector
methods by @durban - #1914 Add
Invariant
instances for kernel type classes by @LukaJCB - #1980 Make
iterateRight
inFoldable
sound by @LukaJCB - 🚚 #1972 Add
SortedMap
andSortedSet
instances/MoveSet
andMap
instances to Alleycats by @LukaJCB/@kailuowang - #1997 Minimizing typeclass surface in cats-kernel by @denisrosset
- #1987 Add
mapK
totransformers
by @andyscott / @LukaJCB
To migrate from 1.0.0-MF.
- 👀 The rename of
Cartesian
toSemigroupal
andEitherT.liftT
toEitherT.liftF
can be done automatically through Scalafix we provide. See instructions here. - For
FlatMap
's>>
and<<
, useApply
's*>
and<*
instead. - 📦
Profunctor
andStrong
were moved to thecats.arrow
package,Bifunctor
,Invariant
andContravariant
were moved to thecats
root package. SemigroupK[λ[α => Kleisli[F, α, α]]]
andMonoidK[λ[α => Kleisli[F, α, α]]]
are no longer implicitly available, UseKleisli.endoSemigroupK
andKleisli.endoMonoidK
to get them explicitly.- ✅ law testing for type classes in
cats.kernel
was made consistent with the law testing incats.core
. Check here for a guide on how to test cats type class instances. - 🗄
NonEmptyList.concat
that takesNonEmptlyList
was deprecated, useNonEmptyList.concatNel
instead. Monoid
no longer has aInvariantMonoidal
instance, we discovered that it's not lawful. It has have anInvariant
and aSemigroupal
(new name forCartesian
) instance.- 👀
Foldable.iterateRight
now takes anIterable
instead ofIterator
, see #1973 for rationale. - 👀
Foldable
forSet
andTraversable
forMap
were moved to Alleycats, see #1831 for rationale. - 🗄
cats.data.Kleisli#transform
andcats.free.Coyoneda#transform
were deprecated and replaced bymapK
🆕 New features / enhancements (API, instances, data types, etc.):
- #1958 Add
FlatMap#flatTap
, a more principled version of the kestrel combinator. by @hrhino - #1950 more instances for
Hash
(#1712):Queue
/Duration
by @ctongfei - #1942 add
traverseN
to cartesian syntax by @julien-truffaut - #1939 Add
guard
toAlternative
by @SystemFw - #1933 Add syntax for
ApplicativeError
.fromEither by @tpolecat - ⚡️ #1921 Optimize
FreeApplicative.product
by @peterneyens - #1910 Add
NonEmptyList.ofInitLast
by @eddsteel - #1888 Enhances stack safety for
Eval
. by @non - #1885 Add
zipWith
toNonEmptyList
andNonEmptyVector
by @LukaJCB - 👍 #1882 convert trait into abstract class for better bin compact by @kailuowang
- #1878 Add some instances we were missing. by @non
- #1858 Add
NonEmptyList#partitionE
by @LukaJCB - #1847 Add right and left functor to
BiFunctor
by @LukaJCB - 🆓 #1840 Add
Foldable
andTraversable
instances forFree
by @aaronlevin - #1819 Added more implementations of
map2Eval
in progress by @johnynek - 🚚 #1811 Move tuple
Cartesian
syntax implicit parameter by @DavidGregory084 - #1809 Add iterateWhileM and iterateUntilM by @drbild
- #1790 Implement EitherT#leftFlatMap and EitherT#leftSemiflatMap by @vendethiel
- #1784 Add
existsM
andforallM
to Foldable by @refried - #1712 Hash typeclass by @ctongfei
- 🐎 #1976 Reduced usage of
fold
inValidated
for better performance by @kailuowang - #1967 Add a few type classes to generated tuple instances by @edmundnoble/@kailuowang
- #1984 Welcome, Alleycats by @kailuowang
- #1927 Add
CommutativeApply
andCommutativeApplicative
by @LukaJCB - #1837 Add
Parallel
type class by @LukaJCB - #1998 Add
Validated.cond
andValidated.condNel
by @andyscott
🐛 Bug fixes:
- 📦 #1917 Don't use package object convention for object source path by @travisbrown
- ↪ #1804 workaround for a possible scala bug in show for value class by @kailuowang
- #1980 Make
iterateRight
inFoldable
sound by @LukaJCB
📚 Documentation Improvements/Additions:
- 📄 #1970 Add docs for
StateT
andIndexedStateT
by @iravid - #1956 Mention the right issue number of doom. by @hrhino
- #1952 Added examples of
Arrow
composition by @raymondtay - #1946 Give higher priority to partial-unification fix by @LukaJCB
- #1944 Fix typo. by @jooohn
- 📄 #1924 Add docs for Arrow by @zliu41
- ⚡️ #1923 Update footer by @kailuowang
- #1920 Document naming implicits according to @non s comment in #1061 by @tbje
- #1916 Fix tiny extra vowel typo by @andyscott
- #1915 Consolidate readme.md and index.md by @kailuowang
- ⚡️ #1913 updated footer by @kailuowang
- ⚡️ #1905 s/rewrites/rules and update scalafix version in the README by @gabro
- #1903
Validated
beginners doc by @AlejandroME - 🙋 #1901 added FAQ item diff between cats and scalaz by @kailuowang
- #1900 add newts to related projects by @kailuowang
- #1899 Fix symbol signature for right and left apply in faq.md by @suhasgaddam
- #1897 add bin compat goal by @kailuowang
- #1895 trying to fix contributing page by @kailuowang
- #1894 Fix typo in background image of homepage. by @Ttcao
- #1890 Doc: Correct the URL of cats-mtl to the typelevel repository by @richardimaoka
- #1884 Rename typeclass => type class in Readme.md by @LukaJCB
- ✅ #1880 Add law testing guide by @LukaJCB
- #1875 Fix typo in
SemigroupK
scaladoc by @LukaJCB - ✅ #1874 Fix typo in
WriterT
tests by @LukaJCB - #1873 Add pureconfig and finch to ecosystem project list by @kailuowang
- ✏️ #1872 Fix couple of typos in CHANGES.md by @LukaJCB
- #1871 Fix typo in
Traverse#traverseWithIndexM
by @LukaJCB - #1857 Fix typo (Foldabale => Foldable) by @LukaJCB
- 🚚 #1856 Remove mtl classes from menu by @LukaJCB
- 📄 #1854 Add EitherT docs by @Technius
- #1846 Add
grafter
to the list of Typelevel projects using cats by @etorreborre - #1845 Adding the origami project to the list of Typelevel projects using cats by @etorreborre
- #1827 add trailing slashes to URLs by @larsrh
- 📄 #1822 Add docs for
Ior
by @LukaJCB - #1820 Fix links by @n4to4
- #1817 Add seals to related projects by @durban
- 📚 #1816 Add
Eval
documentation by @LukaJCB - 🚚 #1814 remove outdated TODOs by @kailuowang
- #1808 minor link change by @kailuowang
- #1806 add notes to cartesian migration by @kailuowang
- #1799 add decline to project list by @kailuowang
- 📄 #1796 add
Foldable.existsM/forallM
to docs by @refried - #1792 Add size control for typeclass diagram by @LukaJCB
- 📚 #1789 Add documentation for
Show
by @LukaJCB - 📄 #1788 Add
Eq
docs by @LukaJCB - 📄 #1787 Add
NonEmptyTraverse
docs by @LukaJCB - 🛠 #1781 promoting the ecosystem in readme a bit and fixed a typo by @kailuowang
- #1779 quick date fix by @kailuowang
- #1756 Add piecemeal import guide by @LukaJCB
- 📄 #1777 Add
Reducible
docs by @LukaJCB - ✅ #1985 Links "LawTesting.md" in FAQ and TypeClasses pages by @AlejandroME
- #1993 Added examples for
Cokleisli
by @raymondtay
⚡️ Build improvements/dependency updates
- ⚡️ #1948 Update scalafix project dependencies by @aeons
- ⚡️ #1926 Update coursier to version 1.0.0-RC12 by @mxl
- #1925 temporarily disable MiMa check on kernel by @kailuowang
- ⚡️ #1918 Update sbt-microsites to 0.7.0 by @LukaJCB
- ⬆️ #1902 Upgrade Scalafix to 0.5.0-RC2 by @gabro
- ⚡️ #1898 Update various sbt plugins by @fthomas
- 🚚 #1892 Remove deprecated requiresDOM setting by @fthomas
- 🔧 #1889 Add val for "compile-time" sbt Configuration by @fthomas
- ⚡️ #1887 Update sbt-pgp to 1.1.0 by @fthomas
- ⚡️ #1886 Update Scala.js to 0.6.20 by @fthomas
- 🏗 #1876 build: use curly braces for disabling tasks by @fthomas
- ⚡️ #1868 Update sbt-microsites to 0.6.1 by @BennyHill
- ⏪ #1866 Revert scalatest to 3.0.3 by @BennyHill
- #1865 Set simulacrum version to 0.11.0 by @BennyHill
- #1864 Set scalaz version to 7.2.15 by @BennyHill
- #1862 Bump kind-projector version to 0.9.4 by @shokohara
- ⚡️ #1861 Update sbt-scoverage to 1.5.1 by @fthomas
- ⚡️ #1860 Update sbt-pgp to 1.1.0-M1 by @LukaJCB
- ⚡️ #1859 Update sbt-sonatype by @LukaJCB
- 🚚 #1852 Remove sbt-ghpages because it is pulled in by sbt-microsites by @fthomas
- ⚡️ #1849 Update sbt-git to 0.9.3 by @fthomas
- #1844 Replace botBuild with sbt-travisci's isTravisBuild by @fthomas
- ⚡️ #1843 Update sbt-unidoc to 0.4.1 by @fthomas
- ⚡️ #1842 Update partial-unification plugin to 1.1.0 by @fthomas
- 💅 #1839 Update scalastyle-sbt-plugin to 1.0.0 by @fthomas
- 🚀 #1829 Update sbt-release to 1.0.6 by @fthomas
- ⚡️ #1828 Update sbt-jmh to 0.2.27 by @fthomas
- #1826 Pass sbt settings without varargs expansion by @fthomas
- ⚡️ #1825 Update sbt-coursier to 1.0.0-RC10 by @fthomas
- ⚡️ #1824 Update sbt-mima-plugin to 0.1.17 by @fthomas
- ⚡️ #1821 Update sbt-doctest to 0.7.0 by @fthomas
- #1795 Bump discipline version to 0.8 by @shokohara
- #1793 Add Scalafix rewrites for 1.0.0 by @gabro
- #1782 Bump scalacheck version to 1.13.5 by @shokohara
- #1780 Bump machinist version to 0.6.2 by @shokohara
- #1778 Bump sbt version to 0.13.16 by @shokohara
✅ Testing improvements
- 🚚 #1963 Move
followedBy
/forEffect
tests toApplyTests
by @peterneyens - ✅ #1960 Harmonize naming of discipline test classes in cats-kernel-laws. by @denisrosset
- #1953 Add a more direct tailRecM law. by @johnynek
- #1906 Fix
Alternative
law checking forIndexedStateT
. by @iravid - ✅ #1975 Unifies test naming standard. by @AlejandroME
- #1999 Fix order of comparison for
EitherT.cond
. by @andyscott
Scalafix for migration
- #1964 Require an