Skip to content

fix!: build against rind 0.4 and its corrected adapters - #8432

Draft
kixelated wants to merge 4 commits into
mainfrom
quest/m0/rind-adapters
Draft

kixelated wants to merge 4 commits into
mainfrom
quest/m0/rind-adapters

Conversation

@kixelated

@kixelated kixelated commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Moves MoQ to rind 0.4 and the patch releases of rind-rustls, rind-jsonwebtoken, rind-object-store, and rind-rcgen that make each adapter's API its upstream's, so main keeps building the day they publish. Finishes quest/m0/rind-adapters.md.

Changes

  • Cargo.toml: rind 0.4.0 (keeping wipe), rind-rustls 0.23.4, rind-rcgen 0.14.4, rind-jsonwebtoken 11.0.4, rind-object-store 0.14.4. Cargo.lock is not updated: those versions are not on crates.io yet, so CI cannot resolve this branch until they publish.
  • Adapter call sites, shipped code, tests, and benches (moq-dev/rind#521, moq-dev/rind#519, moq-dev/rind#515): rind_rustls::default_provider() and rind_object_store::default_provider() lose their .unwrap()/.expect(..)/?; rind_jsonwebtoken::default_provider().expect(..) becomes &rind_jsonwebtoken::DEFAULT_PROVIDER; KeyPair::generate(&alg) becomes generate_for(&alg) everywhere (one test wants P-384); to_pkcs8().secret_pkcs8_der() becomes serialize_der()/serialized_der().
  • rind 0.4 drops the runtime CPU check, so every CPU check in MoQ goes:
    • moq_crypto::cpu::check and moq_crypto::cpu::UnsupportedCpu are deleted; moq_crypto::cpu keeps only the Dit re-export.
    • moq_crypto::provider::provider() returns Provider and install_default() returns (), since neither can fail now. moq_tokio::crypto re-exports follow, and its check/UnsupportedCpu re-exports go.
    • The UnsupportedCpu error variants go from moq-auth, moq-crypto's e2ee, moq-hls, moq-quic, moq-rtmp, moq-tokio (tls, mdns, quic backend), moq-uring, moq-webrtc (and p2p), and qmux, with the doc comments that named them.
    • The vendored dimpl and str0m rind providers' default_provider() become infallible, and dimpl's ConfigError::UnsupportedCpu goes. moq-quic's private provider() wrapper, which only translated the CPU error, is inlined; moq-webrtc's private rtc_config() and the Result around rtc_config_with_codecs/rtc_with_codecs go.
    • moq-relay's Relay::load and moq-auth's crypto::init no longer check.
  • Deletes the quest and its link in quest/m0/README.md.

Public API

Breaking (!):

  • moq-crypto: cpu::check and cpu::UnsupportedCpu removed; provider::provider() returns Provider instead of Result<Provider, UnsupportedCpu>; provider::install_default() returns (); e2ee::Error::UnsupportedCpu removed.
  • moq-tokio: crypto::check and crypto::UnsupportedCpu removed; crypto::provider()/install_default() as above; UnsupportedCpu variants removed from its TLS, mdns, and QUIC backend errors.
  • moq-auth, moq-hls, moq-quic, moq-rtmp, moq-uring, moq-webrtc, qmux: each error enum loses its UnsupportedCpu variant.

Migration: drop calls to cpu::check(), drop the ?/.unwrap() after provider() and install_default(), and delete match arms on UnsupportedCpu. rind 0.4 refuses an unsupported target at compile time, so there is nothing left to handle at runtime.

Wire: none.

Choices made without asking

  • Took the quest's recommendation to delete cpu::check and UnsupportedCpu rather than keep a check that cannot fail. That made provider() and install_default() infallible, which the quest's "moq_crypto::provider keeps its signatures" did not anticipate; keeping a Result that can never be Err would be the compatibility shim the guidelines forbid.
  • Guessed the adapter patch versions as the next patch after crates.io's current releases (rind-rustls 0.23.4 and rind-rcgen 0.14.4 as moq-dev/rind#548 sets them; rind-jsonwebtoken 11.0.4 and rind-object-store 0.14.4 as the hand-set patches Fix the JS packages and release. #519 will need). Correct them to what actually publishes.

Verification

rind 0.4 is not published and its CPU-check removal has not landed on rind main, so the branch was checked against a local rind with an uncommitted [patch.crates-io] pointing all five crates at: #519's branch (771f0e6e) merged with #548's branch (versions), plus a local edit removing check and MissingFeature from rind::cpu's public re-export to stand in for the CPU-check removal.

  • cargo check --workspace --all-targets --all-features: passes.
  • cargo clippy --workspace --all-targets --all-features -- -D warnings: passes.
  • cargo fmt --all: applied.
  • cargo test --all-features for moq-crypto, moq-auth, moq-quic, and moq-tokio: passes. moq-webrtc under cargo nextest: 1677 passed (its str0m tests each set a global tracing subscriber, so they need nextest's process per test).
  • just check did not run: the host's quest gate queue held it past two hours. Run it once rind publishes; check c fails on main already (quest/m0/check-c-moqinstance.md).

Waiting

  • moq-dev/rind: publishes rind 0.4.0 and the adapter patch releases in one release, once its CPU-check removal has landed. Check that cargo search rind shows 0.4.0, and that each of rind-rustls, rind-jsonwebtoken, rind-object-store, and rind-rcgen has a release whose rind requirement is 0.4, from https://crates.io/api/v1/crates/<crate>/<version>/dependencies; then correct the four adapter requirements in Cargo.toml to those versions, run cargo update -p rind -p rind-rustls -p rind-jsonwebtoken -p rind-object-store -p rind-rcgen, run just check, and mark ready. Re-read Fix the JS packages and release. #519's and the CPU-check removal's Public API sections when they merge, in case a signature moved.

Follow-ups

  • None to plan. MIGRATE.md for moq-auth, moq-crypto, moq-hls, moq-rtmp, and moq-tokio still describe the shared unsupported-CPU error from the last cut; the next release cut writes the migration above into them.

Models

Size: S
Implementer: Claude Code, claude-opus-5-5, unknown effort

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 4 commits November 10, 2026 01:13
Quest-Claim: 849684300b525059
Drop moq_crypto::cpu::check and UnsupportedCpu, since rind 0.4 has no
runtime CPU check, and move every caller to the adapters' upstream APIs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title MoQ builds against rind 0.4 and its corrected adapters fix!: build against rind 0.4 and its corrected adapters Nov 10, 2026

This branch has not been deployed

No deployments
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.

1 participant