E2E: Concurrent Programming with Revisions


November 30, 2010


Daan Leijen, Erik Meijer, and Sebastian Burckhardt


Building applications that are responsive and can exploit parallel hardware poses an important challenge. In particular, enabling applications to execute various tasks in parallel can be difficult if those tasks exhibit read and write conflicts. Revisions are forked and joined much like asynchronous tasks. However, rather than accessing global shared data directly (and thereby risking data races or atomicity violations), all revisions execute on a (conceptual) copy of the shared state, a “global mutable snapshot” so to speak. Any changes performed in a revision apply to that snapshot only, until the revision is joined at which the [sic] changes become globally effective .

Here, Erik Meijer interrogates (in a nice way) computer scientists Daan Leijen and Sebastian Burckhardt, the researchers behind Revisions. As usual, Erik asks great questions and the scientists spend much of the time at the whiteboard, drawing and writing answers to clearly explain what revisions are, how they work, and why this model matters. In a nice twist of fate, Erik was Daan’s PhD advisor at Utrecht University in the Netherlands (that must have been awesome—lucky Daan!).

Revisions are yet another example of the great work coming out of the RiSE group in MSR. You don’t have to wait for a “CTP” of Revisions for C# -> Just go to http://rise4fun.com/Revisions and write some code! Thanks to Peli and the RiSE team developers for implementing such an awesome web-based experimentation sandbox.

Tune in. Learn. Enjoy.