Skip to content

chore: lock MSRV policy + deprecation-window discipline for 1.0 (#43)#117

Merged
joaquinbejar merged 1 commit intomainfrom
chore/43-msrv-policy
May 6, 2026
Merged

chore: lock MSRV policy + deprecation-window discipline for 1.0 (#43)#117
joaquinbejar merged 1 commit intomainfrom
chore/43-msrv-policy

Conversation

@joaquinbejar
Copy link
Copy Markdown
Owner

Closes #43.

Summary

Codifies the MSRV policy in tracked artifacts so a 1.0 commitment with a moving floor doesn't bite downstream consumers.

  • `MSRV.md` (new, repo root): policy ("MSRV may rise only in minor versions; one-minor-version deprecation window before raising"), current MSRV table per crate (every crate at 1.75 effective 2026-05-06), rationale for not pinning clippy to MSRV, step-by-step procedure for raising it.
  • Per-crate MSRV pins: `crates/itch-source/Cargo.toml` and `crates/itch-replay/Cargo.toml` were missing `rust-version`; pinned both to 1.75. The other 12 crates already inherit `rust-version.workspace = true` from `[workspace.package]` (which is set to 1.75). Now every crate has an explicit floor.
  • CI MSRV job: previously `cargo build` only; now `cargo build` followed by `cargo test` so MSRV breakage is caught at the same gate as functional regressions. Job renamed to `cargo build + test (MSRV 1.75)`.

`make check-msrv` (added in #42) is the local equivalent.

`rust-toolchain.toml` stays on `stable`; the MSRV job installs 1.75 separately via `dtolnay/rust-toolchain@1.75`.

Test plan

  • `cargo build --workspace --all-features` (stable).
  • `cargo clippy --workspace --all-targets --all-features -- -D warnings`.
  • CI `msrv` job will exercise the new `cargo test` step.

`docs/PRD.md` §4 NFR-7 and the v1.0 roadmap entry require a stable
MSRV with a one-minor-version deprecation window before raising.
This change codifies the policy in tracked artifacts:

- `MSRV.md` (new, repo root): policy ("MSRV may rise only in minor
  versions; one-minor-version deprecation window before raising"),
  current MSRV table per crate (every crate at 1.75 effective
  2026-05-06), rationale for not pinning clippy to MSRV, the
  step-by-step procedure for raising it, and the on-boarding rule
  for new crates.
- `crates/itch-source/Cargo.toml` and `crates/itch-replay/Cargo.toml`
  pinned with explicit `rust-version = "1.75"`. The other 12 crates
  inherit `rust-version.workspace = true` from `[workspace.package]`,
  which already pins 1.75. Now every crate has an explicit MSRV
  floor.
- `.github/workflows/ci.yml` `msrv` job extended: previously only
  `cargo build`, now `cargo build` followed by `cargo test`. The
  job pins toolchain 1.75 via `dtolnay/rust-toolchain@1.75`,
  separate from the `stable` channel that drives the rest of CI.
  Job renamed to `cargo build + test (MSRV 1.75)` to reflect the
  new shape.

`make check-msrv` (added in #42) is the local equivalent: builds
and tests every promoted crate against the pinned 1.75 toolchain.

`rust-toolchain.toml` stays on `stable`; the MSRV job installs 1.75
separately. `clippy` is intentionally NOT pinned to MSRV — clippy
lints move with the toolchain, not the language, and pinning clippy
would block useful new lints without buying compatibility.

All gates clean:
- `cargo build --workspace --all-features` (stable)
- `cargo clippy --workspace --all-targets --all-features -- -D warnings`

Closes #43.

Signed-off-by: Joaquin Bejar <jb@taunais.com>
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR codifies and enforces the workspace’s Minimum Supported Rust Version (MSRV) policy ahead of a 1.0 stability commitment, by documenting the policy, ensuring crates declare an MSRV floor, and strengthening CI to catch MSRV regressions.

Changes:

  • Added a root MSRV.md describing the MSRV policy, current MSRV, and the procedure for raising it.
  • Pinned rust-version = "1.75" in crates that did not previously declare/inherit an MSRV (itch-source, itch-replay).
  • Updated the CI “msrv” job to run cargo test in addition to cargo build under Rust 1.75.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
MSRV.md Introduces the documented MSRV policy, current MSRV table, and upgrade procedures.
crates/itch-source/Cargo.toml Adds an explicit rust-version pin.
crates/itch-replay/Cargo.toml Adds an explicit rust-version pin.
.github/workflows/ci.yml Extends the MSRV CI job to build and test on Rust 1.75.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread MSRV.md
Comment on lines +28 to +29
`rustc 1.75.0` for every crate in the workspace, effective 2026-05-06.

Comment thread MSRV.md
Comment on lines +112 to +113
- `docs/PRD.md` §4 NFR-7 (local-only).
- `docs/ROADMAP.md` v1.0 (local-only).
name = "itch-source"
version = "0.1.0"
edition = "2021"
rust-version = "1.75"
name = "itch-replay"
version = "0.1.0"
edition = "2021"
rust-version = "1.75"
@joaquinbejar joaquinbejar merged commit ceeb0d7 into main May 6, 2026
15 checks passed
@joaquinbejar joaquinbejar deleted the chore/43-msrv-policy branch May 6, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

MSRV policy + deprecation-window discipline for 1.0

2 participants