Repository navigation
Larust: First Official Release v0.5.0 #1
Costigan-Stephen
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
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 at0.5.0to reflect where the framework actually stands: pre-1.0, with noAPI-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.mdforthe 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 mechanismthat lets a running Larust app swap in a new binary with no dropped
connections. Two real, previously-undetected bugs were found and fixed:
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.
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 fixedby 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.mdandMILESTONES.md(M92-M101) for anyone curious aboutthe 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."
timeout with no indication of why.
xr service:installnow correctly reports failure (instead of amisleading success) when it can't write the systemd unit file.
Notes
crates as local path dependencies against a checkout. See
docs/ARCHITECTURE.md.This discussion was created from the release Larust: First Official Release v0.5.0.
All reactions