package streaming

  1. Overview
  2. Docs
Fast, safe and composable streaming abstractions

Install

Dune Dependency

Authors

Maintainers

Sources

streaming-0.8.0.tbz
sha256=5bedc6619a6c2e3d529d086e4a68d7762ffce5f31a8d6a73e1bef1e56d1b9c9b
sha512=f490206a25176ab2bcacfdcf619c0569b191f27e05daeff32f4b8ad42d6a7aa7791e6a4ae501c05f1fb892842a0fc0272ec5deb4094c9d32fffa9535ce871a01

Description

Streaming abstractions that combine, transform and reduce large amounts of sequential data efficiently, in constant space and without leaking resources.

Streaming uses composable stream producers (sources), consumers (sinks) and transformers (flows).

The following features are provided:

  • Constant memory usage: large or infinite streams can be computed in constant and small space. Buffering of the input is possible when needed.
  • Excellent performance: all models were designed with performance at the core. See https://github.com/rizo/streams-bench for detailed comparison with other libraries.
  • Resource safety: resources in effectful streaming pipelines are allocated lazily and released as early as possible. Resources are guaranteed to be terminated even when streams rise exceptions.
  • Flexibility: both push-based and pull-based models are implemented to allow efficient zipping, concatenation and other streaming operations.
  • Streaming notation: build streams and sinks using a convenient comprehension and applicative notations.

Published: 11 Jun 2020

README

Streaming

Streaming abstractions that combine, transform and reduce large amounts of sequential data efficiently, in constant space and without leaking resources.

Overview

Streaming uses composable stream producers (sources), consumers (sinks) and transformers (flows). The central model that abstracts over them is a Stream.

The following features are provided:

  • Constant memory usage: large or infinite streams can be computed in constant and small space. Buffering of the input is possible when needed.

  • Excellent performance: all models were designed with performance at the core. See benchmarks for detailed comparison with other libraries.

  • Resource safety: resources in effectful streaming pipelines are allocated lazily and released as early as possible. Resources are guaranteed to be terminated even when streams rise exceptions.

  • Flexibility: both push-based and pull-based models are implemented to allow efficient zipping, concatenation and other streaming operations.

  • Streaming notation: build streams and sinks using a convenient comprehension and applicative notations.

Read the library documenation for more details.

Acknowledgements

This library is based on ideas found in other libraries and research projects such as: Haskell's Pipes and Foldl libraries, Scala's ZIO Streams, Clojure's Transducers and the Iteratees streaming model by Oleg Kiselyov.

Dependencies (3)

  1. ocaml >= "4.08.0"
  2. dune >= "2.0"
  3. stdlib-shims

Dev Dependencies

None

Used by

None

Conflicts

None

OCaml

Innovation. Community. Security.