Hi HN, we’d like to share our open-source stream processing engine written in Rust, where WASM transformations/enrichments are first-class.
There have been several earlier attempts to bring WebAssembly into the streaming world (Arroyo, Vector, etc.) that faced toolchain or runtime-maturity issues. We felt now is the right time: thanks to recent performance improvements by the wasmtime team, we see ~230 MiB/s throughput ingesting from a socket and passing to a Go-WASM transform[1] on a 16 core machine. The same workload runs with slightly lower throughput in native Go.
WASM is not just a novel technology we wanted to play with; we have two core motivations: 1. We’ve been collaborating with the OCSF team, and discovered that sharing vendor->OCSF mappers is a big hurdle (vendor schema drift + OCSF updates). With WASM, we don’t need to agree on a DSL before we can share transformations. 2. LLMs are much better at writing code (Go, Python, etc.) than domain-specific languages. We wanted a stream processor where you can write plugins, test, and benchmark easily and locally. With Tangent we rewrote all the mappers in the OCSF examples repo in about an hour[2]
We’d love to hear your feedback!
[1] https://github.com/telophasehq/tangent/blob/main/examples/go... [2] https://github.com/ocsf/examples