Repository navigation
Releases: WallabyDesigns/Larust
Release list
Larust: First Official Release v0.5.0
Larust is a Laravel-shaped web framework for Rust: real, compiled,
type-checked Rust (Axum + sqlx + tower-sessions) with a directory layout,
routing style, validation, templates, ORM vocabulary, and CLI a Laravel
developer should recognize immediately.
This is the first tagged release. Rather than 0.1.0, this starts at
0.5.0 to reflect where the framework actually stands: pre-1.0, with no
API-stability guarantee yet, but well past a bare starting point - a real
zero-downtime restart mechanism, an ORM, auth, queues, caching, and the
rest of the module set already covered by tests. See MILESTONES.md for
the full development history.
Highlights: zero-downtime restart hardening
The most significant work in this release is a deep hardening pass on
xr deploy/xr restart's zero-downtime restart handoff - the mechanism
that lets a running Larust app swap in a new binary with no dropped
connections. Two real, previously-undetected bugs were found and fixed:
- A Linux fd-inheritance ordering bug that broke every restart handoff
on Linux outright (the replacement process aborted instantly on
startup). Root-caused by testing on real Linux via WSL2 for the first
time, rather than relying on cross-compile type-checking alone. - A severe, sustained-failure bug under real concurrent traffic: a
replacement process could mistake its own predecessor's normal,
successful exit for a shutdown signal, and start draining connections
it was supposed to keep serving. Root-caused after ruling out four other
hypotheses (listen backlog size, client-side behavior, the listener-
sharing mechanism itself) - the actual cause was in how Linux's
parent-death-signal mechanism (PR_SET_PDEATHSIG) is scoped, now fixed
by disarming it the instant a replacement is ready to serve.
Both are now verified clean under repeated real-restart, real-traffic
end-to-end testing on Linux and Windows. Full technical writeups are in
docs/GOTCHAS.md and MILESTONES.md (M92-M101) for anyone curious about
the investigation itself.
Also in this release
xr run: starts an already-published release (fromxr deploy)
without rebuilding or republishing it - closes a gap between "deploy and
start" and "just start what's already there."- Better diagnostics when a restart handoff fails, instead of a bare
timeout with no indication of why. xr service:installnow correctly reports failure (instead of a
misleading success) when it can't write the systemd unit file.- CI reliability fixes for a few environment-sensitive integration tests.
Notes
- Pre-1.0: no API-stability guarantee yet, per semver convention.
- Not published to crates.io - generated apps still resolve framework
crates as local path dependencies against a checkout. See
docs/ARCHITECTURE.md.