Reactive Programming Doesn't Need a Framework — Ownership Is Enough
How Auralis, a two-crate Rust kernel, reduces reactive programming to things Rust programmers already know.
I spent the last few months building Auralis , a reactive kernel for Rust. Two crates, zero unsafe, signal crate has zero dependencies. It's not a web framework — no view! macro, no DOM, no hydration. Just reactive primitives you pair with whatever you already have.
The core idea fits in one sentence:
Reactive = pausable async tasks. Lifecycle = ownership + structured concurrency.
Everything else follows from this. Let me walk through the design decisions that make it work.
Problem 1: Signal::set() can't call subscribers directly
In most reactive systems, changing a signal's value immediately notifies everyone watching it. This seems natural, but it creates a cascade of problems:
A subscriber callback calls set() on another signal → that signal's callback calls set() on the first signal → infinite loop.…