Rebuilding in Rust

Jan 18, 2023

There's a trend in developer tools and infrastructure – rebuild inefficient parts of the stack in a more high-performance language like Rust. There's ruff by Charlie Marsh, which is an extremely fast python linter that's written in Rust (10-100x faster than existing linters!). Then there's Turbopack, which is a bundler written in Rust that aims to replace webpack (not to mention esbuild, written in Go).

It's not only a chance to take advantage of performance optimizations but to rethink the design of the tool and take advantage of a more modern programming language – NodeJS's (C++) and its successors Deno (Rust) and Bun (Zig). There's warp, the next-gen terminal written in Rust.

Why Rust? A correct but uninteresting answer is the community – both existing libraries and the opportunity for aspiring developers to build those libraries.

A more nuanced answer might be Rust's interoperability – it's easy to interop between C++ and Rust (at least easier than it is in Go and other modern systems languages). It also has best-in-class WebAssembly target support – again, compared to a language like Go which supports WebAssembly compilation but has its quirks (e.g., large binary size, no WASI support). For example, RustPython (the interpreter used by ruff) can be embedded as a WebAssembly module and easily run in the browser.

Performance improvements and interoperability are extremely powerful together – not only will they optimize existing workflows, but unlock completely new ones as well.