Deriving QCheck Generators for External Types in OCaml May 1, 2026 Recently I’ve been working on durin , a DWARF library for OCaml. I won’t go into the details here but I wanted to share a property testing technique I’ve been using in durin. The DWARF spec is huge (version 5 is just short of 500 pages) and includes many large variant types that can be combined in different ways. To test the…
A month of Elisp April 23, 2026 Somehow this month has turned into a month of Elisp. It’s been a while since I posted something Emacs related so here is a roundup of all the things I’ve done. Inspiration I’m primarily working in OCaml day to day with some C and assembly thrown in for good measure. OCaml has a number of mini-languages it uses for describing things like packages using opam, build…
Quick Hardware Performance Counters on macOS ARM64 March 25, 2026 If you’ve ever profiled OCaml programs on Linux, you’ve probably reached for perf stat . It’s the go-to tool for grabbing hardware performance counters—cycles, instructions, cache misses—without any instrumentation overhead. On macOS, the equivalent story has been open Instruments , which is fine for GUI-driven investigation but…
More CFI and frame pointers work February 7, 2026 This month I set myself a goal to wrap up different pieces of work on OCaml that have been taking up space in my notes and my mind from last year. I wanted a clean slate to focus on the new year. I also enjoy reading other developers notes like Opening up old release branches and Faster Faster GDB Startup . So here is my minor contribution and we…
Why do frame pointers matter for OCaml? February 24, 2025 At the end of last year at Tarides, my colleagues and I worked on improving frame pointer support in OCaml. While pitching the work internally, someone asked: Why do frame pointers matter for OCaml? Here’s the answer I gave. Frame pointers give us a reliable way to profile OCaml programs using standard tools like perf and eBPF. Instead of…
Experimenting with OCaml and eBPF February 15, 2025 Building on top of the excellent book BPF Performance Tools by Brendan Gregg. How can we apply the techniques from Chapter 12 Languages to OCaml? First OCaml is roughly equivalent to C, it’s a compiled language with a runtime written in C. It supports frame pointers using the --enable-frame-pointers configuration option on x86_64, with ARM64…
Building OCaml from assembly August 30, 2024 At work I’ve been focusing on improving the debugging experience with OCaml. As part of that I’ve discovered how some of the pieces fit together, that might be obvious in retrospect, but are interesting to at least me so I’m going to post details about them here. The first nugget is you can hand compile an OCaml program into a final executable. What do…
Getting Started with LLDB on OCaml August 3, 2024 This post is a companion to KC’s excellent Getting Started with GDB on OCaml that shows how to debug OCaml programs with GDB. I wanted to demonstrate the same functionality using LLDB on Linux ARM64. The aim is to show the beginnings of debugging OCaml programs with LLDB and highlight a few LLDB tricks I’ve found. We will start with the same…
Debugging OCaml with Emacs March 25, 2024 This post started as a summary of my March Hacking Days effort at Tarides . I have been working on improving the debugging situation for OCaml and wanted to see how easily I could setup debug support in Emacs using DAP. Debug Adapter Protocol (DAP) is a wire protocol for communicating between an editor or IDE and a debug server like LLDB or GDB , providing…
ICFP 2022 Review October 11, 2022 I wrote up a highlights of ICFP 2022 for the Tarides blog. It was great to get back to in-person conferences again and getting the chance to meet people. Thanks to my employer Tarides for covering the cost. For me personally the OCaml Workshop was fantastic beginning to end, read the blog post for the full details. Outside of OCaml I spent time in the Haskell…