v1.0.0
This release contains a full rewrite of… everything. It is not binary compatible with 0.7.x or any of the previous releases, nor is it source-compatible, but most of the changes should be relatively straightforward to adapt to on the usage side. This rewrite was not undertaken lightly, and it is hoped that the advantages which come from it are deemed worth the short-term inconvenience of upgrade pain. The major changes are as follows:
- Renamed all typeclasses to be more concise and to avoid needing to understand implementation details (e.g.
Ask
rather thanFunctorAsk
) - Added variance to relevant classes (e.g.
Ask
andRaise
), which ensures more robust usability in most cases. This is particularly helpful when working with an instance ofRaise[F, Throwable]
, which now allows the use of theraise[F]
syntax directly on all subtypes ofThrowable
, exactly as you would expect. This also makes it much easier to composeAsk
instances together when both instances are using subtyping as a mechanism for subsetting some environmental context (a common technique in dependency injection). - Removed all
ControlLayer
typeclasses in favor of more direct derivation. This imposes a slightly higher cost in terms of boilerplate for class authors, but provides much greater control for both users and authors while avoiding the import tax. To this point, it is no longer necessary to importcats.mtl.implicits._
unless you want access to the syntax, in which casecats.mtl.syntax.all._
is probably a better approach. - Added
MonadPartialOrder
. This is a generalization of theHoist
typeclass in many ways, though not quite as general asApplicativeK
or similar. It is mostly used as an implementation detail in MTL instance derivation, but it can also be quite useful in user-land code for representing when a monad "contains" another monad's effects. - …probably other nice things!
One major omission for the moment is that documentation has not been updated at present. This requires some more work, but we didn't want to hold up all the goodies of 1.0 pending that rework. Expect more changes in the coming days!