Speaker

Stephen Dolan

Stephen Dolan

Software engineer at Jane Street working on the Tools and Compilers team, best known outside functional-programming circles as the creator of jq, the ubiquitous command-line tool for querying JSON. His academic background includes a PhD dissertation on reconciling subtyping and type inference (the MLsub prototype) and work on OCaml’s multicore garbage collector that he began as a side project during that doctorate.

At Jane Street, Dolan has worked directly on OCaml’s garbage collector and on two language extensions that aim to give programmers finer-grained control over memory: local types, which enable safe stack allocation without Rust-style lifetime annotations, and unboxed types, which allow compact, pointer-free memory layouts for primitives and structured data. With Will Hasenplaugh he produced a two- to three-fold speedup in OCaml’s marking phase by introducing prefetching — issuing hardware memory-fetch requests in advance so that multiple cache misses overlap rather than serialise.

Core positions

Dolan holds that the right trade-off between automatic and manual memory management depends on the workload, and that the hardest design problem is not picking one extreme but blending both in the same language without producing sharp, unpredictable seams. He is critical of C’s unchecked memory management — which turns every mistake into a potential security vulnerability — and admiring of Rust’s static safety guarantees, while arguing that Rust’s lifetime-variable machinery is too annotation-heavy for a language like OCaml whose programmers expect type inference to carry the load. His preferred path is ergonomics by default, with opt-in precision for the cases where layout matters.

In the wiki