Releases

Unbug 0.5 adds breakpoint-like assertions for Rust debugging

Unbug 0.5 tries to stop Rust errors at the moment they first go bad, with a new macro that fires before `?` returns an error.

Nina Kowalski··2 min read
Published
Listen to this article0:00 min
Share this article:
Unbug 0.5 adds breakpoint-like assertions for Rust debugging
AI-generated illustration

A bad assumption in a Rust async path can disappear behind layers of `Result` handling before anyone sees where it started. Unbug 0.5 tries to stop that handoff, adding a macro that can place an assertion before a failure gets propagated with `?`, so the debugger stops closer to the line where the problem first showed up.

That is the kind of small, sharp tool Rust developers reach for when the compiler and test suite have already done their work, but a runtime bug still slips through. In the release announcement posted on April 23, 2026, the project also introduced experimental support for making tests fail when assertions are triggered in test mode. In practice, that means a check that normally helps during an interactive debugging session can also be turned into a harder signal in CI, narrowing the gap between runtime diagnostics and test-time validation.

The most obvious use case is not exotic. It is the kind of bug that shows up in a Bevy game server, an async web service, or a layered application with a long error chain: a value is assumed to exist, a network response is assumed to be ready, or a state transition is assumed to have happened, and then `?` quietly moves the failure up the stack. With Unbug, a developer can mark the failure point before the error is transformed or returned, which makes the postmortem much easier than combing through logs or sprinkling `println!` calls through the code.

Related stock photo
Photo by Daniil Komov

The project’s own documentation makes clear that this is meant for real debugger sessions, not just compile-time theater. Unbug describes itself as “Debug breakpoint assertions for Rust,” says shims keep breakpoints out of release builds, and notes that stable Rust is only supported on x86, x86_64, and ARM64, with other targets requiring nightly Rust and `#![feature(breakpoint)]`. It also caches debugger presence by default, while a `no_cache_debugger` feature exists for late attachment, which tells you exactly what kind of workflow the crate is chasing.

That workflow got a public stage too. Bevy Meetup #13, scheduled for 2026-04-23, included Brian Jesse’s talk, “Ergonomic runtime assertions with Unbug,” in a virtual session from the Bevy Game Development Meetup. That makes Unbug feel less like another assertion helper and more like a meaningful debugging layer for Rust developers who want runtime failures to be as actionable as compile errors, especially when the bug only appears after the code has already escaped into the wild.

Know something we missed? Have a correction or additional information?

Submit a Tip

Never miss a story.

Get Rust Programming updates weekly. The top stories delivered to your inbox.

Free forever · Unsubscribe anytime

Discussion

More Rust Programming News