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 for NonEmptyList's groupBy function by @igstan
    • #1961 rename Cartesian to Semigroupal by @kailuowang
    • 🗄 #1955 Deprecate FlatMap's >> and << by @LukaJCB
    • #1947 Rename EitherT.liftT to EitherT.liftF by @aeons
    • #1934 Restruct functor by @kailuowang
    • #1803 Convert ReaderWriterStateT to IndexedReaderWriterStateT by @iravid
    • #1775 Convert StateT to IndexedStateT by @iravid
    • #1098 Add a different MonoidK and SemigroupK instance for Kleisli by @peterneyens
    • #1922 Make kernel laws consistent with core laws by @LukaJCB
    • 🔀 #1838 Sync NonEmptyList and NonEmptyVector methods by @durban
    • #1914 Add Invariant instances for kernel type classes by @LukaJCB
    • #1980 Make iterateRight in Foldable sound by @LukaJCB
    • 🚚 #1972 Add SortedMap and SortedSet instances/Move Set and Map instances to Alleycats by @LukaJCB/@kailuowang
    • #1997 Minimizing typeclass surface in cats-kernel by @denisrosset
    • #1987 Add mapK to transformers by @andyscott / @LukaJCB

    To migrate from 1.0.0-MF.

    • 👀 The rename of Cartesian to Semigroupal and EitherT.liftT to EitherT.liftF can be done automatically through Scalafix we provide. See instructions here.
    • For FlatMap's >> and <<, use Apply's *> and <* instead.
    • 📦 Profunctor and Strong were moved to the cats.arrow package, Bifunctor, Invariant and Contravariant were moved to the cats root package.
    • SemigroupK[λ[α => Kleisli[F, α, α]]] and MonoidK[λ[α => Kleisli[F, α, α]]] are no longer implicitly available, Use Kleisli.endoSemigroupK and Kleisli.endoMonoidK to get them explicitly.
    • ✅ law testing for type classes in cats.kernel was made consistent with the law testing in cats.core. Check here for a guide on how to test cats type class instances.
    • 🗄 NonEmptyList.concat that takes NonEmptlyList was deprecated, use NonEmptyList.concatNel instead.
    • Monoid no longer has a InvariantMonoidal instance, we discovered that it's not lawful. It has have an Invariant and a Semigroupal (new name for Cartesian) instance.
    • 👀 Foldable.iterateRight now takes an Iterable instead of Iterator, see #1973 for rationale.
    • 👀 Foldable for Set and Traversable for Map were moved to Alleycats, see #1831 for rationale.
    • 🗄 cats.data.Kleisli#transform and cats.free.Coyoneda#transform were deprecated and replaced by mapK

    🆕 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 to Alternative 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 to NonEmptyList and NonEmptyVector 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 and Traversable instances for Free 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 and forallM to Foldable by @refried
    • #1712 Hash typeclass by @ctongfei
    • 🐎 #1976 Reduced usage of fold in Validated 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 and CommutativeApplicative by @LukaJCB
    • #1837 Add Parallel type class by @LukaJCB
    • #1998 Add Validated.cond and Validated.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 in Foldable sound by @LukaJCB

    📚 Documentation Improvements/Additions:

    • 📄 #1970 Add docs for StateT and IndexedStateT 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 to ApplyTests 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 for IndexedStateT. by @iravid
    • #1975 Unifies test naming standard. by @AlejandroME
    • #1999 Fix order of comparison for EitherT.cond. by @andyscott

    Scalafix for migration

    • 🚚 #1813 Add RenameInjectProdAndCoproduct, RenameTupleApplySyntax and RemoveSplit Scalafix rewrites by @gabro
    • #1937 Add scalafix for contramap by @LukaJCB