streamly-0.11.0 and streamly-core-0.3.0 are now available on Hackage. User guides, combined reference and Hoogle search across all Streamly ecosystem packages can be found on the Streamly
website.
Important features in this release are:
Scans with Scanl: The new Streamly.Data.Scanl module allows you to compose multiple stateful transformations (i.e.
scans) on a stream. You can split a stream into multiple constituent
streams, process each independently, and then merge the results. With Streamly.Data.Scanl.Prelude,
you can compose concurrent scans i.e. each branch of the split scan can
run in a different thread.
New concurrent fold combinators: Extended Streamly.Data.Fold.Prelude with some powerful concurrent fold combinators.
Deterministic resource cleanup: Introduced APIs that guarantee
timely resource release, eliminating reliance on GC-based cleanup. The
library now offers low-level IO primitives and high-level stream
combinators for resource management — everything you can do with resourcet, and more, is built in.
Fair nesting of streams: Added operations that interleave inner
and outer streams fairly, ensuring balanced exploration. Particularly
powerful for logic programming.
Circular buffers: Added Streamly.Data.RingArray,
a high-performance, unboxed circular buffer.
File system paths: Streamly.FileSystem.Path module leverages streamly arrays, and streams for performance and
flexibility, provides better safety, and is intended for gradual type
safe extensions in future. The type can be directly coerced into OsPath.
streamly-text package provides coercion from the Text type to
streamly Array type and vice-versa.
streamly-fsevents package provides file system event watch streams
(fsnotify) — portable as well as full support for low level OS
specific file system event APIs. This was earlier part of the streamly
package, now has been split into a separate package.
We’ve made every effort to prevent breaking changes, and the API has remained
stable since version 0.9.0.
See the following docs for more details:
Please visit our blog for the latest updates!