Marigold is a domain-specific language for streaming data pipelining and analysis. Marigold compiles to asynchronous Rust, and can be accessed in a macro:
```rust use marigold::m;
fn is_odd(i: &i32) -> bool { i % 2 == 1 }
let odddigits = m!(
range(0, 10)
.filter(isodd)
.return
).await.collect::
println!("{:?}", odd_digits); // [1, 3, 5, 7, 9] ```
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.
Marigold's CI builds against aarch64, arm, WASM, and x86 targets, and builds the x86 target in mac and windows environments.