ADR-001: Rust 1.85 + edition 2024 como floor
Date: 2026-05-24 Status: Accepted Author: Rômulo Febasi
Context
Synapse é um projeto novo (maio 2026). Decidir agora o MSRV é decidir quem consegue compilar a partir do código-fonte (Homebrew, nixpkgs, Debian stable, dev de máquina antiga). Decidir agora a edition (2021 vs 2024) fixa convenções de macro, idioms de async, e capacidades de bibliotecas que dependem da edição.
Decision
edition = "2024"(Cargo.toml erustfmt.toml).rust-version = "1.85": primeira stable que suporta edition 2024 (lançada em fev/2025).- Não pinar abaixo de 1.85: pinar mais baixo nos custa edition 2024 e ganhamos nada (sem dep crítica abaixo desse).
- Não pinar mais alto agressivamente (como
uvfaz com 1.93): corta packagers que ainda não pegaram a versão.
Consequences
- + acesso a
let-elseem mais posições, async closures, melhorias noasync/await,genblocks (quando estabilizado), trait upcasting. - + alinhamento com ripgrep,
jj, e a maioria dos CLIs modernos. - − dev em máquina com Rust < 1.85 precisa rodar
rustup update. - Revisitar: quando Rust 2.0 (hipotético) for anunciado, ou quando metade do top-100 do crates.io tiver subido o MSRV para 1.90+.
Alternatives considered
edition = "2021": ecossistema migrou. Não há razão para um projeto novo nascer em edition antiga.- MSRV “stable - 3” rolling: bom para libs amplamente consumidas, ruim para CLIs distribuídas por packagers: quebra de MSRV em patch release queima reputação.
- MSRV 1.85 exato (sem
+): clippy e cargo desencorajam pin exato para crate aplicações: usamos"1.85"que significa ≥ 1.85.