bench/aegir/Cargo.toml
[package]
# Publish name `skade-aegir`: the bare name `aegir` is squatted on crates.io by an
# unrelated autodiff library (v2.x). Consumers keep `use aegir::…` via the dep-key
# rename `aegir = { package = "skade-aegir", … }` — same pattern as gatling →
# `rotaryengine`.
name = "skade-aegir"
version = "0.2.1"
edition = "2024"
# NOTE: this description used to end "— so it coexists with gix where rust-s3
# can't". That was true against gix ≤ 0.85 and is FALSE as of gix 0.86 (which
# takes gix-protocol 0.64, the release that dropped maybe-async). See
# .nornir/aegir.md § "Stale-claim check" for the measurement. The remaining
# claims below (no maybe-async, no C, no OpenSSL) are all still true.
description = "Ægir — a tiny pure-Rust S3 client (SigV4 over ureq, zero-copy reads). No maybe-async, no C, no OpenSSL."
license = "MIT OR Apache-2.0"
repository = "https://git.gunnar.rs/nordisk/skade"
# Development notes, agent instructions and machine-local tooling stay in the
# repository; they are not part of the published crate.
exclude = [
".nornir/",
]
# HOLD LIFTED 2026-08-17: published as `skade-aegir` so skade-katalog's `s3`
# feature (src/s3_storage.rs, the aegir-backed iceberg StorageFactory) can ship
# to crates.io. It publishes from THIS detached workspace root (bench/aegir),
# never from the repo-root workspace.
[dependencies]
# HTTP — pure Rust, rustls. Already used across the bench.
ureq = "3"
# No direct rustls since ureq 3 (2026-10-02): `Client::with_tls_config` takes a
# `ureq::tls::TlsConfig` (roots + identity as data); ureq 3 owns its rustls (ring).
# AWS SigV4 (HMAC-SHA256). RustCrypto, pure Rust.
hmac = "0.13"
sha2 = "0.11"
# Shared lowercase-hex encoder (L5 — one hex site across the constellation).
# The HMAC/SHA256 crypto above stays; only the hand-rolled hex is deduped.
nornir-hash = "0.1.1"
# Zero-copy response bodies.
bytes = "1"
# RFC1123 / SigV4 timestamps.
chrono = { version = "0.4", default-features = false, features = ["clock"] }
# io_uring TCP transport for the plaintext hot path (RustFS, no TLS). Pure Rust:
# its only deps are libc FFI decls + bitflags + cfg-if (no bindgen, no C, no
# OpenSSL). Optional — pulled in only by the `uring` feature.
io-uring = { version = "0.7", optional = true }
[features]
# Opt-in io_uring TCP transport for the plaintext (http://) hot path. `ureq`
# stays the default backend; `uring` only handles plaintext and falls back to
# `ureq` for TLS. Select per-client via `Client::with_transport(Transport::Uring)`
# or `AEGIR_TRANSPORT=uring`.
uring = ["dep:io-uring"]
[dev-dependencies]
# s3_smoke-style integration test points at a live RustFS via env.