Skip to content

Releases: WallabyDesigns/Larust

Larust: First Official Release v0.5.0

Choose a tag to compare

@Costigan-Stephen Costigan-Stephen released this 27 Sep 00:55

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 (from xr 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:install now 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.