Tim McGilchrist
banner
tsmc.purely-functional.com
Tim McGilchrist
@tsmc.purely-functional.com
OCaml and Haskell connoisseur. Principal software engineer at Tarides. Compilers, runtimes, garbage collection, and general systems hackery.

More at https://lambdafoo.com
Even better if you’re using eBPF you can trigger the tracing to start on interesting events. Then write an eBPF script that contains the logic for what is interesting.
November 20, 2025 at 5:00 AM
You write a JSON serialization for the types you want to include in probes and the library only calls the serialization when the probe is enabled.
November 20, 2025 at 12:08 AM
It is totally possible to add to user code. You either extend the compiler so you can emit special assembly code blocks, or you use the C probes API. I’ve implemented this second option in github.com/tmcgilchrist...

It follows the Rust USDT approach where probe data is supplied as JSON
GitHub - tmcgilchrist/ocaml_usdt: Userland Statically Defined Tracing (USDT) probes for OCaml applications.
Userland Statically Defined Tracing (USDT) probes for OCaml applications. - tmcgilchrist/ocaml_usdt
github.com
November 20, 2025 at 12:06 AM
Ok I need to write something up as a placeholder. USDT, debuggers and performance tooling.
November 19, 2025 at 10:16 PM
Do you know when the conference is likely to be held? Working out whether I can make the trip to Europe to present.
November 19, 2025 at 10:01 PM
Hadn’t thought about publishing it there. Once I’ve done the editing I’ll share a link to it.
April 23, 2025 at 11:25 PM
I would keep the distributed process section, as there’s not really an equivalent Actor library in Haskell. The section on exceptions in Haskell is wonderful. More coverage on GPUs and patterns for building concurrent applications.
March 30, 2025 at 8:21 PM
Congratulations! I know you’ve been working on this for some time.
March 1, 2025 at 11:19 PM
This is cool. However I’ve never had an invite to the lobster site. Can anyone hook me up with one?
February 24, 2025 at 10:22 AM
Exactly. This is why I want frame pointers for OCaml and to introduce a stable USDT interface for the GC. Do you have a write up on how you did that?
February 14, 2025 at 12:29 AM
Interesting! I expect there are other corners that will be problematic like effects that I haven’t thought about. Right now I’m focusing on the GC and seeing what useful things can get out of that.
February 14, 2025 at 12:23 AM
You can implement multishot continuations as a library in OCaml. github.com/dhil/ocaml-m...
GitHub - dhil/ocaml-multicont: multi-shot continuations in OCaml
multi-shot continuations in OCaml. Contribute to dhil/ocaml-multicont development by creating an account on GitHub.
github.com
February 11, 2025 at 7:08 AM
Honestly it an accumulation of knowledge over time. Either reading books or source code or building my own version of something to understand how it works.
February 11, 2025 at 7:05 AM
I think that’s accurate. Sometimes I’m writing assembly for codegen or fixing DWARF CFI, sometimes OCaml and recently I’ve been writing debugger support in C++.
February 10, 2025 at 9:51 AM