Check it out before the library gets subsumed!
This is likely one of the last releases before the 1.0-RC cycle! Please report any issues or difficulties with the library so we can address them before committing to a stable API
Also, Kyo has a new logo! Thank you @Revod!!!
New features
-
Reactive Signal: A new Signal implementation has been introduced in
kyo-core
, inspired by fs2. Signals can change value over time and these changes can be listened for via the methods that integrate withStream
. -
Consistent collection operations: Handling collections with the
Kyo
companion object is very flexible, while doing the same withAsync
used to be less convenient and with a completely different API approach. In this release, a new set of methods to handle collections was added to the Async effect, mirroring the naming of theKyo
companion. -
Partial error handling: The
Abort
effect had a limitation that doesnβt allow the user to handle only expected failures without panics (unexpected failures). This release introduces APIs to handle aborts without panics in the Abort.*Partial methods. Similarly, a new Result.Partial type was introduced to represent results without panics. -
Record staging: Records can now be materialized from a type signature using a function to populate the values. This feature is meant to enable the creation of DSLs.
-
Aeron integration: The new Topic effect in the
kyo-aeron
module provides a seamless way to leverage Aeronβs high-performance transport with support for both in-memory IPC and reliable UDP. -
Direct Memory in Scala Native: The Memory effect provides direct memory access with automatic handling of resources via scoping. The module now also has support for Scala Native!
Improvements
-
Unified Isolate mechanism: In this release, two mechanisms used to provide support for effects with forking,
Isolate
andBoundary
, were merged into a single implementation with better usability. -
Multi-get Env APIs: The new Env.getAll/useAll methods enable getting multiple values from the environment at once. For example:
Env.getAll[DB & Cache & Config]
, which returns aTypeMap[DB & Cache & Config]
.
Plus many more improvements including less verbose errors, better resource handling in Hub, non-effectful Stream methods, and optimization of Maybe.collect.
New Contributors 
- @rcardin, @matteobilardi, @akhilender-bongirwar, and @Revod made their first contributions