Kyo 0.17.0 released

Check it out before the library gets subsumed! :joy:

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 :pray:

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 with Stream.

  • Consistent collection operations: Handling collections with the Kyo companion object is very flexible, while doing the same with Async 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 the Kyo 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 and Boundary, 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 a TypeMap[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 :clap:

  • @rcardin, @matteobilardi, @akhilender-bongirwar, and @Revod made their first contributions
4 Likes