[
{
"pattern": "chrono",
"replacement": "time",
"kind": "ModernAlternative",
"reason": "Smaller footprint, faster compiles for UTC-only use",
"source": "blessed.rs",
"condition": "UTC-only usage"
},
{
"pattern": "lazy_static",
"replacement": "std::sync::LazyLock",
"kind": "StdReplacement",
"reason": "Stable since Rust 1.80 — zero extra dependencies",
"source": "std docs"
},
{
"pattern": "once_cell",
"replacement": "std::sync::LazyLock / OnceLock",
"kind": "StdReplacement",
"reason": "LazyLock and OnceLock stable since Rust 1.80 — zero extra dependencies",
"source": "std docs"
},
{
"pattern": "structopt",
"replacement": "clap v4 (derive)",
"kind": "ModernAlternative",
"reason": "Fully integrated and actively maintained",
"source": "blessed.rs"
},
{
"pattern": "actix-web",
"replacement": "axum",
"kind": "ModernAlternative",
"reason": "Lightweight, Tokio-native, ergonomic",
"source": "blessed.rs"
},
{
"pattern": "iron",
"replacement": "axum",
"kind": "Unmaintained",
"reason": "Iron is unmaintained — axum is the modern Tokio-native choice",
"source": "blessed.rs"
},
{
"pattern": "memmap",
"replacement": "memmap2",
"kind": "Unmaintained",
"reason": "Original crate unmaintained — memmap2 is the maintained fork",
"source": "RustSec"
},
{
"pattern": "failure",
"replacement": "anyhow + thiserror",
"kind": "Unmaintained",
"reason": "failure is deprecated and unmaintained — anyhow (app) + thiserror (lib) is the standard",
"source": "blessed.rs"
},
{
"pattern": "log",
"replacement": "tracing",
"kind": "ModernAlternative",
"reason": "Structured, async-aware, span-based — the modern standard for observability",
"source": "blessed.rs"
},
{
"pattern": "reqwest+serde_json",
"replacement": "reqwest with \"json\" feature",
"kind": "FeatureOptimization",
"reason": "Built-in deserialization, one fewer dependency",
"source": "reqwest docs"
},
{
"pattern": "tokio+async-std",
"replacement": "tokio only",
"kind": "ComboWin",
"reason": "Dominant runtime ecosystem — no need for two runtimes",
"source": "blessed.rs"
},
{
"pattern": "env_logger",
"replacement": "tracing-subscriber",
"kind": "ModernAlternative",
"reason": "Pairs with tracing — structured, filterable, async-aware logging",
"source": "blessed.rs"
},
{
"pattern": "log+env_logger",
"replacement": "tracing + tracing-subscriber",
"kind": "ComboWin",
"reason": "Full modern observability stack — structured spans + subscriber",
"source": "blessed.rs"
},
{
"pattern": "warp",
"replacement": "axum",
"kind": "ModernAlternative",
"reason": "axum is the actively maintained Tokio-native web framework",
"source": "blessed.rs"
},
{
"pattern": "rocket",
"replacement": "axum",
"kind": "ModernAlternative",
"reason": "axum is lighter, Tokio-native, and the blessed.rs pick for new projects",
"source": "blessed.rs"
}
]