Hi! I am Chris Fallin. I'm a software engineer and/or computer scientist and/or generalist nerd. I've worked on many things but I specialize in compilers. I love thinking about code that thinks about code.
I'm currently a software engineer at F5 in their Office of the CTO (R&D division), where I work on WebAssembly (Wasm)-related technology. I am a core contributor to the Wasmtime engine and the Cranelift compiler, and also work on toolchains that produce Wasm. I participate in the Wasm community and in Bytecode Alliance, and I occasionally attend and talk at academic conferences as well. I like to think that interesting work happens at the intersection of academic inspiration and pragmatic engineering constraints in industry; whole new classes of problems appear when one makes technology real.
Before F5, I have been: a principal software engineer at Fastly; a senior compiler engineer at Mozilla; a software engineer at Google; and a CPU microarchitect at Intel. In the middle of some of that, I did my PhD at Carnegie Mellon, where I studied compilers, static and dynamic analysis, and before that, CPU microarchitecture.
I have been fortunate to work on quite a few interesting projects. I worked out a way to use partial evaluation to compile JavaScript ahead-of-time on a Wasm-based, no-JIT platform, yielding 3--5x speedups over an interpreter. I served as tech lead of Cranelift for three years, revamped its architecture to allow it to be competitive with peer JITs (new backend framework, new regalloc, a pattern-matching DSL for lowering and optimization rules , a mid-end optimizer framework using e-graphs, among other things), and also worked on novel correctness techniques, including formal verification and register allocation symbolic translation validation. As a compiler engineer, I have worked on and am familiar with the codebases of Wasmtime, Cranelift, and Firefox's SpiderMonkey JS just-in-time compiler. Previously at Google, I worked on the protocol buffers data-serialization library, including arena memory allocation and some language bindings.
All this and more you can find on my CV.
I believe in free and open-source software and try to align my work in a way that contributes to this shared public good. I like to build systems that are based on small well-defined core abstractions; this is probably why I enjoy compilers (and previously, out-of-order CPU design) so much. I find the precision and correctness that comes with strongly-typed high-level programming languages to be immensely valuable; I write most code in Rust these days. I believe that there's a lot of work still to be done to improve the security and performance of modern systems: software is too important for us to be sloppy about it.
In my spare time I can often be found hiking, riding my bike, or continuing at my futile attempt to read books faster than I buy them. I spend most of my time staring at glowing rectangles and pushing buttons, though.
I live in the San Francisco Bay Area, though I'm originally from Portland, Oregon. I spent eight years in (and greatly enjoyed) Pittsburgh, Pennsylvania while at CMU.