Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
doc
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Missionary

A functional effect and streaming system for clojure and clojurescript.

clojars

cljdoc

build

license

Maturity

Experimental status, breaking changes should be expected.

Rationale

Imperative-style concurrent programming comes along with serious pitfalls. Uncontrolled process spawning requires discipline and ceremony to properly handle failure and cancellation propagation, mixing essential and accidental complexity. Popular techniques such as channels and futures/promises don't solve this problem and often introduce concurrency concerns in otherwise purely sequential logic. missionary takes a functional approach to this problem, modelling processes as values with precise semantics.

Guidelines

  • Simple, REPL-friendly, dependency-free underlying protocols : task & flow, respectively single and multiple value producers.
  • Strict supervision providing transparent propagation of cancellation and failure, with strong resource cleanup guarantees.
  • Unified representation of multiple-value producers supporting backpressure propagation of discrete events and lazy sampling of continuous values.
  • Reactive Streams compliant
  • Asynchronous design for efficiency and clojurescript compatibility
  • Lightweight API leveraging standard clojure primitives (collections, transducers, reducing functions, reference types, first-class nil) to prevent combinatorial explosion of operators
  • Expressive syntax

Documentation

Reference

missionary.core

Tutorials

  1. Hello task
  2. Hello flow

Guides

  1. Retry with backoff
  2. Happy eyeballs
  3. Iterative queries

Community

About

A functional effect and streaming system for clojure and clojurescript.

Topics

Resources

License

Releases

No releases published

Packages

No packages published