From 4f14452c7799f7e78f66de518c746bad2a467d7c Mon Sep 17 00:00:00 2001
From: hinto-janai <hinto.janai@protonmail.com>
Date: Fri, 17 Jan 2025 15:34:36 -0500
Subject: [PATCH] Remove `/benches` (#354)

* rm -rf benches

* update architecture book

* lint fix
---
 Cargo.lock                                    | 319 +-----------------
 Cargo.toml                                    |  11 -
 benches/README.md                             |   5 -
 benches/benchmark/bin/Cargo.toml              |  43 ---
 benches/benchmark/bin/README.md               |  27 --
 benches/benchmark/bin/src/log.rs              |  29 --
 benches/benchmark/bin/src/main.rs             |  49 ---
 benches/benchmark/bin/src/print.rs            |  38 ---
 benches/benchmark/bin/src/run.rs              |  36 --
 benches/benchmark/bin/src/timings.rs          |   5 -
 benches/benchmark/example/Cargo.toml          |  17 -
 benches/benchmark/example/README.md           |   3 -
 benches/benchmark/example/src/lib.rs          |  42 ---
 benches/benchmark/lib/Cargo.toml              |  18 -
 benches/benchmark/lib/README.md               |  15 -
 benches/benchmark/lib/src/benchmark.rs        |  45 ---
 benches/benchmark/lib/src/lib.rs              |   5 -
 benches/criterion/cuprate-json-rpc/Cargo.toml |  23 --
 .../cuprate-json-rpc/benches/main.rs          |   8 -
 .../cuprate-json-rpc/benches/response.rs      | 110 ------
 benches/criterion/cuprate-json-rpc/src/lib.rs |   2 -
 benches/criterion/example/Cargo.toml          |  21 --
 benches/criterion/example/README.md           |  14 -
 benches/criterion/example/benches/example.rs  |  48 ---
 benches/criterion/example/benches/main.rs     |  10 -
 benches/criterion/example/src/lib.rs          |  13 -
 books/architecture/src/appendix/crates.md     |  10 +-
 .../src/benchmarking/criterion/creating.md    |   8 +-
 .../src/benchmarking/criterion/intro.md       |   4 +-
 .../src/benchmarking/cuprate/creating.md      |  14 +-
 .../src/benchmarking/cuprate/intro.md         |   2 +-
 books/architecture/src/benchmarking/intro.md  |  18 +-
 constants/src/build.rs                        |   2 +-
 33 files changed, 25 insertions(+), 989 deletions(-)
 delete mode 100644 benches/README.md
 delete mode 100644 benches/benchmark/bin/Cargo.toml
 delete mode 100644 benches/benchmark/bin/README.md
 delete mode 100644 benches/benchmark/bin/src/log.rs
 delete mode 100644 benches/benchmark/bin/src/main.rs
 delete mode 100644 benches/benchmark/bin/src/print.rs
 delete mode 100644 benches/benchmark/bin/src/run.rs
 delete mode 100644 benches/benchmark/bin/src/timings.rs
 delete mode 100644 benches/benchmark/example/Cargo.toml
 delete mode 100644 benches/benchmark/example/README.md
 delete mode 100644 benches/benchmark/example/src/lib.rs
 delete mode 100644 benches/benchmark/lib/Cargo.toml
 delete mode 100644 benches/benchmark/lib/README.md
 delete mode 100644 benches/benchmark/lib/src/benchmark.rs
 delete mode 100644 benches/benchmark/lib/src/lib.rs
 delete mode 100644 benches/criterion/cuprate-json-rpc/Cargo.toml
 delete mode 100644 benches/criterion/cuprate-json-rpc/benches/main.rs
 delete mode 100644 benches/criterion/cuprate-json-rpc/benches/response.rs
 delete mode 100644 benches/criterion/cuprate-json-rpc/src/lib.rs
 delete mode 100644 benches/criterion/example/Cargo.toml
 delete mode 100644 benches/criterion/example/README.md
 delete mode 100644 benches/criterion/example/benches/example.rs
 delete mode 100644 benches/criterion/example/benches/main.rs
 delete mode 100644 benches/criterion/example/src/lib.rs

diff --git a/Cargo.lock b/Cargo.lock
index 6a13ba4c..d01746e3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -29,15 +29,6 @@ dependencies = [
  "zerocopy",
 ]
 
-[[package]]
-name = "aho-corasick"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
-dependencies = [
- "memchr",
-]
-
 [[package]]
 name = "android-tzdata"
 version = "0.1.1"
@@ -53,12 +44,6 @@ dependencies = [
  "libc",
 ]
 
-[[package]]
-name = "anes"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
-
 [[package]]
 name = "anstyle"
 version = "1.0.10"
@@ -361,12 +346,6 @@ dependencies = [
  "serde",
 ]
 
-[[package]]
-name = "cast"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
-
 [[package]]
 name = "cc"
 version = "1.2.4"
@@ -400,33 +379,6 @@ dependencies = [
  "windows-targets 0.52.6",
 ]
 
-[[package]]
-name = "ciborium"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
-dependencies = [
- "ciborium-io",
- "ciborium-ll",
- "serde",
-]
-
-[[package]]
-name = "ciborium-io"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
-
-[[package]]
-name = "ciborium-ll"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
-dependencies = [
- "ciborium-io",
- "half",
-]
-
 [[package]]
 name = "clap"
 version = "4.5.23"
@@ -527,42 +479,6 @@ dependencies = [
  "cfg-if",
 ]
 
-[[package]]
-name = "criterion"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
-dependencies = [
- "anes",
- "cast",
- "ciborium",
- "clap",
- "criterion-plot",
- "is-terminal",
- "itertools",
- "num-traits",
- "once_cell",
- "oorandom",
- "plotters",
- "rayon",
- "regex",
- "serde",
- "serde_derive",
- "serde_json",
- "tinytemplate",
- "walkdir",
-]
-
-[[package]]
-name = "criterion-plot"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
-dependencies = [
- "cast",
- "itertools",
-]
-
 [[package]]
 name = "crossbeam"
 version = "0.8.4"
@@ -619,12 +535,6 @@ version = "0.8.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
 
-[[package]]
-name = "crunchy"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
-
 [[package]]
 name = "crypto-bigint"
 version = "0.5.5"
@@ -674,30 +584,6 @@ dependencies = [
  "tokio",
 ]
 
-[[package]]
-name = "cuprate-benchmark"
-version = "0.0.0"
-dependencies = [
- "cfg-if",
- "cuprate-benchmark-example",
- "cuprate-benchmark-lib",
- "serde",
- "serde_json",
- "tracing",
- "tracing-subscriber",
-]
-
-[[package]]
-name = "cuprate-benchmark-example"
-version = "0.0.0"
-dependencies = [
- "cuprate-benchmark-lib",
-]
-
-[[package]]
-name = "cuprate-benchmark-lib"
-version = "0.0.0"
-
 [[package]]
 name = "cuprate-blockchain"
 version = "0.0.0"
@@ -801,25 +687,6 @@ dependencies = [
 name = "cuprate-constants"
 version = "0.1.0"
 
-[[package]]
-name = "cuprate-criterion-example"
-version = "0.0.0"
-dependencies = [
- "criterion",
- "function_name",
- "serde_json",
-]
-
-[[package]]
-name = "cuprate-criterion-json-rpc"
-version = "0.0.0"
-dependencies = [
- "criterion",
- "cuprate-json-rpc",
- "function_name",
- "serde_json",
-]
-
 [[package]]
 name = "cuprate-cryptonight"
 version = "0.1.0"
@@ -1460,21 +1327,6 @@ dependencies = [
  "percent-encoding",
 ]
 
-[[package]]
-name = "function_name"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1ab577a896d09940b5fe12ec5ae71f9d8211fff62c919c03a3750a9901e98a7"
-dependencies = [
- "function_name-proc-macro",
-]
-
-[[package]]
-name = "function_name-proc-macro"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "673464e1e314dd67a0fd9544abc99e8eb28d0c7e3b69b033bcff9b2d00b87333"
-
 [[package]]
 name = "funty"
 version = "2.0.0"
@@ -1624,16 +1476,6 @@ dependencies = [
  "tracing",
 ]
 
-[[package]]
-name = "half"
-version = "2.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888"
-dependencies = [
- "cfg-if",
- "crunchy",
-]
-
 [[package]]
 name = "hashbrown"
 version = "0.14.5"
@@ -1693,12 +1535,6 @@ dependencies = [
  "serde_json",
 ]
 
-[[package]]
-name = "hermit-abi"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc"
-
 [[package]]
 name = "hex"
 version = "0.4.3"
@@ -1990,26 +1826,6 @@ dependencies = [
  "hashbrown 0.15.2",
 ]
 
-[[package]]
-name = "is-terminal"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b"
-dependencies = [
- "hermit-abi",
- "libc",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "itertools"
-version = "0.10.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
-dependencies = [
- "either",
-]
-
 [[package]]
 name = "itoa"
 version = "1.0.14"
@@ -2113,15 +1929,6 @@ version = "0.4.22"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
 
-[[package]]
-name = "matchers"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
-dependencies = [
- "regex-automata 0.1.10",
-]
-
 [[package]]
 name = "matchit"
 version = "0.7.3"
@@ -2380,12 +2187,6 @@ version = "1.20.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
 
-[[package]]
-name = "oorandom"
-version = "11.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9"
-
 [[package]]
 name = "openssl-probe"
 version = "0.1.5"
@@ -2523,34 +2324,6 @@ version = "0.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
 
-[[package]]
-name = "plotters"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747"
-dependencies = [
- "num-traits",
- "plotters-backend",
- "plotters-svg",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "plotters-backend"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a"
-
-[[package]]
-name = "plotters-svg"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670"
-dependencies = [
- "plotters-backend",
-]
-
 [[package]]
 name = "powerfmt"
 version = "0.2.0"
@@ -2608,7 +2381,7 @@ dependencies = [
  "rand",
  "rand_chacha",
  "rand_xorshift",
- "regex-syntax 0.8.5",
+ "regex-syntax",
  "rusty-fork",
  "tempfile",
  "unarray",
@@ -2774,44 +2547,6 @@ dependencies = [
  "syn",
 ]
 
-[[package]]
-name = "regex"
-version = "1.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata 0.4.9",
- "regex-syntax 0.8.5",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-dependencies = [
- "regex-syntax 0.6.29",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax 0.8.5",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.6.29"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
-
 [[package]]
 name = "regex-syntax"
 version = "0.8.5"
@@ -2929,15 +2664,6 @@ version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
 
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-dependencies = [
- "winapi-util",
-]
-
 [[package]]
 name = "schannel"
 version = "0.1.27"
@@ -3363,16 +3089,6 @@ dependencies = [
  "zerovec",
 ]
 
-[[package]]
-name = "tinytemplate"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
-dependencies = [
- "serde",
- "serde_json",
-]
-
 [[package]]
 name = "tokio"
 version = "1.42.0"
@@ -3604,14 +3320,10 @@ version = "0.3.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
 dependencies = [
- "matchers",
  "nu-ansi-term",
- "once_cell",
- "regex",
  "sharded-slab",
  "smallvec",
  "thread_local",
- "tracing",
  "tracing-core",
  "tracing-log",
 ]
@@ -3714,16 +3426,6 @@ dependencies = [
  "libc",
 ]
 
-[[package]]
-name = "walkdir"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
-dependencies = [
- "same-file",
- "winapi-util",
-]
-
 [[package]]
 name = "want"
 version = "0.3.1"
@@ -3793,16 +3495,6 @@ version = "0.2.99"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6"
 
-[[package]]
-name = "web-sys"
-version = "0.3.76"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
 [[package]]
 name = "webpki-roots"
 version = "0.26.7"
@@ -3828,15 +3520,6 @@ version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
-[[package]]
-name = "winapi-util"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
-dependencies = [
- "windows-sys 0.59.0",
-]
-
 [[package]]
 name = "winapi-x86_64-pc-windows-gnu"
 version = "0.4.0"
diff --git a/Cargo.toml b/Cargo.toml
index d0ab5714..8460f504 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,13 +4,6 @@ members = [
 	# Binaries
 	"binaries/cuprated",
 
-	# Benchmarks
-	"benches/benchmark/bin",
-	"benches/benchmark/lib",
-	"benches/benchmark/example",
-	"benches/criterion/example",
-	"benches/criterion/cuprate-json-rpc",
-
 	# Consensus
 	"consensus",
 	"consensus/context",
@@ -76,8 +69,6 @@ opt-level = 3
 
 [workspace.dependencies]
 # Cuprate members
-cuprate-benchmark-lib     = { path = "benches/benchmark/lib",     default-features = false }
-cuprate-benchmark-example = { path = "benches/benchmark/example", default-features = false }
 cuprate-fast-sync         = { path = "consensus/fast-sync",       default-features = false }
 cuprate-consensus-rules   = { path = "consensus/rules",           default-features = false }
 cuprate-constants         = { path = "constants",                 default-features = false }
@@ -152,8 +143,6 @@ tracing-subscriber    = { version = "0.3", default-features = false }
 tracing               = { version = "0.1", default-features = false }
 
 ## workspace.dev-dependencies
-criterion                 = { version = "0.5" }
-function_name             = { version = "0.3" }
 monero-rpc                = { git = "https://github.com/Cuprate/serai.git", rev = "e6fdef6" }
 monero-simple-request-rpc = { git = "https://github.com/Cuprate/serai.git", rev = "e6fdef6" }
 tempfile                  = { version = "3" }
diff --git a/benches/README.md b/benches/README.md
deleted file mode 100644
index af6bb932..00000000
--- a/benches/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Benches
-This directory contains Cuprate's benchmarks and benchmarking utilities.
-
-See the [`Benchmarking` section in the Architecture book](https://architecture.cuprate.org/benchmarking/intro.html)
-to see how to create and run these benchmarks.
\ No newline at end of file
diff --git a/benches/benchmark/bin/Cargo.toml b/benches/benchmark/bin/Cargo.toml
deleted file mode 100644
index 36d0b2c7..00000000
--- a/benches/benchmark/bin/Cargo.toml
+++ /dev/null
@@ -1,43 +0,0 @@
-[package]
-name        = "cuprate-benchmark"
-version     = "0.0.0"
-edition     = "2021"
-description = "Cuprate's benchmarking binary"
-license     = "MIT"
-authors     = ["hinto-janai"]
-repository  = "https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/bin"
-keywords    = ["cuprate", "benchmarking", "binary"]
-
-[features]
-# All new benchmarks should be added here!
-all = ["example"]
-
-# Non-benchmark features.
-default = []
-json    = []
-trace   = []
-debug   = []
-warn    = []
-info    = []
-error   = []
-
-# Benchmark features.
-# New benchmarks should be added here!
-example = [
-	"dep:cuprate-benchmark-example"
-]
-
-[dependencies]
-cuprate-benchmark-lib     = { workspace = true }
-cuprate-benchmark-example = { workspace = true, optional = true }
-
-cfg-if             = { workspace = true }
-serde              = { workspace = true, features = ["derive"] }
-serde_json         = { workspace = true, features = ["std"] }
-tracing            = { workspace = true, features = ["std", "attributes"] }
-tracing-subscriber = { workspace = true, features = ["fmt", "std", "env-filter"] }
-
-[dev-dependencies]
-
-[lints]
-workspace = true
\ No newline at end of file
diff --git a/benches/benchmark/bin/README.md b/benches/benchmark/bin/README.md
deleted file mode 100644
index ad0700fc..00000000
--- a/benches/benchmark/bin/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-## `cuprate-benchmark`
-This crate links all benchmarks together into a single binary that can be run as: `cuprate-benchmark`.
-
-`cuprate-benchmark` will run all enabled benchmarks sequentially and print data at the end.
-
-## Benchmarks
-Benchmarks are opt-in and enabled via features.
-
-| Feature  | Enables which benchmark crate? |
-|----------|--------------------------------|
-| example  | cuprate-benchmark-example      |
-| database | cuprate-benchmark-database     |
-
-## Features
-These are features that aren't for enabling benchmarks, but rather for other things.
-
-Since `cuprate-benchmark` is built right before it is ran,
-these features almost act like command line arguments.
-
-| Features | Does what |
-|----------|-----------|
-| json     | Prints JSON timings instead of a markdown table
-| trace    | Use the `trace` log-level
-| debug    | Use the `debug` log-level
-| warn     | Use the `warn` log-level
-| info     | Use the `info` log-level (default)
-| error    | Use the `error` log-level
\ No newline at end of file
diff --git a/benches/benchmark/bin/src/log.rs b/benches/benchmark/bin/src/log.rs
deleted file mode 100644
index 455f1309..00000000
--- a/benches/benchmark/bin/src/log.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-use cfg_if::cfg_if;
-use tracing::{info, instrument, Level};
-use tracing_subscriber::FmtSubscriber;
-
-/// Initializes the `tracing` logger.
-#[instrument]
-pub(crate) fn init_logger() {
-    const LOG_LEVEL: Level = {
-        cfg_if! {
-            if #[cfg(feature = "trace")] {
-                Level::TRACE
-            } else if #[cfg(feature = "debug")] {
-                Level::DEBUG
-            } else if #[cfg(feature = "warn")] {
-                Level::WARN
-            } else if #[cfg(feature = "info")] {
-                Level::INFO
-            } else if #[cfg(feature = "error")] {
-                Level::ERROR
-            } else {
-                Level::INFO
-            }
-        }
-    };
-
-    FmtSubscriber::builder().with_max_level(LOG_LEVEL).init();
-
-    info!("Log level: {LOG_LEVEL}");
-}
diff --git a/benches/benchmark/bin/src/main.rs b/benches/benchmark/bin/src/main.rs
deleted file mode 100644
index 02c480a0..00000000
--- a/benches/benchmark/bin/src/main.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-#![doc = include_str!("../README.md")]
-#![allow(
-    unused_crate_dependencies,
-    reason = "this crate imports many potentially unused dependencies"
-)]
-
-mod log;
-mod print;
-mod run;
-mod timings;
-
-use cfg_if::cfg_if;
-
-/// What `main()` does:
-/// 1. Run all enabled benchmarks
-/// 2. Record benchmark timings
-/// 3. Print timing data
-///
-/// To add a new benchmark to be ran here:
-/// 1. Copy + paste a `cfg_if` block
-/// 2. Change it to your benchmark's feature flag
-/// 3. Change it to your benchmark's type
-#[allow(
-    clippy::allow_attributes,
-    unused_variables,
-    unused_mut,
-    unreachable_code,
-    reason = "clippy does not account for all cfg()s"
-)]
-fn main() {
-    log::init_logger();
-
-    let mut timings = timings::Timings::new();
-
-    cfg_if! {
-        if #[cfg(not(any(feature = "example")))] {
-            println!("No feature specified. Use `--features $BENCHMARK_FEATURE` when building.");
-            return;
-        }
-    }
-
-    cfg_if! {
-        if #[cfg(feature = "example")] {
-            run::run_benchmark::<cuprate_benchmark_example::Example>(&mut timings);
-        }
-    }
-
-    print::print_timings(&timings);
-}
diff --git a/benches/benchmark/bin/src/print.rs b/benches/benchmark/bin/src/print.rs
deleted file mode 100644
index 36a5f05a..00000000
--- a/benches/benchmark/bin/src/print.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-#![expect(dead_code, reason = "code hidden behind feature flags")]
-
-use cfg_if::cfg_if;
-
-use crate::timings::Timings;
-
-/// Print the final the final markdown table of benchmark timings.
-pub(crate) fn print_timings(timings: &Timings) {
-    println!("\nFinished all benchmarks, printing results:");
-
-    cfg_if! {
-        if #[cfg(feature = "json")] {
-            print_timings_json(timings);
-        } else {
-            print_timings_markdown(timings);
-        }
-    }
-}
-
-/// Default timing formatting.
-pub(crate) fn print_timings_markdown(timings: &Timings) {
-    let mut s = String::new();
-    s.push_str("| Benchmark                          | Time (seconds) |\n");
-    s.push_str("|------------------------------------|----------------|");
-
-    #[expect(clippy::iter_over_hash_type)]
-    for (k, v) in timings {
-        s += &format!("\n| {k:<34} | {v:<14} |");
-    }
-
-    println!("\n{s}");
-}
-
-/// Enabled via `json` feature.
-pub(crate) fn print_timings_json(timings: &Timings) {
-    let json = serde_json::to_string_pretty(timings).unwrap();
-    println!("\n{json}");
-}
diff --git a/benches/benchmark/bin/src/run.rs b/benches/benchmark/bin/src/run.rs
deleted file mode 100644
index 05a220f9..00000000
--- a/benches/benchmark/bin/src/run.rs
+++ /dev/null
@@ -1,36 +0,0 @@
-use tracing::{info, instrument, trace};
-
-use cuprate_benchmark_lib::Benchmark;
-
-use crate::timings::Timings;
-
-/// Run a [`Benchmark`] and record its timing.
-#[instrument(skip_all)]
-pub(crate) fn run_benchmark<B: Benchmark>(timings: &mut Timings) {
-    // Get the benchmark name.
-    let name = B::name();
-    trace!("Running benchmark: {name}");
-
-    // Setup the benchmark input.
-    let input = B::SETUP();
-
-    // Sleep before running the benchmark.
-    trace!("Pre-benchmark, sleeping for: {:?}", B::POST_SLEEP_DURATION);
-    std::thread::sleep(B::PRE_SLEEP_DURATION);
-
-    // Run/time the benchmark.
-    let now = std::time::Instant::now();
-    B::MAIN(input);
-    let time = now.elapsed().as_secs_f32();
-
-    // Print the benchmark timings.
-    info!("{name:>34} ... {time}");
-    assert!(
-        timings.insert(name, time).is_none(),
-        "There were 2 benchmarks with the same name - this collides the final output: {name}",
-    );
-
-    // Sleep for a cooldown period after the benchmark run.
-    trace!("Post-benchmark, sleeping for: {:?}", B::POST_SLEEP_DURATION);
-    std::thread::sleep(B::POST_SLEEP_DURATION);
-}
diff --git a/benches/benchmark/bin/src/timings.rs b/benches/benchmark/bin/src/timings.rs
deleted file mode 100644
index 34a07952..00000000
--- a/benches/benchmark/bin/src/timings.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-/// Benchmark timing data.
-///
-/// - Key = benchmark name
-/// - Value = benchmark time in seconds
-pub(crate) type Timings = std::collections::HashMap<&'static str, f32>;
diff --git a/benches/benchmark/example/Cargo.toml b/benches/benchmark/example/Cargo.toml
deleted file mode 100644
index 5728bcd4..00000000
--- a/benches/benchmark/example/Cargo.toml
+++ /dev/null
@@ -1,17 +0,0 @@
-[package]
-name        = "cuprate-benchmark-example"
-version     = "0.0.0"
-edition     = "2021"
-description = "Example showcasing Cuprate's benchmarking harness"
-license     = "MIT"
-authors     = ["hinto-janai"]
-repository  = "https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/example"
-keywords    = ["cuprate", "benchmarking", "example"]
-
-[dependencies]
-cuprate-benchmark-lib = { path = "../lib" }
-
-[dev-dependencies]
-
-[lints]
-workspace = true
\ No newline at end of file
diff --git a/benches/benchmark/example/README.md b/benches/benchmark/example/README.md
deleted file mode 100644
index be6b7167..00000000
--- a/benches/benchmark/example/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-## `cuprate-benchmark-example`
-This crate contains a short example benchmark that shows how to implement and use
-`cuprate-benchmark-lib` so that it can be ran by `cuprate-benchmark`.
\ No newline at end of file
diff --git a/benches/benchmark/example/src/lib.rs b/benches/benchmark/example/src/lib.rs
deleted file mode 100644
index cc704a7f..00000000
--- a/benches/benchmark/example/src/lib.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-#![doc = include_str!("../README.md")]
-
-use std::hint::black_box;
-
-use cuprate_benchmark_lib::Benchmark;
-
-/// Marker struct that implements [`Benchmark`]
-pub struct Example;
-
-/// The input to our benchmark function.
-pub type ExampleBenchmarkInput = u64;
-
-/// The setup function that creates the input.
-pub const fn example_benchmark_setup() -> ExampleBenchmarkInput {
-    1
-}
-
-/// The main benchmarking function.
-#[expect(clippy::unit_arg)]
-pub fn example_benchmark_main(input: ExampleBenchmarkInput) {
-    // In this case, we're simply benchmarking the
-    // performance of simple arithmetic on the input data.
-
-    fn math(input: ExampleBenchmarkInput, number: u64) {
-        let x = input;
-        let x = black_box(x * number);
-        let x = black_box(x / number);
-        let x = black_box(x + number);
-        let _ = black_box(x - number);
-    }
-
-    for number in 1..100_000_000 {
-        black_box(math(input, number));
-    }
-}
-
-// This implementation will be run by `cuprate-benchmark`.
-impl Benchmark for Example {
-    type Input = ExampleBenchmarkInput;
-    const SETUP: fn() -> Self::Input = example_benchmark_setup;
-    const MAIN: fn(Self::Input) = example_benchmark_main;
-}
diff --git a/benches/benchmark/lib/Cargo.toml b/benches/benchmark/lib/Cargo.toml
deleted file mode 100644
index b0771f09..00000000
--- a/benches/benchmark/lib/Cargo.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[package]
-name        = "cuprate-benchmark-lib"
-version     = "0.0.0"
-edition     = "2021"
-description = "Cuprate's benchmarking library"
-license     = "MIT"
-authors     = ["hinto-janai"]
-repository  = "https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/lib"
-keywords    = ["cuprate", "benchmarking", "library"]
-
-[features]
-
-[dependencies]
-
-[dev-dependencies]
-
-[lints]
-workspace = true
\ No newline at end of file
diff --git a/benches/benchmark/lib/README.md b/benches/benchmark/lib/README.md
deleted file mode 100644
index 9ea79ae4..00000000
--- a/benches/benchmark/lib/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-## `cuprate-benchmark-lib`
-This crate is the glue between
-[`cuprate-benchmark`](https://github.com/Cuprate/cuprate/tree/benches/benches/benchmark/bin)
-and all the benchmark crates.
-
-It defines the [`crate::Benchmark`] trait, which is the behavior of all benchmarks.
-
-See the [`cuprate-benchmark-example`](https://github.com/Cuprate/cuprate/tree/benches/benches/benchmark/example)
-crate to see an example implementation of this trait.
-
-After implementing this trait, a few steps must
-be done such that the `cuprate-benchmark` binary
-can actually run your benchmark crate; see the
-[`Benchmarking` section in the Architecture book](https://architecture.cuprate.org/benchmarking/intro.html)
-to see how to do this.
\ No newline at end of file
diff --git a/benches/benchmark/lib/src/benchmark.rs b/benches/benchmark/lib/src/benchmark.rs
deleted file mode 100644
index 4dca5504..00000000
--- a/benches/benchmark/lib/src/benchmark.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-//! Benchmarking trait.
-
-use std::time::Duration;
-
-/// A benchmarking function and its inputs.
-pub trait Benchmark {
-    /// The benchmark's name.
-    ///
-    /// This is automatically implemented
-    /// as the name of the [`Self`] type.
-    //
-    // FIXME: use `const` instead of `fn` when stable
-    // <https://github.com/rust-lang/rust/issues/63084>
-    fn name() -> &'static str {
-        std::any::type_name::<Self>()
-    }
-
-    /// Input to the main benchmarking function.
-    ///
-    /// This is passed to [`Self::MAIN`].
-    type Input;
-
-    /// Setup function to generate the input.
-    ///
-    /// This function is not timed.
-    const SETUP: fn() -> Self::Input;
-
-    /// The main function to benchmark.
-    ///
-    /// The start of the timer begins right before
-    /// this function is called and ends after the
-    /// function returns.
-    const MAIN: fn(Self::Input);
-
-    /// `cuprate-benchmark` will sleep for this [`Duration`] after
-    /// creating the [`Self::Input`], but before starting [`Self::MAIN`].
-    ///
-    /// 1 second by default.
-    const PRE_SLEEP_DURATION: Duration = Duration::from_secs(1);
-
-    /// `cuprate-benchmark` will sleep for this [`Duration`] after [`Self::MAIN`].
-    ///
-    /// 1 second by default.
-    const POST_SLEEP_DURATION: Duration = Duration::from_secs(1);
-}
diff --git a/benches/benchmark/lib/src/lib.rs b/benches/benchmark/lib/src/lib.rs
deleted file mode 100644
index a6bec820..00000000
--- a/benches/benchmark/lib/src/lib.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-#![doc = include_str!("../README.md")]
-
-mod benchmark;
-
-pub use benchmark::Benchmark;
diff --git a/benches/criterion/cuprate-json-rpc/Cargo.toml b/benches/criterion/cuprate-json-rpc/Cargo.toml
deleted file mode 100644
index a0cae64e..00000000
--- a/benches/criterion/cuprate-json-rpc/Cargo.toml
+++ /dev/null
@@ -1,23 +0,0 @@
-[package]
-name        = "cuprate-criterion-json-rpc"
-version     = "0.0.0"
-edition     = "2021"
-description = "Criterion benchmarking for cuprate-json-rpc"
-license     = "MIT"
-authors     = ["hinto-janai"]
-repository  = "https://github.com/Cuprate/cuprate/tree/main/benches/criterion/cuprate-json-rpc"
-keywords    = ["cuprate", "json-rpc", "criterion", "benchmark"]
-
-[dependencies]
-cuprate-json-rpc = { workspace = true }
-
-criterion     = { workspace = true }
-function_name = { workspace = true }
-serde_json    = { workspace = true, features = ["default"] }
-
-[[bench]]
-name    = "main"
-harness = false
-
-[lints]
-workspace = true
\ No newline at end of file
diff --git a/benches/criterion/cuprate-json-rpc/benches/main.rs b/benches/criterion/cuprate-json-rpc/benches/main.rs
deleted file mode 100644
index a7249430..00000000
--- a/benches/criterion/cuprate-json-rpc/benches/main.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//! Benchmarks for `cuprate-json-rpc`.
-#![allow(unused_crate_dependencies)]
-
-mod response;
-
-criterion::criterion_main! {
-    response::serde,
-}
diff --git a/benches/criterion/cuprate-json-rpc/benches/response.rs b/benches/criterion/cuprate-json-rpc/benches/response.rs
deleted file mode 100644
index 890958ec..00000000
--- a/benches/criterion/cuprate-json-rpc/benches/response.rs
+++ /dev/null
@@ -1,110 +0,0 @@
-//! Benchmarks for [`Response`].
-#![allow(unused_attributes, unused_crate_dependencies)]
-
-use criterion::{black_box, criterion_group, criterion_main, Criterion};
-use function_name::named;
-use serde_json::{from_str, to_string_pretty};
-
-use cuprate_json_rpc::{Id, Response};
-
-// `serde` benchmarks on `Response`.
-//
-// These are benchmarked as `Response` has a custom serde implementation.
-criterion_group! {
-    name = serde;
-    config = Criterion::default();
-    targets =
-    response_from_str_u8,
-    response_from_str_u64,
-    response_from_str_string_5_len,
-    response_from_str_string_10_len,
-    response_from_str_string_100_len,
-    response_from_str_string_500_len,
-    response_to_string_pretty_u8,
-    response_to_string_pretty_u64,
-    response_to_string_pretty_string_5_len,
-    response_to_string_pretty_string_10_len,
-    response_to_string_pretty_string_100_len,
-    response_to_string_pretty_string_500_len,
-    response_from_str_bad_field_1,
-    response_from_str_bad_field_5,
-    response_from_str_bad_field_10,
-    response_from_str_bad_field_100,
-    response_from_str_missing_field,
-}
-criterion_main!(serde);
-
-/// Generate `from_str` deserialization benchmark functions for [`Response`].
-macro_rules! impl_from_str_benchmark {
-    (
-        $(
-            $fn_name:ident => $request_type:ty => $request_string:literal,
-        )*
-    ) => {
-        $(
-            #[named]
-            fn $fn_name(c: &mut Criterion) {
-                let request_string = $request_string;
-
-                c.bench_function(function_name!(), |b| {
-                    b.iter(|| {
-                        let _r = from_str::<Response<$request_type>>(
-                            black_box(request_string)
-                        );
-                    });
-                });
-            }
-        )*
-    };
-}
-
-impl_from_str_benchmark! {
-    response_from_str_u8 => u8 => r#"{"jsonrpc":"2.0","id":123,"result":0}"#,
-    response_from_str_u64 => u64 => r#"{"jsonrpc":"2.0","id":123,"result":0}"#,
-    response_from_str_string_5_len => String => r#"{"jsonrpc":"2.0","id":123,"result":"hello"}"#,
-    response_from_str_string_10_len => String => r#"{"jsonrpc":"2.0","id":123,"result":"hellohello"}"#,
-    response_from_str_string_100_len => String => r#"{"jsonrpc":"2.0","id":123,"result":"helloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworld"}"#,
-    response_from_str_string_500_len => String => r#"{"jsonrpc":"2.0","id":123,"result":"helloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworld"}"#,
-
-    // The custom serde currently looks at all fields.
-    // These are for testing the performance if the serde
-    // has to parse through a bunch of unrelated fields.
-    response_from_str_bad_field_1 => u8 => r#"{"bad_field":0,"jsonrpc":"2.0","id":123,"result":0}"#,
-    response_from_str_bad_field_5 => u8 => r#"{"bad_field_1":0,"bad_field_2":0,"bad_field_3":0,"bad_field_4":0,"bad_field_5":0,"jsonrpc":"2.0","id":123,"result":0}"#,
-    response_from_str_bad_field_10 => u8 => r#"{"bad_field_1":0,"bad_field_2":0,"bad_field_3":0,"bad_field_4":0,"bad_field_5":0,"bad_field_6":0,"bad_field_7":0,"bad_field_8":0,"bad_field_9":0,"bad_field_10":0,"jsonrpc":"2.0","id":123,"result":0}"#,
-    response_from_str_bad_field_100 => u8 => r#"{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"jsonrpc":"2.0","id":123,"result":0}"#,
-
-    // These are missing the `jsonrpc` field.
-    response_from_str_missing_field => u8 => r#"{"id":123,"result":0}"#,
-}
-
-/// Generate `to_string_pretty` serialization benchmark functions for [`Response`].
-macro_rules! impl_to_string_pretty_benchmark {
-    (
-        $(
-            $fn_name:ident => $request_constructor:expr_2021,
-        )*
-    ) => {
-        $(
-            #[named]
-            fn $fn_name(c: &mut Criterion) {
-                let request = $request_constructor;
-
-                c.bench_function(function_name!(), |b| {
-                    b.iter(|| {
-                        let _s = to_string_pretty(black_box(&request)).unwrap();
-                    });
-                });
-            }
-        )*
-    };
-}
-
-impl_to_string_pretty_benchmark! {
-    response_to_string_pretty_u8 => Response::<u8>::ok(Id::Null, 0),
-    response_to_string_pretty_u64 => Response::<u64>::ok(Id::Null, 0),
-    response_to_string_pretty_string_5_len => Response::ok(Id::Null, String::from("hello")),
-    response_to_string_pretty_string_10_len => Response::ok(Id::Null, String::from("hellohello")),
-    response_to_string_pretty_string_100_len => Response::ok(Id::Null, String::from("helloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworld")),
-    response_to_string_pretty_string_500_len => Response::ok(Id::Null, String::from("helloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworldhelloworld")),
-}
diff --git a/benches/criterion/cuprate-json-rpc/src/lib.rs b/benches/criterion/cuprate-json-rpc/src/lib.rs
deleted file mode 100644
index b29887aa..00000000
--- a/benches/criterion/cuprate-json-rpc/src/lib.rs
+++ /dev/null
@@ -1,2 +0,0 @@
-//! Benchmark lib for `cuprate-json-rpc`.
-#![allow(unused_crate_dependencies, reason = "used in benchmarks")]
diff --git a/benches/criterion/example/Cargo.toml b/benches/criterion/example/Cargo.toml
deleted file mode 100644
index 43e60119..00000000
--- a/benches/criterion/example/Cargo.toml
+++ /dev/null
@@ -1,21 +0,0 @@
-[package]
-name        = "cuprate-criterion-example"
-version     = "0.0.0"
-edition     = "2021"
-description = "Criterion benchmarking example for Cuprate"
-license     = "MIT"
-authors     = ["hinto-janai"]
-repository  = "https://github.com/Cuprate/cuprate/tree/main/benches/criterion/example"
-keywords    = ["cuprate", "criterion", "benchmark", "example"]
-
-[dependencies]
-criterion     = { workspace = true }
-function_name = { workspace = true }
-serde_json    = { workspace = true, features = ["default"] }
-
-[[bench]]
-name    = "main"
-harness = false
-
-[lints]
-workspace = true
\ No newline at end of file
diff --git a/benches/criterion/example/README.md b/benches/criterion/example/README.md
deleted file mode 100644
index cf1983ff..00000000
--- a/benches/criterion/example/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-## `cuprate-criterion-example`
-An example of using Criterion for benchmarking Cuprate crates.
-
-Consider copy+pasting this crate to use as a base when creating new Criterion benchmark crates.
-
-## `src/`
-Benchmark crates have a `benches/` ran by `cargo bench`, but they are also crates themselves,
-as in, they have a `src` folder that `benches/` can pull code from.
-
-The `src` directories in these benchmarking crates are usually filled with
-helper functions, types, etc, that are used repeatedly in the benchmarks.
-
-## `benches/`
-These are the actual benchmarks ran by `cargo bench`.
diff --git a/benches/criterion/example/benches/example.rs b/benches/criterion/example/benches/example.rs
deleted file mode 100644
index 7ea8e9a1..00000000
--- a/benches/criterion/example/benches/example.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-//! Benchmarks.
-#![allow(unused_attributes, unused_crate_dependencies)]
-
-use criterion::{black_box, criterion_group, criterion_main, BenchmarkId, Criterion, Throughput};
-use function_name::named;
-
-use cuprate_criterion_example::SomeHardToCreateObject;
-
-// This is how you register criterion benchmarks.
-criterion_group! {
-    name = benches;
-    config = Criterion::default();
-    targets = benchmark_1, benchmark_range,
-}
-criterion_main!(benches);
-
-/// Benchmark a single input.
-///
-/// <https://bheisler.github.io/criterion.rs/book/user_guide/benchmarking_with_inputs.html#benchmarking-with-one-input>
-#[named]
-fn benchmark_1(c: &mut Criterion) {
-    // It is recommended to use `function_name!()` as a benchmark
-    // identifier instead of manually re-typing the function name.
-    c.bench_function(function_name!(), |b| {
-        b.iter(|| {
-            black_box(SomeHardToCreateObject::from(1));
-        });
-    });
-}
-
-/// Benchmark a range of inputs.
-///
-/// <https://bheisler.github.io/criterion.rs/book/user_guide/benchmarking_with_inputs.html#benchmarking-with-a-range-of-values>
-#[named]
-fn benchmark_range(c: &mut Criterion) {
-    let mut group = c.benchmark_group(function_name!());
-
-    for i in 0..4 {
-        group.throughput(Throughput::Elements(i));
-        group.bench_with_input(BenchmarkId::from_parameter(i), &i, |b, &i| {
-            b.iter(|| {
-                black_box(SomeHardToCreateObject::from(i));
-            });
-        });
-    }
-
-    group.finish();
-}
diff --git a/benches/criterion/example/benches/main.rs b/benches/criterion/example/benches/main.rs
deleted file mode 100644
index d4f0bf80..00000000
--- a/benches/criterion/example/benches/main.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-//! Benchmarks examples.
-#![allow(unused_crate_dependencies)]
-
-// All modules within `benches/` are `mod`ed here.
-mod example;
-
-// And all the Criterion benchmarks are registered like so:
-criterion::criterion_main! {
-    example::benches,
-}
diff --git a/benches/criterion/example/src/lib.rs b/benches/criterion/example/src/lib.rs
deleted file mode 100644
index 0f732a47..00000000
--- a/benches/criterion/example/src/lib.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#![doc = include_str!("../README.md")] // See the README for crate documentation.
-#![allow(unused_crate_dependencies, reason = "used in benchmarks")]
-
-/// Shared type that all benchmarks can use.
-#[expect(dead_code)]
-pub struct SomeHardToCreateObject(u64);
-
-impl From<u64> for SomeHardToCreateObject {
-    /// Shared function that all benchmarks can use.
-    fn from(value: u64) -> Self {
-        Self(value)
-    }
-}
diff --git a/books/architecture/src/appendix/crates.md b/books/architecture/src/appendix/crates.md
index 5124180f..bc48497b 100644
--- a/books/architecture/src/appendix/crates.md
+++ b/books/architecture/src/appendix/crates.md
@@ -67,12 +67,4 @@ cargo doc --open --package cuprate-blockchain
 | [`cuprate-pruning`](https://doc.cuprate.org/cuprate_pruning) | [`pruning/`](https://github.com/Cuprate/cuprate/tree/main/pruning) | Monero pruning logic/types
 | [`cuprate-helper`](https://doc.cuprate.org/cuprate_helper) | [`helper/`](https://github.com/Cuprate/cuprate/tree/main/helper) | Kitchen-sink helper crate for Cuprate
 | [`cuprate-test-utils`](https://doc.cuprate.org/cuprate_test_utils) | [`test-utils/`](https://github.com/Cuprate/cuprate/tree/main/test-utils) | Testing utilities for Cuprate
-| [`cuprate-types`](https://doc.cuprate.org/cuprate_types) | [`types/`](https://github.com/Cuprate/cuprate/tree/main/types) | Shared types across Cuprate
-
-## Benchmarks
-| Crate | In-tree path | Purpose |
-|-------|--------------|---------|
-| [`cuprate-benchmark`](https://doc.cuprate.org/cuprate_benchmark) | [`benches/benchmark/bin/`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/bin) | Cuprate benchmarking binary
-| [`cuprate-benchmark-lib`](https://doc.cuprate.org/cuprate_benchmark_lib) | [`benches/benchmark/lib/`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/lib) | Cuprate benchmarking library
-| `cuprate-benchmark-*` | [`benches/benchmark/cuprate-*`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/) | Benchmark for a Cuprate crate that uses `cuprate-benchmark`
-| `cuprate-criterion-*` | [`benches/criterion/cuprate-*`](https://github.com/Cuprate/cuprate/tree/main/benches/criterion) | Benchmark for a Cuprate crate that uses [Criterion](https://bheisler.github.io/criterion.rs/book)
\ No newline at end of file
+| [`cuprate-types`](https://doc.cuprate.org/cuprate_types) | [`types/`](https://github.com/Cuprate/cuprate/tree/main/types) | Shared types across Cuprate
\ No newline at end of file
diff --git a/books/architecture/src/benchmarking/criterion/creating.md b/books/architecture/src/benchmarking/criterion/creating.md
index 01009042..b9888559 100644
--- a/books/architecture/src/benchmarking/criterion/creating.md
+++ b/books/architecture/src/benchmarking/criterion/creating.md
@@ -3,19 +3,19 @@ Creating a new Criterion-based benchmarking crate for one of Cuprate's crates is
 although, it requires knowledge of how to use Criterion first:
 
 1. Read the `Getting Started` section of <https://bheisler.github.io/criterion.rs/book>
-2. Copy [`benches/criterion/example`](https://github.com/Cuprate/cuprate/tree/main/benches/criterion/example) as base
+2. Copy [`criterion/example`](https://github.com/Cuprate/benches/tree/main/criterion/example) as base
 3. Get started
 
 ## Naming
 New benchmark crates using Criterion should:
-- Be in [`benches/criterion/`](https://github.com/Cuprate/cuprate/tree/main/benches/criterion/)
+- Be in [`criterion/`](https://github.com/Cuprate/benches/tree/main/criterion/)
 - Be in the `cuprate-criterion-$CRATE_NAME` format
 
 For a real example, see:
-[`cuprate-criterion-json-rpc`](https://github.com/Cuprate/cuprate/tree/main/benches/criterion/cuprate-json-rpc).
+[`cuprate-criterion-json-rpc`](https://github.com/Cuprate/benches/tree/main/criterion/cuprate-json-rpc).
 
 ## Workspace
 Finally, make sure to add the benchmark crate to the workspace
-[`Cargo.toml`](https://github.com/Cuprate/cuprate/blob/main/Cargo.toml) file.
+[`Cargo.toml`](https://github.com/Cuprate/benches/blob/main/Cargo.toml) file.
 
 Your benchmark is now ready to be ran.
\ No newline at end of file
diff --git a/books/architecture/src/benchmarking/criterion/intro.md b/books/architecture/src/benchmarking/criterion/intro.md
index b7a79b21..fdf834ac 100644
--- a/books/architecture/src/benchmarking/criterion/intro.md
+++ b/books/architecture/src/benchmarking/criterion/intro.md
@@ -1,4 +1,4 @@
 # Criterion
-Each sub-directory in [`benches/criterion/`](https://github.com/Cuprate/cuprate/tree/main/benches/criterion) is a crate that uses [Criterion](https://bheisler.github.io/criterion.rs/book) for timing single functions and/or groups of functions.
+Each sub-directory in [`criterion/`](https://github.com/Cuprate/benches/tree/main/criterion) is a crate that uses [Criterion](https://bheisler.github.io/criterion.rs/book) for timing single functions and/or groups of functions.
 
-They are generally be small in scope.
\ No newline at end of file
+They are generally small in scope.
\ No newline at end of file
diff --git a/books/architecture/src/benchmarking/cuprate/creating.md b/books/architecture/src/benchmarking/cuprate/creating.md
index 76eab789..b15cb4b4 100644
--- a/books/architecture/src/benchmarking/cuprate/creating.md
+++ b/books/architecture/src/benchmarking/cuprate/creating.md
@@ -3,23 +3,23 @@ New benchmarks are plugged into `cuprate-benchmark` by:
 1. Implementing `cuprate_benchmark_lib::Benchmark`
 1. Registering the benchmark in the `cuprate_benchmark` binary
 
-See [`benches/benchmark/example`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/example)
+See [`benchmark/example`](https://github.com/Cuprate/benches/tree/main/benchmark/example)
 for an example.
 
 ## Creating the benchmark crate
 Before plugging into `cuprate-benchmark`, your actual benchmark crate must be created:
 
-1. Create a new crate inside `benches/benchmark` (consider copying `benches/benchmark/example` as a base)
+1. Create a new crate inside `benchmark` (consider copying `benchmark/example` as a base)
 1. Pull in `cuprate_benchmark_lib` as a dependency
 1. Create a benchmark
 1. Implement `cuprate_benchmark_lib::Benchmark`
 
 New benchmark crates using `cuprate-database` should:
-- Be in [`benches/benchmark/`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/)
+- Be in [`benchmark/`](https://github.com/Cuprate/benches/tree/main/benchmark/)
 - Be in the `cuprate-benchmark-$CRATE_NAME` format
 
 For a real example, see:
-[`cuprate-benchmark-database`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/cuprate-database).
+[`cuprate-benchmark-database`](https://github.com/Cuprate/benches/tree/main/benchmark/cuprate-database).
 
 ## `cuprate_benchmark_lib::Benchmark`
 This is the trait that standardizes all benchmarks ran under `cuprate-benchmark`.
@@ -32,10 +32,10 @@ See `cuprate-benchmark-lib` crate documentation for a user-guide: <https://doc.c
 After your benchmark's behavior is defined, it must be registered
 in the binary that is actually ran: `cuprate-benchmark`.
 
-If your benchmark is new, add a new crate feature to [`cuprate-benchmark`'s Cargo.toml file](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/bin/Cargo.toml) with an optional dependency to your benchmarking crate.
+If your benchmark is new, add a new crate feature to [`cuprate-benchmark`'s Cargo.toml file](https://github.com/Cuprate/benches/tree/main/benchmark/bin/Cargo.toml) with an optional dependency to your benchmarking crate.
 
 Please remember to edit the feature table in the
-[`README.md`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/bin/README.md) as well!
+[`README.md`](https://github.com/Cuprate/benches/tree/main/benchmark/bin/README.md) as well!
 
 ## Adding to `cuprate-benchmark`'s `main()`
 After adding your crate's feature, add a conditional line that run the benchmark
@@ -52,6 +52,6 @@ cfg_if! {
 
 ## Workspace
 Finally, make sure to add the benchmark crate to the workspace
-[`Cargo.toml`](https://github.com/Cuprate/cuprate/blob/main/Cargo.toml) file.
+[`Cargo.toml`](https://github.com/Cuprate/benches/blob/main/Cargo.toml) file.
 
 Your benchmark is now ready to be ran.
\ No newline at end of file
diff --git a/books/architecture/src/benchmarking/cuprate/intro.md b/books/architecture/src/benchmarking/cuprate/intro.md
index 25efb460..41b874a5 100644
--- a/books/architecture/src/benchmarking/cuprate/intro.md
+++ b/books/architecture/src/benchmarking/cuprate/intro.md
@@ -9,7 +9,7 @@ The abstract purpose of `cuprate-benchmark` is very simple:
 1. Run benchmark
 1. Output data
 
-`cuprate-benchmark` runs the benchmarks found in [`benches/benchmark/cuprate-*`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark).
+`cuprate-benchmark` runs the benchmarks found in [`benchmark/cuprate-*`](https://github.com/Cuprate/benches/tree/main/benchmark).
 
 `cuprate-benchmark-lib` defines the `Benchmark` trait that all
 benchmark crates implement to "plug-in" to the benchmarking harness.
diff --git a/books/architecture/src/benchmarking/intro.md b/books/architecture/src/benchmarking/intro.md
index e6ab6b12..c5f3b919 100644
--- a/books/architecture/src/benchmarking/intro.md
+++ b/books/architecture/src/benchmarking/intro.md
@@ -1,5 +1,5 @@
 # Benchmarking
-Cuprate has 2 types of benchmarks:
+Cuprate's benchmarks live in the [`Cuprate/benches`](https://github.com/Cuprate/benches) repository; there are 2 types of benchmarks:
 - [Criterion](https://bheisler.github.io/criterion.rs/book/user_guide/advanced_configuration.html) benchmarks
 - `cuprate-benchmark` benchmarks
 
@@ -8,15 +8,13 @@ Criterion is used for micro benchmarks; they time single functions, groups of fu
 `cuprate-benchmark` and [`cuprate-benchmark-lib`](https://doc.cuprate.org/cuprate_benchmark_lib) are custom in-house crates Cuprate uses for macro benchmarks; these test sub-systems, sections of a sub-system, or otherwise larger or more complicated code that isn't well-suited for micro benchmarks.
 
 ## File layout and purpose
-All benchmarking related files are in the [`benches/`](https://github.com/Cuprate/cuprate/tree/main/benches) folder.
-
-This directory is organized like such:
+`Cuprate/benches` is organized like such:
 
 | Directory                     | Purpose |
 |-------------------------------|---------|
-| [`benches/criterion/`](https://github.com/Cuprate/cuprate/tree/main/benches/criterion) | Criterion (micro) benchmarks
-| `benches/criterion/cuprate-*` | Criterion benchmarks for the crate with the same name
-| [`benches/benchmark/`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark) | Cuprate's custom benchmarking files
-| [`benches/benchmark/bin`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/bin) | The `cuprate-benchmark` crate; the actual binary run that links all benchmarks
-| [`benches/benchmark/lib`](https://github.com/Cuprate/cuprate/tree/main/benches/benchmark/lib) | The `cuprate-benchmark-lib` crate; the benchmarking framework all benchmarks plug into
-| `benches/benchmark/cuprate-*` | `cuprate-benchmark` benchmarks for the crate with the same name
+| [`criterion/`](https://github.com/Cuprate/benches/tree/main/criterion) | Criterion (micro) benchmarks
+| `criterion/cuprate-*` | Criterion benchmarks for the crate with the same name
+| [`benchmark/`](https://github.com/Cuprate/benches/tree/main/benchmark) | Cuprate's custom benchmarking files
+| [`benchmark/bin`](https://github.com/Cuprate/benches/tree/main/benchmark/bin) | The `cuprate-benchmark` crate; the actual binary run that links all benchmarks
+| [`benchmark/lib`](https://github.com/Cuprate/benches/tree/main/benchmark/lib) | The `cuprate-benchmark-lib` crate; the benchmarking framework all benchmarks plug into
+| `benchmark/cuprate-*` | `cuprate-benchmark` benchmarks for the crate with the same name
\ No newline at end of file
diff --git a/constants/src/build.rs b/constants/src/build.rs
index 12236add..1eb18d07 100644
--- a/constants/src/build.rs
+++ b/constants/src/build.rs
@@ -10,7 +10,7 @@
 /// ```rust
 /// # use cuprate_constants::build::*;
 /// assert!(COMMIT.is_ascii());
-/// assert_eq!(COMMIT.as_bytes().len(), 40);
+/// assert_eq!(COMMIT.len(), 40);
 /// assert_eq!(COMMIT.to_lowercase(), COMMIT);
 /// ```
 pub const COMMIT: &str = core::env!("COMMIT"); // Set in `constants/build.rs`.