Release v1.0.0 — Loco is stable · loco-rs/loco · GitHub
//releases/show" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
//releases/show;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
Uh oh!
There was an error while loading. Please reload this page.
loco-rs
loco
Public
Uh oh!
There was an error while loading. Please reload this page.
Notifications<br>You must be signed in to change notification settings
Fork<br>420
Star<br>9k
v1.0.0 — Loco is stable
Latest
Latest
Compare
Choose a tag to compare
Sorry, something went wrong.
Filter
Loading
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
No results found
View all tags
jondot
released this
29 Jul 10:07
v1.0.0
29b492e
This commit was created on GitHub.com and signed with GitHub’s verified signature .
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode.
1.0.0 - 2026-07-25
1.0.0 is the first stable Loco release — a single, intentionally-breaking
milestone. Its headline is the move to Sea-ORM 2.0 , alongside first-class
LLM/agent support, priority queues, a broad dependency modernization, and a deep
hardening pass across the queue, storage, config, error, remote-IP, and
middleware subsystems. Follow the step-by-step
0.16 → 1.0 upgrade guide.
Breaking Changes
Sea-ORM 2.0 + sqlx 0.9. Bump sea-orm/sea-orm-migration to 2.0
(app + migration crate), direct sqlx to 0.9, update the Sea-ORM CLI, and
regenerate entities. Raw-Statement calls gain a _raw suffix; runtime SQL
strings need AssertSqlSafe. MSRV is 1.94 (sea-orm 2.0.0 declares it).
(Adopted from the SeaQL fork and
#1698.)
Generated primary/foreign keys are now 64-bit (BIGINT / i64). Also the
int/unsigned field types generate 64-bit columns. Only affects newly
generated code; existing tables are untouched.
Priority queues — Redis backend change. The Redis worker moved from Lists
to Sorted Sets (ZSET) to support priority; drain existing Redis queues before
upgrading . Postgres/SQLite auto-migrate a priority column (no action).
(#1693)
Worker::perform_later() returns the job ID (Result), and
Queue::enqueue() returns Result>. Existing
perform_later(...).await?; keeps working. (#1624, fixes #1623)
PageResponse exposes meta: PagerMeta instead of flat
total_pages/total_items (also carries page/page_size). (#1685, fixes #1683)
View engine: use engines::TeraView::build_with_post_process(...) instead
of TeraView::build()?.post_process(...) in after_routes.
Dependency majors: thiserror 1→2, tower 0.4→0.5, heck→0.5,
byte-unit 4→5, ipnetwork 0.20→0.21, strum→0.27, redis 0.31→1,
bb8-redis→0.26, opendal 0.54→0.57; serde_yaml→serde_yaml_ng.
Transitive for most apps.
Removed the dead loco-cli crate (superseded by loco-new, the published
loco binary).
ExtraDbInitializer removed; use MultiDbInitializer. The
single-extra-connection initializer (initializers.extra_db, which layered a
bare Extension) is gone. Use MultiDbInitializer with a
one-entry initializers.multi_db map instead, and extract the connection with
Extension + multi_db.get(""). This collapses two
near-identical initializers into one named-connections abstraction.
AppContext is now #[non_exhaustive]. Construct it with
AppContext::builder(environment, db, config) (or builder(environment, config) without the with-db feature) followed by optional
.queue_provider(..)/.mailer(..)/.storage(..)/.cache(..)/.shared_store(..)
and .build(). Direct struct-literal construction and exhaustive pattern
matches on AppContext from outside the crate no longer compile; field
access (ctx.db, ctx.config, State/FromRef extraction) is unchanged.
This makes future context fields non-breaking to add.
Storage MirrorStrategy and BackupStrategy merged into ReplicatedStrategy.
The two strategies were the same primary-plus-secondaries replication engine;
they are now one storage::strategies::replicated::ReplicatedStrategy with a
single FailurePolicy enum. Migrate: MirrorStrategy::new(p, s, MirrorAll) →
ReplicatedStrategy::mirror(p, s, FailurePolicy::FailIfAny);
BackupStrategy::new(p, s, BackupAll) → ReplicatedStrategy::backup(p, s, FailurePolicy::FailIfAny). Old FailureMode maps:...