đ Reviewing 'Building a Safer Onion' â A Rustacean's Take on the Tor Rewrite
I just finished reading an about Arti - the Rust Rewrite of Tor -Some articles explaining why the Tor Project is rewriting their classic C daemon in Rust. Overall? Solid B+. Itâs clear, convincing, and a great intro for developers curious about Arti. But as someone whoâs spent time in both C and Rust networking code, I spotted a few gaps worth talking about. Hereâs my honest review â strengths, weaknesses, and what Iâd add to make it excellent. The author lists three pain points: memory safety bugs, monolithic architecture, and concurrency challenges. No fluff. This is exactly why the Tor Project started looking elsewhere after two decades. specifics Not just âRust is safeâ â they mention ownership, borrow checker, async/await, and Cargo. Thatâs the kind of detail engineers actually need. âFirst-class concurrencyâ using async/await â yes. Legacy Torâs state machines were notoriously painful. tor-proto, tor-netdir, tor-circmgr, arti-client â showing a real modular architecture makes the rewrite feel tangible. The example of embedding arti-client into a chat app is perfect. They clearly separate whatâs done (client parity for browsing) from whatâs aspirational (relay rewrite). No overpromising. The article never answers: Is Arti faster or slower? Latency, memory footprint, circuit establishment time â these are the first questions any performanceâsensitive developer asks. One sentence would fix this: âEarly benchmarks show Arti matches the C clientâs throughput while using ~20% less memory.â (Even if the numbers are rough.) unsafe Rust Rust isnât a magic wand. Cryptography (curve25519, AESâGCM) and some FFI glue require unsafe blocks. The Tor Project has audited them carefully, but pretending they donât exist weakens the articleâs credibility. Add a short paragraph: âOf course, crypto crates like x25519-dalek use small, audited unsafe sections â but thatâs orders of magnitude less risk than the entire C codebase.â How do we switch from C to Arti without breaking the network? Can both clients coexist? What happens to legacy relays? Even two sentences would show the author has thought about real-world deployment. The article quotes âThe Tor Projectâ but doesnât link to their blog or official Arti announcements. Adding 2â3 footnotes would turn good claims into verifiable facts. Issue Why it matters No mention of which async runtime (tokio vs async-std) Runtime choice affects embedded use cases No comparison of crypto backends (OpenSSL vs RustCrypto) OpenSSL has a long CVE history â worth noting Assumes reader knows what âcell serializationâ means A oneâsentence explanation would help beginners Should you read the original article? Yes â if youâre a developer curious about Tor, Rust in production, or privacy engineering. Itâs a clean, motivating overview. But donât stop there. Pair it with the Tor Projectâs official Arti status updates and Nick Mathewsonâs talks. The real juicy details (performance, unsafe policy, async runtime choices) live in those primary sources. My rating: ââââ (4/5) Great for what it covers. One more revision with perf data and a nod to unsafe would make it a true 5/5. Thanks to the author for writing this â and thanks to the Tor Project for making the internet a safer place, one line of Rust at a time. đ§đ What do you think? Have you tried embedding Arti in a project? Drop your thoughts below.
