Against Query Based Compilers
Against Query Based Compilers Feb 25, 2026 Query based compilers are all the rage these days, so it feels only appropriate to chart some treacherous shoals in those waters. A query-based compiler is
Creator of rust-analyzer. TigerBeetle engineer. Expert on IDE tooling and language servers.
https://matklad.github.ioAgainst Query Based Compilers Feb 25, 2026 Query based compilers are all the rage these days, so it feels only appropriate to chart some treacherous shoals in those waters. A query-based compiler is
Wrapping Code Comments Feb 21, 2026 I was today years old when I realized that: It’s a good idea to limit line length to about 100 columns. This is a physical limit, the width at which you can still
Diagnostics Factory Feb 16, 2026 In Error Codes For Control Flow, I explained that Zig’s strongly-typed error codes solve the “handling” half of error management, leaving “reporting” to the users. To
Justifying text-wrap: pretty Feb 14, 2026 p { text-wrap: pretty; } Something truly monumental happened in the world of software development in 2025. Safari shipped a reasonable implementation of te
Programming Aphorisms Feb 11, 2026 A meta programming post — looking at my thought process when coding and trying to pin down what is programming “knowledge”. Turns out, a significant fraction of tha
CI In a Box Feb 6, 2026 I wrote box, a thin wrapper around ssh for running commands on remote machines. I want a box-shaped interface for CI: const repository = "git@forge.com/me/my-project"; const c
make.ts Jan 27, 2026 Up Enter Up Up Enter Up Up Up Enter Sounds familiar? This is how I historically have been running benchmarks and other experiments requiring a repeated sequence of commands — typ
Considering Strictly Monotonic Time Jan 23, 2026 Monotonic time is a frequently used, load bearing abstraction. Monotonicity is often enforced using the following code: fn now(clock: *Clock) Instant
Developer used Claude AI to help automate deploying TigerBeetle's distributed database across cloud machines for performance testing.
Memory safety is a property of implementation, not program execution; most definitions incorrectly focus on the wrong aspect of the system.
Modern languages (Go, Rust, Swift, Zig) have converged on a new error handling approach distinct from traditional exceptions, requiring call-site annotations.
Describes building a resilient parser that collects all errors instead of stopping at the first one, with a warning about infinite loop bugs from not consuming tokens.
Using 32-bit indexes instead of pointers saves memory, improves CPU cache efficiency, and boosts performance by reducing memory bandwidth bottlenecks.