Release v1.0.0 – Loco is stable

robin_reala1 pts0 comments

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:...

loco reload search redis stable signed

Related Articles