📢 Kyo 0.13.0 is out!

If you had tried the integrations with other effect systems before, give it a try again and please report any issues!

New Features

  • More flexible integration with ZIO and cats-effect: The integrations were previously implemented with custom effects, which had limitations with some Async operations. The new implementation is based directly on Async, allowing unrestricted use of ZIO and cats-effect computations with Kyo’s async primitives.
  • Safe class tags: The kyo-data module provides an alternative to Scala’s ClassTag that can express union, intersection, and literal types. The SafeClassTag implementation ensures materialized tags always properly represent their types without falling back to java.lang.Object for special types like AnyVal or Nothing.
  • Richer Abort effect: The Abort effect was update to use the new SafeClassTag, enabling Abort.run with union types to handle multiple failure types at once.
  • Async masking: Introduction of Async.mask and fiber.mask methods, similar to uninterruptible in other effect systems. These mask asynchronous computations from potential interruptions.
  • First-class support for unsafe APIs: Most primitives in kyo-core now provide protected unsafe access. This feature enables development of libraries on top of Kyo with better performance and facilitates integrations. Unsafe APIs are available in companion objects, e.g., Fiber.Unsafe, LongAdder.Unsafe.
  • Kyo-native Instant: A new Instant implementation in kyo-data module improves integration with other Kyo APIs like Clock and Duration.
  • Optimized Batch effect: Implemented optimizations to lower the effect’s overhead, including improvements to Chunk, Loop, and Kyo.foreach* methods.

Breaking Changes

  • The kyo-tag module has been merged into kyo-data.
  • The Unit suffix was renamed to Discard in some Async methods.
  • Stream.Ack considers 0 max items as Stop.
  • The when method in kyo-combinators now returns a Maybe instead of a pending Abort.
2 Likes

Happy Coming Out Day.

I hadn’t realized the significance of the date! Likewise :slight_smile: