Skip to content

Ecosystem Survey (April 2026)

A condensed, opinionated map of the crates RTB depends on. For fuller reasoning and alternatives considered see docs/development/specs/rust-tool-base.md.

Capability Crate Why
CLI parsing clap 4.6 (derive + builder) Only viable choice for a framework. Derive for user ergonomics, builder for framework-internal dynamic registration.
Config figment 0.10 Provider-based layering matches Viper's source precedence. Excellent provenance for errors. Typed, not string-keyed.
Hot-reload notify 8 + notify-debouncer-full + arc-swap Idiomatic 2026 pattern for a watch::Receiver<Arc<T>>-based reactive config.
Embedded assets rust-embed 8 Dev-mode disk passthrough matches Go embed.FS ergonomics.
Overlay FS vfs 0.12 Ships OverlayFS, EmbeddedFS, PhysicalFS. Nest for N-way merges.
Logging tracing + tracing-subscriber De facto standard. JSON + pretty + OTel simultaneously via layers.
Terminal styling owo-colors 4 + console 0.15 (spinners) NO_COLOR-aware, zero-alloc.
Errors miette 7 + thiserror 2 miette's diagnostic reports subsume GTB's hint/stack/help model.
Git gix 0.72 (primary) + git2 (fallback) Pure-Rust, faster, better cross-compile; fall back only for write-paths gix can't yet do.
GitHub octocrab 0.47 PAT, OAuth, GitHub App + installation tokens, Enterprise via base_uri.
GitLab gitlab (Kitware) 0.1710 Self-hosted, nested groups, arbitrary endpoints.
Keychain keyring 3 macOS Keychain / Windows Credential Manager / Linux Secret Service + keyutils.
Semver semver 1 The crate cargo itself uses.
Self-update self_update 0.42 + self-replace 1.5 + ed25519-dalek 2 Orchestration, atomic-swap, signature verification.
TUI ratatui 0.29 + crossterm 19k★, huge widget ecosystem, async-friendly immediate mode.
Prompts inquire 0.8 Escape-to-cancel supported; richer than dialoguer.
Markdown termimad 0.33 Rich ANSI markdown with skins; direct glamour analogue.
Tables tabled 0.20 #[derive(Tabled)] matches the "struct tag" pattern.
HTTP client reqwest 0.12 (rustls) Async; streaming; json feature.
HTTP server axum 0.8 + axum-server Tower middleware; rustls TLS; trivial health endpoints.
gRPC tonic 0.14 Unchallenged.
AI genai 0.5 + async-openai 0.30 Multi-provider; streaming; structured output. Anthropic-direct via reqwest for cache/agents/thinking.
MCP rmcp 0.16 (official SDK) Use it, don't roll your own.
Async runtime tokio 1.47 Entire ecosystem assumes it. async-std is deprecated.
Regex regex 1.11 Thompson NFA — DoS-resistant by construction; cap memory with size_limit.
Deep merge json-patch 3 (ad-hoc) + figment's built-in source chaining No mergo equivalent needed in most cases.
Signals tokio::signal + signal-hook for exotic CancellationToken for fan-out cancellation.
TTY detection std::io::IsTerminal (stdlib ≥1.70) atty is deprecated.
Secrets in RAM secrecy 0.10 + zeroize 1 SecretString prints [REDACTED], zeroed on drop.
Templates (scaffolder) minijinja 2 Runtime Jinja2-compatible templates — what a scaffolder wants.
JSON Schema schemars 0.8 + jsonschema 0.31 Generation + validation.
OpenTelemetry opentelemetry* 0.31 + tracing-opentelemetry 0.32 Standard OTLP pipeline.
Paths directories 5 + dirs 5 Cross-platform XDG/AppData/Application Support.
Machine ID machine-uid 0.5 OS-native stable IDs; hash with a salt before emitting.
Hashing sha2 0.10 (spec-compat) + blake3 1 (fast) Right tool per use.
Archives tar 0.4 + flate2 1 + zip 2 Standard pipeline.
Typestate builders bon 3 Compile-time required-field enforcement.
Plugin registration linkme 0.3 Link-time distributed slices — no life-before-main.