composition.al

Writing macros that write Redex

Over the last year or two, I’ve been using PLT Redex more and more often as a tool for my research. Redex is a domain-specific programming language and suite of tools for expressing and experimenting with semantic models of programming languages.

A new paper draft, and a debugging story

I’m excited to announce a new paper draft, “LVars: Deterministic Parallelism through Shared Monotonic Data Structures”, that my advisor Ryan and I just submitted to ICFP 2013!

The abstract:

Programs written using a deterministic-by-construction model of parallel computation are guaranteed to always produce the same observable results, offering programmers freedom from subtle, hard-to-reproduce nondeterministic bugs that are the scourge of parallel software. We present a new model for deterministic-by-construction parallel programming that generalizes existing single-assignment models to allow multiple assignments that are monotonically increasing with respect to a user-specified partial order. Our model achieves determinism by using a novel shared data structure that allows only monotonic writes and “threshold” reads that block until a lower bound is reached. We give a proof of determinism for our model and describe how to extend it to support a limited form of nondeterminism that admits failures but never wrong answers.

FizzBuzz revisited

One of the cool things about being involved with the development of Rust over the last couple of years has been watching the community grow along with the language. When I came to Mozilla as an intern in March 2011 and started contributing to Rust, the Rust “community” consisted of perhaps twenty people who frequented the #rust IRC channel, most of whom were Mozilla employees. There weren’t any third-party resources for helping people get started with Rust back then.

Determinism abides

On a trip to Europe last month, I was scheduled to give three talks about my research on deterministic parallelism. The talks all had the same topic, but wildly varying lengths: a one-minute talk at PLMW, which was co-located with POPL in Rome; a ten-minute talk at the POPL student session; and an hour-or-so-including-questions talk at MPI-SWS in Saarbrücken, Germany.

For the one-minute talk, for which I was only allowed a single slide, I had a pretty good idea of what to say. I wanted to do something cute with it, though. So, I made this slide.

A ten-minute talk about my research

I just had a talk proposal accepted to the student short talk session at POPL, which will be in Rome next week. They’re not messing around when they say “short” — the talk slots are only ten minutes long. As practice for my talk, then, here’s an overview of my research for the short on time. (For the even more time-pressed, I also have an even shorter talk that serves as a sort of abstract for this one.)

To be honest, this is still not quite short enough for a ten-minute slot. I’m sad that I’ll have to cut more material — I’ve already had to leave out some aspects of the work that I think are cool. So, please ask questions, and I’ll do my best to answer them either in comments or in a future post. Thanks! And, if you’re planning to be at POPL, I’d love to chat then, too — I’ll be speaking third in the student session on the 25th.

OK — start the clock…now!