Caleb Stanford

Research Projects

My primary research expertise is in programming languages and formal methods. I am especially interested in applications of these fields to problems in distributed systems, data processing, and computer security. Here are some current research projects:

Securing the Rust ecosystem

Securing the Rust ecosystem

How can we make sure that Rust code that you download off the internet is actually safe to run? Rust has grown in popularity because of its built-in safety guarantees – in particular, type safety, memory safety, and data race freedom – but these guarantees don’t generally extend to arbitrary third-party code. With collaborators at UCSD, I’m working on automated and human-assisted tools to ensure the safety of Rust programs. Check out Cargo Scan (paper) and CratesReport.

Derivatives of regular expressions

Extending the theory of derivatives of regular expressions

If you know Calculus, you may be familiar with rules like the sum rule and product rule, which say that d(f + g) = df + dg and d(f·g) = d(f)·g + f·d(g), where d is the derivative operator and f and g are functions. It turns out there is an interesting (and practically useful!) theory of similar rules for regular expressions, but where the rules are a bit different: for example, d(AB) = d(A)B + (A∩ε)d(B). I’m interested in leveraging and extending derivative-based abstractions to build practical solvers for regular expressions that show up in practice, including those with string variables. If you’re interested, check out our PLDI paper on implementing these things in the Z3 theorem prover.

Verified dataflow programming

Verified dataflow programming

Programs written for the cloud are built on dataflow abstractions: pipelines of operators that process and produce data streams. For example, operators include things like map, filter, partition, and aggregate. Can we verify that these pipelines are correct, lack performance bottlenecks, and preserve data privacy and security? My prior work proposes using partially ordered sets to represent streams, and I’m also currently interested in extending existing theories to work for patterns of events in a stream over time and to encode other correctness and security constraints of interest. A good starting point for this work is my PhD thesis.

Past work

In the past, I have also worked on the following projects:

Research areas