cats v0.8.0 Release Notes

  • 2016 October 25

    ๐Ÿ”– Version 0.8.0 is the eighth Cats release, and the first release with support for Scala 2.12 (specifically the 2.12.0-RC2 release candidate).

    ๐Ÿš€ Apart from the introduction of Scala 2.12 support, the biggest change in this release is the removal ๐Ÿ‘€ of Xor and XorT. See the FAQ for information about the motivations for this change and recommendations for migration.

    ๐Ÿ—„ Removals and deprecations:

    • #1310: Xor and XorT are gone
    • #1370: RecursiveTailRecM and Free#foldMapUnsafe are gone and stack safety is checked in the laws for Monad
    • #1411: FreeT#interpret is deprecated in favor of the (equivalent) compile

    โž• Additions:

    • #1382, #1415: Support for Scala 2.12.0-RC2
    • #1414: Foldable#iteratorFoldM and lazy foldM implementations for many standard library instances
    • #1356: append and prepend (and operator aliases) for NonEmptyVector
    • #1327: EitherT.fromOption
    • #1388: StateT.set and StateT.setF
    • #1392: StateT.get
    • #1325: WriterT.lift
    • #1391: MonadReader#reader
    • #1352: Macro-powered FunctionK.lift
    • #1398: <<< and >>> aliases for Compose's compose and andThen
    • #1408: toNestedValidated and toNestedValidatedNel for EitherT
    • #1399: Order.fromComparable
    • #1394: Traverse#flatSequence
    • #1417: MonadTests#stackUnsafeMonad laws for instances where tailRecM is known to be unsafe
    • #1411: compile and foldMap for the Free and FreeT companion objects

    ๐Ÿ†• New instances:

    • #1319: Order and Group for BigDecimal
    • #1354: Semigroup for Ior
    • #1395: Order for Symbol
    • #1324: PartialOrder and other instances for BitSet
    • #1324: Eq and PartialOrder for Either
    • #1324: PartialOrder, Monoid, and other instances for Function0
    • #1324: Monoid and other instances for Function1
    • #1402: Monad, MonadCombine, Traverse, Order, etc. for Prod
    • #1413: MonadError for StateT
    • #1399: Instances for java.util.UUID

    Renaming and rearrangements:

    • #1385: The cats.js.std package is now cats.js.instances
    • #1324: Many instances moved from cats-core to cats-kernel
    • #1394: Traverse#traverseM is now flatTraverse

    ๐Ÿ“š Miscellaneous improvements (syntax, documentation, tests):

    • #1347: Consistency laws for combineAll and combineAllOption
    • #1324: Performance improvements for Either instances
    • #1386: FunctionK tests and examples now use kind-projector 0.9's polymorphic lambdas
    • #1410: Replace Coproduct#run with Coproduct#fold
    • #1331: Less expensive tailRecM-flatMap consistency checking
    • #1330: More consistent parameter-less method definitions and usage, other syntactic improvements
    • #1340: New Scaladex badge
    • #1416: New diagram of type classes
    • #1352: API docs for FunctionK
    • #1369, #1418: New project site based on sbt-microsites
    • #1259: 0.6-to-0.7 migration guide
    • #1304, #1317, #1323, #1350, #1366, #1376, #1380, #1390, #1403, #1407, #1421: Other miscellaneous documentation improvements

    ๐Ÿ— Build:

    • #1345: Update ScalaCheck (to 1.13.2) and Discipline (to 0.6)
    • #1353: Generated sources are included in source jars
    • #1322: Scala.js test clean-up
    • #1426: Human-friendly names in metadata for published artifacts
    • #1389: More memory for Travis CI