Skip to content

2026

Helical in Rust : ORM time

It's been almost a year since I started on my Helical rewrite in Rust (with a sizable dose of help and motivation from John!). I wrote the prototype in Python and while Gwen has been a good sport about alerting me to usability issues, the truth is that updating the core code is getting unruly. I've also been re-doing some of the program analysis stuff so that it's cleaner, less ad hoc, and generally more amenable to an interesting paper about the program semantics. However, I've let myself get distracted over the past year on other things, so I'm going to try to be more disciplined about getting the Rust rewrite done. In services of that I've decide to blog my way through the process, since like a lot of people I haaaaaaaate context switching and having to pick up where I left off.

Challenges with Locality and State in ExPL Annotations, Part I

ExPL, the experiment specification language of Helical, relies on user-provided annotations to infer an implicit post-interventional causal structure and query set. Annotations are attached to ExPL expressions and provide a link to the program variables in HyPL. Because ExPL encodes stateful executions, we need to be able to reason about the scope over which stateful operations apply. In this two-part blog post we'll talk about some challenges associated with using these annotations.