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.…