Repository navigation
feat: make library crates embeddable at MSRV 1.91 with backend-agnostic features - #1068
Conversation
…ic features Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 37 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Central YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (7)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
No dependency changes detected. Learn more about Socket for GitHub. 👍 No dependency changes detected in pull request |
Greptile SummaryThis PR lowers the workspace MSRV from 1.93 to 1.91 and moves TLS, DNS, and compression backend choices off the workspace so embedding
Confidence Score: 4/5Safe to merge for standalone aube builds; the one gap is CLAUDE.md still advertising 1.93 as the MSRV, which will mislead contributors and AI assistants into thinking 1.93-only features are safe to use. The Cargo feature wiring is correct and well-tested. The only real gap is that CLAUDE.md still says msrv 1.93 in two places after the 1.91 change, creating a contradiction that could silently re-introduce 1.93-only features in future PRs and break cargo msrv verify in CI. CLAUDE.md (not in the diff) needs its two msrv: 1.93 references updated; Cargo.toml is where the rust-version change lives and is the best place to catch this omission. Important Files Changed
Reviews (2): Last reviewed commit: "refactor(registry): drop native-tls, kee..." | Re-trigger Greptile |
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
Groundwork for embedding aube's library crates in mise (first
aube-registryfor npm metadata/installs, potentially resolver/store/linker later — see jdx/mise#11147). Two things blocked that today: the declared MSRV, and workspace-level cargo features that leak global build side effects into any embedding binary.MSRV: 1.93 → 1.91
mise's MSRV is pinned to 1.91 by its distro packaging (Debian PPA, Fedora COPR), and cargo's MSRV-aware resolver silently falls back to
aube-registry 1.0.0-beta.2when a 1.91 project adds the dependency. The whole workspace already compiles and tests cleanly on 1.91 — the 1.93 declaration was incidental frominit, not a real requirement. The existingcargo msrv verifystep in CI enforces the new floor automatically.Feature hygiene: TLS / DNS / zlib backends move from workspace to leaf
Cargo features unify across the final binary, so workspace-wide choices became the embedder's choices too:
reqwest/hickory-dnsflips the default DNS resolver for every reqwest client in the host binary (hickory_dns: cfg!(feature = "hickory-dns")in reqwest's builder) — in mise's case that would silently change DNS behavior for its own HTTP plus rattler/gix/sigstore internals.reqwest/rustlsforces a second TLS stack into the host build even when the embedder never constructs an aube client.flate2/zlib-ngforces libz-ng-sys (cmake + C toolchain) onto every cross-compile target of the embedder.None of these are code dependencies of the library crates (the rustls
ClientSessionStorewiring lives in the bin crate; libs only use TLS-generic reqwest APIs), so they're now selected at the edges:reqwestdropsrustls/hickory-dns;aube-registrygains featuresdefault = ["rustls", "hickory-dns"]plus a standalonerustls— standalone aube behavior is unchanged via defaults, embedders usedefault-features = false, features = ["rustls"](acompile_error!fires ifrustlsis off)rustlsto keep hickory-dns out of their buildaube-utilgains a matchingrustlsforward (default empty) and its webpki-root-fallback helper compiles to a no-op without itbuild_http_clientnow pins rustls explicitly (use_rustls_tls()) instead of relying on reqwest's default selection, which silently becomes native-tls if an embedder's other deps pull reqwest's native-tls feature in — that would mismatch the rustls client-certIdentityand session-ticket wiringflate2moves torust_backend; the aube binary re-enableszlib-ng, and feature unification makes the C backend win for the whole standalone aube build, so no perf changeVerified
cargo check/teston the full workspace with defaults (stable + 1.91): behavior-identical,aubebinary tree still contains hickory-dns, rustls, and libz-ng-syscargo check/test -p aube-registry --no-default-features --features rustls: passes (227 registry unit tests), tree contains zero hickory/libz-ng entriesopenssl/native-tls/hyper-tls: 0 entries in Cargo.lock;cargo deny check banspasses--no-default-featuresalone fails fast with the intendedcompile_error!Suggested CI addition (couldn't push workflow changes — token lacks
workflowscope)To keep the embed shape from regressing, add to
test-linuxafter thecargo msrvstep:This PR was generated by an AI coding assistant (Claude Code).