16 releases

Uses new Rust 2021

new 0.1.16 Dec 3, 2022
0.1.15 Dec 3, 2022
0.1.14 Nov 26, 2022
0.1.12 Oct 16, 2022
0.1.0 Mar 8, 2022

#1 in #lalrpop

Download history 41/week @ 2022-08-15 41/week @ 2022-08-22 28/week @ 2022-08-29 24/week @ 2022-09-05 51/week @ 2022-09-12 7/week @ 2022-09-19 18/week @ 2022-09-26 19/week @ 2022-10-03 27/week @ 2022-10-10 28/week @ 2022-10-17 12/week @ 2022-10-24 14/week @ 2022-10-31 12/week @ 2022-11-07 11/week @ 2022-11-14 74/week @ 2022-11-21 77/week @ 2022-11-28

174 downloads per month
Used in 2 crates

Apache-2.0 OR MIT

27KB
644 lines

Marigold

crates.io docs.rs tests bench style wasm last commit

Marigold is a domain-specific language for streaming data pipelining and analysis. Marigold compiles to asynchronous Rust, and can be accessed in a macro:

use marigold::m;

fn is_odd(i: &i32) -> bool {
  i % 2 == 1
}

let odd_digits = m!(
  range(0, 10)
    .filter(is_odd)
    .return
).await.collect::<Vec<_>>();

println!("{:?}", odd_digits); // [1, 3, 5, 7, 9]

Runtimes

By default, Marigold works in a single future and can work with any runtime.

The tokio and async-std features allow Marigold to spawn additional tasks, enabling parallelism for multithreaded runtimes.

Marigold supports async tracing, e.g. with tokio-console.

Platforms

Marigold's CI builds against aarch64, arm, WASM, and x86 targets, and builds the x86 target in mac and windows environments.

Dependencies

~1.8–3MB
~74K SLoC