Measure speed and size
renew’s numbers come from one machine, measured once on 2026-10-14: AMD Ryzen 9 9950X (16 cores), Linux 7.2, Rust 1.97.1, renew 0.2.1, whose code is the same as 1.0’s.
Check and update speed
Section titled “Check and update speed”cargo run --release --example speedIt serves a signed manifest and a 64 MiB binary from a local port, times
100 check calls and 7 installs of the 64 MiB binary, and times 7 runs of
curl -fsS -o app <url> && sha256sum app && chmod 755 app(curl 8.22, GNU coreutils 9.11) against the same server and file. It prints the medians:
check 0.47 msinstall 193 ms (332 MiB/s)shell 225 ms (285 MiB/s)
install hashes while it downloads, so the binary is read once; the usual
script downloads with curl, then reads the file back with sha256sum.
This is loopback HTTP, so it measures renew’s own cost, not a network: over
a real network the download dominates either way, and verifying costs no
extra pass. A check is two small requests and one signature check, bounded
by a 3 s timeout over a real network.

Two copies of a small app that prints its version, one alone and one that
calls check, install and restart, built for linux-x86_64 with
--release and this profile:
[profile.release]lto = truecodegen-units = 1strip = trueThey are 306,560 and 2,254,504 bytes. The difference, 1.86 MiB, is mostly HTTPS: ureq, rustls and its crypto. A cold release build of the second took 50 s on the same machine.
Lines and dependencies
Section titled “Lines and dependencies”- 727 lines of library code:
src/without its tests;unsafeonly to callaccessandrenamex_npon macOS. - 7 direct dependencies (and libc on macOS) and 44 in all:
cargo tree -e normalon Linux. HTTP is ureq with rustls, the signature check is minisign-verify, and the streaming sha256 is pito-fetch’s.