Skip to main content

Versioning and targets

Versioning​

Reqsign publishes many crates on three tracks:

TrackCratesScheme
Core + servicesreqsign-core, reqsign-aws-core, every reqsign-<provider> service crate, reqsign-file-read-tokio, reqsign-command-execute-tokioLockstep major (currently 3.x)
Reqwest adapterreqsign-http-send-reqwestIndependent major (currently 4.x), so reqwest major bumps do not force a core major
FacadereqsignIndependent (currently 0.20.x)

Lockstep means any 3.x service crate composes with any 3.x core; mixing majors fails to compile — the trait definitions are the compatibility boundary, and Cargo enforces it.

Applications should depend on the facade and let it pin compatible components; libraries should depend on reqsign-core plus their service crates with major-only bounds, leaving context implementations to the application:

# Application:
reqsign = { version = "0.20", features = ["aws"] }

# Library:
reqsign-core = "3"
reqsign-aws-v4 = "3"

Every release ships as an ASF source release plus crates.io packages — see Download. Release notes and migration steps for breaking majors are published with each GitHub release.

Targets​

Rust version. The workspace declares rust-version = "1.86.0" — the minimum supported Rust. CI tracks stable; MSRV bumps are treated as observable changes, not patch-level noise.

Native. Reqsign is pure Rust with no C dependencies of its own; CI exercises Linux, macOS, and Windows. The default context components (Tokio file reading and command execution, reqwest HTTP) run wherever those crates do.

WASM. wasm32-unknown-unknown is a supported, CI-verified target for a defined subset: reqsign-core, reqsign-aws-core, and the AWS SigV4, AWS SigV4a, Azure Storage, Aliyun OSS, and Tencent COS providers. The provider matrix is the authoritative per-provider status; the Custom runtimes & WASM guide covers building and browser-backed contexts.

Async runtimes. reqsign-core is runtime-agnostic — nothing in core assumes Tokio. Runtime coupling lives only in the optional context crates; swap them to run elsewhere.