Changelog History
Page 1
-
v2.6.0 Changes
2021 April 20
๐ Cats 2.6.0 is a binary-compatible release in the 2.x series. It provides support for Scala 2.12, 2.13, 3.0.0-RC2 and 3.0.0-RC3.
โ Additions
- #3831 Add composition to Representable by @TimWSpence
- #3832 Representable instance for Tuple2K by @TimWSpence
- #3837 Provide instance of
Alternative[Set]
in alleycats by @rtyley - #3836 RepresentableStoreT by @TimWSpence
๐ Changes
- ๐ #3847 Make deprecated catsDataInstancesForNonEmptyMap not implicit by @joroKr21 (source breaking)
- #3720, #3852 fix show interpolation ambiguity with Seq/List by @tnielens
- ๐ #2254, #3856 Remove redundant Monad constraints from Parallel syntax by @joroKr21
- โก๏ธ #3851 Update 'Jump Start Guide' page to modern cats by @chaitanyawaikar
-
v2.5.0 Changes
2021 March 29
๐ Cats 2.5.0 is a binary-compatible release in the 2.x series. It provides support for Scala 2.12, 2.13, 3.0.0-RC1 and 3.0.0-RC2.
โ Additions
- #3808 Chain add fromOption factory method by @nikiforo
- #3826, #3827 Add syntax for parProduct and parAp by @nigredo-tori
- ๐ #3804, #3805 Add Ior.mergeWith and AlignMergeWith by @nigredo-tori
- #3806 Add Align instance for Nested by @nigredo-tori
- #3643, #3823 Add sumAll & productAll by @phongngtuan, @larsrh
๐ Changes
- โก๏ธ #3818 update Scala to 2.13.5 by @sh0hei
- ๐ #3825 Use -scalajs-mapSourceURI in Scala 3 builds by @fthomas
- #3377, #3807 Replace Band instance for NonEmptyMap with a Semigroup instance consistent with SortedMap by @nigredo-tori
- #3480, #3833 Rename master to main by @travisbrown, @larsrh
๐ Documentation
- #3814 typo in
ApplicativeError
by @wibisono
-
v2.4.1 Changes
2021 February 10
๐ This release fixes a problem in Cats 2.4.0. It is not binary compatible with Cats 2.4.0. We urge everyone to skip 2.4.0 and upgrade directly to 2.4.1.
Cats 2.4.1 is a hotfix release in the 2.x series. It is binary compatible to every previous release in the 2.x series, except for Cats 2.4.0.
๐ The following release notes contain all cumulative changes since Cats 2.3.1.
โ Additions
- #3220, #3222, #3773 Add Invariant instances for Numeric and Integral by @tmccarthy & @kubukoz
- #3650, #3579 add grouped to NonEmptyCollection by @bbstilson & @larsrh
- #3299, #3293 Generate Show instances for Tuple3 and higher by @barambani
- #3727 .slidingN using tuples by @Slakah
- ๐ #3750, #1549 Support scala-native 0.4 by @arashi01
- #3771 add NonEmptyChain.of by @larsrh
- #3318 add syntax for unzip on functors by @yangzai
- #3680 Add more group-like methods to NonEmptyList & Chain by @BalmungSan
- #3748 Delimited continuations via shiftT/resetT for ContT by @TimWSpence
- #3747 Add callCC to ContT by @TimWSpence
- #3765 Add NonEmptyList.take by @saeltz
- #2087, #3753 add Monoid[Comparison] for lexographical ordering by @adelbertc & @larsrh
- #3759 Provide BoundedEnumerable[Byte] instance by @ashleymercer
- #3699 Allow finding a list of maxiumum/minimum items for Foldable/Reducible by @Billzabob & @larsrh
- #3730 Add NonEmptyList.zip by @saeltz
- #3724 Trivial semigroup instances by @RaasAhsan
- ๐ #3707, #3710 Add missing Free.liftK and Free.liftId by @phongngtuan
๐ Changes
- ๐ #3776, #3777 Removed and replaced inconsistent Parallel derivation for EitherT by @djspiewak
- this change is potentially source-breaking: an existing
implicit
has been made un-implicit
, but anotherimplicit
with a different semantics has been provided (core) - more discussion at typelevel/cats-effect#1645
- this change emits new deprecation warnings
- this change is potentially source-breaking: an existing
- โ
#3734, #3772 Cogen for (Finite)Duration to fix test failures by @larsrh
- this change is only internal in tests
- ๐ #2207, #3758 deprecate Free.inject by @larsrh
- this change emits new deprecation warnings
- #3702 specialized EqOps by @YannMoisan
- this change accidentally broke source compatibility, please upgrade to 2.4.1
- reverted by #3784, #3785 by @larsrh
- #3677 Added EmptyK instance for Map by @LMnet
- this change marks a previously non-
implicit
method asimplicit
(alleycats)
- this change marks a previously non-
๐ Documentation
- #3722 Rename productM to mproduct in the glossary by @BenFradet
- #3745 Adjust to GitHub Actions by @sh0hei
- #3744 Improve scaladoc for EitherT.rethrowT by @majk-p
- ๐ #3732 scaladoc fixes for PartialOrder by @martijnhoekstra
- #3728 Fix a link in typelevelEcosystem.md by @akiomik
- โก๏ธ #3726 update README by @gokyo
-
v2.4.0 Changes
2021 February 9
โฌ๏ธ Cats 2.4.0 contains an unintended source-breaking change, please upgrade directly to 2.4.1.
-
v2.3.1 Changes
2020 December 18
๐ Cats 2.3.1 adds support for Scala 3.0.0-M3 and is published for Scala 2.12, 2.13, and 3.0.0-M2 as well.
๐ Changes From 2.3.0
- ๐ฆ #3696 Add
ApplicativeThrow
andMonadThrow
to cats package object (from cats-effect) (@agustafson) - #3698 Add addLeft/addRight for Ior (@keirlawson)
- ๐ #3639 Created documentation for monaderror, merged it with applicative error (@dhinojosa)
- #3402 Simplify FunctionK.lift macro (@joroKr21)
- #3708 Use as rather than map and discard (@johnynek)
- ๐ฆ #3696 Add
-
v2.3.0 Changes
November 26, 2020๐ Welcome to the first stable release of Cats on Scala 3โฆ milestone 2! We will continue releasing minor versions within the 2.3.x lineage against Scala 3.0.0 until it reaches a final stable release. The decision to push a stable release of Cats in advance of this date was made in order to simplify versioning within the downstream ecosystem.
๐ Changes From 2.2.0
- #3673 โ tweak Band impl so it can more easily be combined with Monoid in a single instance (@Dwolla)
- #3609 โ A new dedicated cats ecosystem page (@benkio)
- #3630 โ FunctionK: methods to narrow input / widen output types (@bplommer)
- #3620, #3624 โ Typeclass instances for
immutable.Seq
(@JosephMoniz) - #3603 โ Add method
distinct
to TraverseFilter (@takayahilton)
-
v2.3.0-M2 Changes
November 07, 2020๐ The Dotty release train is running full steam ahead: this Cats milestone release is cross-built and released for Scala 2.12.x, 2.13.x, Dotty 0.27 and 3.0.0-M1.
๐ There are only minor changes since last since 2.3.0-M1:
- #3661 fix typo in Scaladoc by @fixxer
- ๐ #3666, #3667 add
simulacrum-scalafix-annotations
to the classpath, build for 3.0.0-M1 by @djspiewak
-
v2.3.0-M1 Changes
November 02, 2020๐ We are proud to announce the first Dotty release of Cats! All modules of Cats are cross-built and released for Scala 2.12.x, 2.13.x, and Dotty 0.27. Other than that, this release contains relatively few new features.
Dotty
๐ The purpose of this milestone is that adventurous users can try out first-class Dotty support before we cut a final 2.3.0 release. Note that for the Dotty builds, binary compatibility between this milestone release and 2.3.0 may break in some situations. Also, if you are using the laws, sbt may complain about conflicting Scala version suffixes. This will be fixed in time for the final release.
Binary compatibility (Scala 2)
๐ As usual, the 2.3.x series is backward binary-compatible with all previous 2.x releases (and with 1.x for the non-laws modules).
๐ Changes & additions
- #3603
distinct
forTraverseFilter
by @takayahilton - #3620, #3624 instances for
immutable.Seq
by @JosephMoniz - #3630 methods to narrow input/widen output types on
FunctionK
by @bplommer - ๐ #3636 Dotty support by @LukaJCB and @larsrh
- #3647
traverseTap
by @majk-p - #3648 add a law relating
defer
andfix
inDefer
by @johnynek
Other improvements
- โ
#3373 test for
zipWithIndex
stack safety by @dantb - #3595 migrate from tut to mdoc by @keynmol
- โ
#3608 document
scalafixAll
to migrate test code as well by @bjaglin - #3609 Cats ecosystem website by @benkio
- ๐ #3616 documentation on
ApplicativeError
by @dhinojosa - ๐ #3616 documentation on
Writer
andWriterT
by @benkio
- #3603
-
v2.2.0 Changes
September 03, 2020๐ The most significant change in the 2.2.0 release is that all Cats type class instances for standard library types are now available in implicit scope, and no longer have to be imported. This has a number of benefits, including faster compile times and fewer things to think about. Please see this pull request, this blog post, the 2.2.0-M1 release notes, and the migration guide below for more detailed information about this change.
๐ This release is verified to be backward binary compatible with all 2.1.x and 2.0.x releases (and with 1.x for the non-laws modules). It is also binary compatible with the last two 2.2.0 release candidates (RC3 and RC4), but has minor binary incompatibilities with the earlier release candidates.
๐ While this release is not guaranteed to be 100% source-compatible with previous release series, most updates should not require changes. You may want to adjust your imports in order to use the new implicit scope type class instances, but this is only an optimization (it may improve your compile times). If you are using Scala Steward these adjustments will be made for you.
๐ This is the first general-availability release that does not include cats-macros artifacts. This module has been empty since Cats 1.x, but if you explicitly depend on it for some reason, you'll have to remove it from your build.
๐ This release is published for Scala 2.12 and 2.13 and for Scala.js 1.x. We dropped support for Scala.js 0.6 in 2.2.0-M3.
๐ There have been 261 pull requests merged since the 2.1.0 release last December, and the list below only includes PRs that have been merged since the last release candidate.
3 API / feature enhancements
- โฌ๏ธ #3566 Scalafix rule to remove instance imports when upgrading to 2.2.0 by @cb372
- #3579 Add
toValidated
to TrySyntax by @gagandeepkalra - ๐ #3576 Remove unused private method by @takayahilton
๐ 3 documentation improvements
- โ #3586 Fix typo in FoldableTests (constistency -> consistency) by @tmccarthy
- #3581 Add monix-bio to related projects by @Avasil
- ๐ #3580 Add Parallel typeclass diagram to docs. by @izeigerman
๐ 5 build improvements
- โก๏ธ #3591 Update sbt-scalafix to 0.9.20 by @scala-steward
- โก๏ธ #3589 Update discipline-munit to 0.2.4 by @scala-steward
- โก๏ธ #3588 Update munit-scalacheck to 0.7.12 by @scala-steward
- โก๏ธ #3585 Update sbt-dotty to 0.4.2 by @scala-steward
- โก๏ธ #3578 Update discipline-scalatest to 2.0.1 by @scala-steward
๐ For a complete record of changes since 2.1.0, please see the release notes for the pre-releases:
- ๐ https://github.com/typelevel/cats/releases/tag/v2.2.0-M1
- ๐ https://github.com/typelevel/cats/releases/tag/v2.2.0-M2
- ๐ https://github.com/typelevel/cats/releases/tag/v2.2.0-M3
- ๐ https://github.com/typelevel/cats/releases/tag/v2.2.0-RC1
- ๐ https://github.com/typelevel/cats/releases/tag/v2.2.0-RC2
- ๐ https://github.com/typelevel/cats/releases/tag/v2.2.0-RC3
- ๐ https://github.com/typelevel/cats/releases/tag/v2.2.0-RC4
Migration
In most cases all that's necessary to switch to using the new implicit scope instances is to replace
cats.implicits._
imports withcats.syntax.all._
and delete anycats.instances
imports. You don't have to make this change to use Cats 2.2.x, though, since this release doesn't remove anything. Importingcats.implicits._
will do exactly the same thing on Cats 2.1.x and 2.2.x, since imported instances have higher priority than implicit scope. You just won't see improvements in compile times.๐ฆ There is one exception to this rule. The
cats.implicits
package provides implicit conversions from Cats's ownOrder
andPartialOrder
type classes to the standard library'sOrdering
andPartialOrdering
. This conversion is not available in implicit scope, because it would be a bad idea for Cats to put instances of type classes it doesn't own into scope for types that it doesn't own (and also because it's not possible).For example the following code compiles on all Cats versions:
import cats.instances.all.\_Ordering[List[Int]]
The standard library doesn't provide an
Ordering
forList[Int]
in implicit scope, but Cats provides both anOrder[List[Int]]
and an implicit conversion fromcats.Order
toscala.math.Ordering
, so this code compiles.๐ In this case you can't simply remove the import, though, since while the
Order
instance will be available without it, theOrdering
conversion won't be:scala\> cats.Order[List[Int]] res0: cats.kernel.Order[List[Int]] = cats.kernel.instances.ListOrder@91da5ff scala\> Ordering[List[Int]] ^ error: No implicit Ordering defined for List[Int].
Instead you can either leave the import as it is, or change it to the more minimal
cats.instances.order._
. -
v2.2.0-RC4 Changes
August 21, 2020In previous Cats 2.2.0 pre-releases, all type class instances for Scala standard library types were available in implicit scope, except for the ones for
Future
. We made the decision to exclude those instances in part because putting them into implicit scope required duplicating some instances from cats-core in cats-kernel, which hadn't previously included anyFuture
-related code. This release candidate reverses that decision and makes all type class instances available in implicit scope. It also includes a fix for one method onNonEmptyLazyList
for Scala 2.13.๐ This release candidate has the same binary compatibility guarantees as 2.2.0-RC3, and is backward binary-compatible with that release.
2 API / feature enhancements
- #3572 Add Future instances to implicit scope by @travisbrown
- #3573 Avoid all evaluation of NonEmptyLazyList#reduceRightTo by @takayahilton
๐ 2 documentation improvements
- #3575 Missing a "]" in CONTRIBUTING.md by @benkio
- โก๏ธ #3574 Update README.md by @diesalbla