Kyo 1.0-RC1: A New Era of Simplicity and Stability
We're excited to announce that Kyo is finally entering a period of API stabilization! ๐ Over the past three years, we've quickly iterated on the abstractions of the library to ensure they're reliable and provide a good user experience, but adopting Kyo was challenging due to the constant breaking changes. The project has now reached a level of maturity where we're comfortable making a commitment regarding stability. The 1.0-RC1 release is the first in a series of releases meant as a final validation of the APIs before reaching the 1.0.0 release.
During the RC cycle, the project will maintain source compatibility and, for cases where an incompatible change proves important, we'll provide Scalafix rewrite rules. Paired with Kyo's mature set of primitives, adopting the library for production systems becomes a viable option. The duration of this period will depend on how much feedback we get, so bug reports, feature requests, and general feedback on the library are greatly appreciated ๐
We're also proud to announce the core developers team leading the project. @hearnadam is now Lead Maintainer and we welcomed @ahoy-jon to the team!
- Flavio Brasil - Creator of Kyo ๐
- Adam Hearn - Lead maintainer ๐๏ธ
- John Hungerford - Deep owner of Combinators and Streams ๐ฅ
- Jonathan Winandy - Direct Style Magician ๐ฎ
- Jason Pickens - Cooking up kyo-grpc ๐จโ๐ณ
Improvements
-
Mature streaming: As mentioned in previous release notes, finalizing the
StreamAPIs was a major focus to enable the RC cycle. This release includes several major improvements. Enabled by the newTagimplementation, all related APIs now provide proper variance. A newPipeAPI was introduced to express streaming transformations in isolation, a pair ofhandleandunwrapmethods was introduced to facilitate the management of the pending set, and other new methods were introduced:stream.groupedWithin,stream.broadcast,Stream.fromIterator, andStream.fromIteratorCatching. (by @johnhungerford in #1254, #1259, #1268, #1268, #1274, #1281, #1166, #1170, , , @ahoy-jon in , , , )
Breaking changes
- The
IOeffect was renamed toSync. (by @ahoy-jon in #1277) Resourcewas renamed toScope. (by @hearnadam in #1356)IO.applyandAsync.applywere renamed toIO.deferandAsync.defer. (by @fwbrasil in #1308, #1309)Async.runwas moved toFiber.init,Async.runAndBlockmoved toKyoApp.runAndBlock. (by @fwbrasil in #1316)fromCompletionStagemoved fromFibertoAsync(by @fwbrasil in #1195)KArraywas renamed toSpan. (by @fwbrasil in #1326)SafeClassTagwas renamed toConcreteTag. (by @fwbrasil in #1329)
New Contributors
Full Changelog: https://github.com/getkyo/kyo/compare/v0.19.0...last