Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 e rustfmt.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 uv faz com 1.93): corta packagers que ainda não pegaram a versão.

Consequences

  • + acesso a let-else em mais posições, async closures, melhorias no async/await, gen blocks (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.