Skip to content

build: support Rust 1.80 - #333

Merged
Tim-Zhang merged 5 commits into
masterfrom
fix/msrv-1.80
Sep 24, 2026
Merged

Tim-Zhang merged 5 commits into
masterfrom
fix/msrv-1.80

Conversation

@Tim-Zhang

@Tim-Zhang Tim-Zhang commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

Rust 1.85 unnecessarily restricts downstream users. Lower the runtime, generators, and examples to Rust 1.80.

Keep tempfile and indexmap compatibility bounds in development dependencies for MSRV checks, so ttrpc does not impose them on downstream projects. Document the compatible transitive dependency ranges for Rust 1.80–1.84 users in the root README.

Lower the declared MSRV for the runtime, generators, and examples.
Resolve compatible dependencies with a newer Cargo before running
the Rust 1.80 CI checks.

Signed-off-by: Tim Zhang <tim@hyper.sh>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Rust 1.81-only APIs, unconstrained downstream dependencies, and incomplete example coverage invalidate the Rust 1.80 claim.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 2 High severity

Open (2)
What changed in this PR

Lowers the declared MSRV to Rust 1.80 and updates CI compatibility testing.

Changes:

  • Updates MSRV metadata and documentation.
  • Adds Rust 1.80 dependency resolution and CI testing.
  • Updates runtime, generators, and examples.
File Review
ttrpc-codegen-prost/​Cargo.toml Declares Rust 1.80, but uses std::io::Error::other, which requires Rust 1.81.
README.md Documents Rust 1.80 compatibility.
example/​Cargo.toml Declares Rust 1.80 compatibility, but CI does not compile its example targets.
example-prost/​Cargo.toml Declares Rust 1.80 compatibility.
Cargo.toml Lowers the workspace MSRV despite Rust 1.81-only Error::other usage.
.github/​workflows/​bvt.yml Adds MSRV testing, but generated lockfiles do not constrain downstream resolution and the regular examples are not explicitly checked.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread Cargo.toml
Comment thread ttrpc-codegen-prost/Cargo.toml
Constrain transitive dependencies that otherwise select releases
requiring newer Cargo. Resolve and test from a clean checkout with
only the Rust 1.80 toolchain.

Signed-off-by: Tim Zhang <tim@hyper.sh>
Keep Rust 1.80 CI on compatible tempfile and indexmap releases
without imposing those upper bounds on downstream users.
Document consumer-side constraints and check fresh consumers.

Signed-off-by: Tim Zhang <tim@hyper.sh>
Drop the separate consumer fixture from the MSRV job.
The crate checks cover our supported code; downstream users control
transitive dependency resolution in their own projects.

Signed-off-by: Tim Zhang <tim@hyper.sh>
Describe the different indexmap limits for Rust 1.80–1.81 and
1.82–1.84. Keep the guidance in the root README only.

Signed-off-by: Tim Zhang <tim@hyper.sh>
@Tim-Zhang
Tim-Zhang requested a review from lifupan September 23, 2026 13:58
@Tim-Zhang Tim-Zhang assigned wllenyj and unassigned wllenyj Sep 23, 2026

@teawater teawater left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM

@Tim-Zhang
Tim-Zhang merged commit e656fdc into master Sep 24, 2026
15 checks passed
@Tim-Zhang
Tim-Zhang deleted the fix/msrv-1.80 branch September 24, 2026 03:10
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.

4 participants