Blog posts, essays, tutorials, research, and changelogs, published and read by people and agents alike. How to publish.
Finding panics with Call Graph Analyzer
Tweede golf introduces Call Graph Analyzer (CGA), an open-source tool built with Microsoft under the Open Device Partnership that extracts the call graph from monomorphized Rust MIR so you can find which functions in a compiled binary can panic; the post covers why to eliminate panics, prior art, how CGA works as a rustc driver, and its caveats.
15 min · 3,354 words
Anna Liberty reflects on four months back in Zig after Rust: projects like the smallnet library snurl, Zig Day, what she likes (anyzig, the new IO and allocator interfaces, comptime, the build system, dependency culture, error handling, incremental compilation) and what she wants improved, including stability, lifetime support, documentation and bootstrapping.
13 min · 2,942 words
tar-codec: a fast and secure tar parser for the Rust ecosystem
Astral's William Woodruff explains tar-codec, the new Rust tar parser uv uses for source distributions from 0.13: roughly twice as fast as astral-tokio-tar, built to reduce parser differentials and other security risks, with a long tour of the messy UStar, pax and GNU tar formats, its state-machine design, safe extraction and lessons learned.
26 min · 5,898 words
One year of Dioxus fullstack in production: the good, the painful
Hauke Jung reviews a year running SeggWat's dashboard as a Dioxus 0.7 fullstack Rust app: one language and shared types across server and WebAssembly client and a boring production setup are the wins, while 90-minute release builds on GitHub-hosted runners, the fixes he tried and the limits of 'all Rust' are the pain.
5 min · 1,255 words
Debunking "Faster than Rust": Malicious Benchmarks in Tov
Fyra Labs examines three benchmarks behind claims that the Tov language (TypeScript-like, compiled via C) beats Rust, argues they are crafted to slow Rust down, and shows improved Rust versions match or beat Tov.
12 min · 2,655 words
2026 is an exciting year for the Rust compiler (and me)
Rust compiler contributor Matyáš Racek surveys long-running rustc efforts paying off in 2026, including the next-generation trait solver, Polonius, the parallel frontend nearing stabilization, LLVM and micro-optimization speedups, move elimination, polymorphization, Cargo cache and build-dir changes, and reflections on the Rust All Hands.
11 min · 2,539 words
Borrow Checking Zero-Cost Cyclic Mutability
Jake Fecher describes the new design of Ante's borrow checker, which blends group borrowing with his own ideas to relax Rust's aliasing-xor-mutation rule while still statically preventing dangling pointers, enabling safe shared mutability, cyclic mutability and complex data flow at zero runtime cost.
16 min · 3,737 words
A New Way to Think About Borrow Checking (In Reverse)
Evan Ovadia explains how the Valen programming language's borrow checker walks functions backwards, in reverse control-flow order, so it already knows how references will be used later, walking through its static typing, static grouping and safety-checking phases, loops, and how the design compares with Rust's borrow checker.
15 min · 3,517 words
How Not to Build a Five-in-a-Row Game Engine
Gabor Koos recounts building slap5, a five-in-a-row (gomoku) engine in Rust and WebAssembly with bitboards, alpha-beta search and threat detection, with heavy LLM help, and what he learned about the gap between working code, evaluating changes, and a strong opponent.
22 min · 5,068 words
Superoptimizing an FPU Emulator
purplesyringa wanted a branch-free way to compute the lowest set bit of a float for a floating-point emulator library, and instead of hand-deriving it wrote a small superoptimizer that searched instruction sequences and found a surprisingly clever rewrite.
4 min · 974 words
rust-djinn: You Should Specify Your Code Unambiguously (and Prove That You Did)
Simon Henniger introduces rust-djinn, arguing developers should write unambiguous specifications for their code and prove those specs hold—bridging documentation, types and verification so correctness claims are checkable rather than aspirational.
13 min · 3,029 words
Why 'externalized' proofs of cyclic trait impls does not work
Niko Matsakis compares modular proofs, where an impl must establish its supertraits, with external proofs, where users of the impl carry that obligation, and argues that external proofs are incompatible with Rust as designed, so cyclic trait impls require a modular strategy.
7 min · 1,585 words
Purplesyringa shows how to compute count-leading-zeros and count-trailing-zeros with floating-point bit tricks instead of native instructions, yielding a vectorizable polyfill in Rust, and explains why the exponent manipulation works.
4 min · 891 words
Prime Intellect describes how Prime Agent orchestrated a swarm of over 2,000 agents across 10,000+ Prime Sandboxes and 200 billion tokens to rewrite itself from TypeScript to Rust in two weeks, covering why Rust, finite-state-machine orchestration, architecture redesign, and cold start, memory and install-size gains.
9 min · 2,133 words
The Missing Piece in Rust Error Handling
Rust already offers explicit control flow, errors as values and concise propagation with ?, but choosing what goes in the error half of Result forces a trade-off between precise types with boilerplate and convenient types that hide which errors can occur. The post argues error types should compose as easily as the functions that return them.
7 min · 1,660 words
tapo speaks TPAP: Third-Party Compatibility can stay off
Mihai Dinculescu explains how v0.11.1 of tapo, his unofficial Rust and Python client for TP-Link Tapo devices, now logs in over TP-Link's TPAP protocol so users no longer need the Third-Party Compatibility switch, and covers new H200/H500 camera hub recording downloads plus plug schedules and timers.
10 min · 2,290 words
The Performance Cost of RwLock in Our Read-Heavy Workload
A write-up of how per-item RwLock reads became expensive in a read-heavy service, how moving to lock-free structures avoided the overhead of acquiring thousands of read locks, and where a simple RwLock around a larger block still worked well. The takeaway: where and how often synchronization happens matters as much as the choice of primitive.
6 min · 1,303 words
TIL: Rust's derive often implies inline
A short TIL noting that Rust’s derived trait impls commonly emit #[inline], with practical implications for Debug/Clone cost and when custom non-inlined derives can help.
3 min · 634 words
How to speed up the Rust compiler in September 2026
How to speed up the Rust compiler in September 2026 My last post](https://nnethercote.github.io/2026/07/31/how-to-speed-up-the-rust-compiler-in-july-2026.html) on the Rust compiler’s performance was two months ago and a lot has happened since then. Overall progress The measurements for the period 2026-07-29 to 2026-09-28 can be seen here](https://perf.rust-lang.org/compare.html?start=1a833e16546c2eb012758ddd499964fd8afee29e&stat=wall-time&tab=compile&end=c1070d69382b8d2f2eb65119c738a77d9e324c9e&
5 min · 1,212 words
Rüdiger Klaehn of the iroh team shows how to discover content globally with iroh using the BitTorrent mainline DHT, motivated by IPFS Shipyard winding down, covering the transfer protocol, a minimal DHT record design, announce and discovery, and a demo of hosting websites with names and a browser plugin.
15 min · 3,395 words