Skip to content

chore: migrate workspace from Rust edition 2021 to edition 2024 #1778

@josecelano

Description

@josecelano

Goal

Update all workspace crates from edition = "2021" to edition = "2024" and bump the MSRV from 1.72 to 1.85, bringing the project to the current stable Rust edition and aligning with the Rust ecosystem default.

Background

Rust 2024 was stabilised with Rust 1.85.0 (February 2025). New Cargo projects now default to edition = "2024". Staying on edition 2021 diverges from the ecosystem default and misses several quality-of-life improvements (cleaner temporary lifetimes, safer unsafe ergonomics, improved async semantics, formatter improvements, and Cargo resolver v3).

Sequencing with package extraction (EPIC #1669)

The edition migration must happen before any package extraction from EPIC #1669. All packages inherit edition.workspace = true, so migrating now means one atomic change + one PR. If packages are extracted first while still on edition 2021, each extracted repository would need its own independent migration.

Dry-run analysis (Rust 1.97.0-nightly)

RUSTFLAGS="-W rust-2024-compatibility" cargo check --workspace --all-targets --all-features

33 warnings across 21 project source files:

Lint Count Auto-fixable
tail_expr_drop_order (relative drop order) 18 ⚠️ Manual
if_let_rescope (if let shorter lifetime) 9 ✅ Yes
edition_2024_expr_fragment_specifier 5 ✅ Yes
deprecated_safe_2024 (set_var unsafe) 1 ✅ Yes + safety audit

No static mut, unsafe extern blocks, unsafe attributes, gen conflicts, or RPIT issues found.

Scope

In scope:

  • Bump edition"2024" and rust-version"1.85" in workspace root Cargo.toml
  • Apply all auto-fixable warnings via cargo fix --edition
  • Manually review all 18 tail_expr_drop_order locations
  • Audit std::env::set_var usage for thread-safety
  • Apply cargo fmt for style edition 2024 formatting

Out of scope:

  • Upstream dependency tail_expr_drop_order warnings (dry-run artifact, not a real post-migration issue)
  • proc-macro-error2 v2.0.1 future-incompatibility (separate ticket)

Effort estimate

~5–7 hours: ~1 h automated, ~3–4 h manual review of 18 drop-order locations, ~30 min safety audits, ~1 h verification.

Implementation plan

Incremental within a single branch (T1–T14), one package tier at a time. The edition = "2024" field change is the capstone commit (T12); every prior commit compiles against edition 2021.

Full spec: docs/issues/open/ (after this issue is created).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions