{"repo":"TomasMikula/libretto","free":true,"listed":false,"github":"https://github.com/TomasMikula/libretto","clone":"git clone https://github.com/TomasMikula/libretto.git","description":"Declarative concurrency and stream processing library for Scala","language":"Scala","stars":214,"topics":["concurrency","stream-processing","functional-programming","declarative-programming","expressiveness","type-safety","resource-safety","session-types","linear-types"],"license":"MPL-2.0","category":"data-pipelines","readme_excerpt":"Libretto Declarative concurrency and stream processing library for Scala. Motivation ... or why another concurrency and stream processing library. Libretto grew out of frustration with existing libraries. Here is an attempt to summarize the pain points. - Dissatisfaction with effects being a prerequisite for concurrency. Existing libraries tend to build concurrency on top of effects: completing a Promise is an effect, spawning an actor or a fiber is an effect, enqueueing a message in a queue is an effect. Libretto rejects the assumption that effects are a prerequisite for concurrency. Although stream processing libraries do provide some high-level operations for declarative concurrency that abstract away from the underlying effects, we haven't come across a library with a set of high-level operations that is expressive enough for a moderately complex application. - Underdelivery on the promise of writing mere descriptions or blueprints of programs. Substantial parts of such \"descriptions\" are opaque Scala functions. Moreover, even in an IO monad-style program, we still manipulate live objects with identities, such as fibers, mutable references, queues, \"pre-materialized\" blueprints, ... That does not fit our idea of writing mere descriptions of programs. - The cognitive load of making sure all the wires are connected. In ensuring that each Promise is completed and completed only once, every spawned computation ( Future , actor, fiber) is awaited, all streams are consumed, all","default_branch":null,"files":null,"tree":[],"storefront":"/r/TomasMikula","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/TomasMikula/libretto/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}