Concurrent Revisions

The Revisions project introduces a novel programming model for concurrent, parallel, and distributed applications. It provides programmers with a simple, yet powerful and efficient mechanism (based on mutable snapshots and deterministic conflict resolution) to execute various application tasks in parallel even if those tasks access the same data and may exhibit read-write or write-write conflicts.

To find out more about how it works:

  • Read our OOPSLA 2010 paper (links for all publications are below) 
  • Read the Samples on the RiSE4fun webpage and run them instantly from your browser!
  • Watch the Channel 9 interview
  • Check out these powerpoint slides
  • Read our semantics paper (the ESOP 11 paper, or better the extended version which is available as a 2010 TechReport below)

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. To simplify this problem, we introduce a novel programming construct called “revisions”, which is inspired by revision control systems commonly used by development teams. 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 changes become globally effective.

This project was originally targeted at game applications and used to be called "ORCS". We have now renamed it to reflect the wider range of applications that can benefit from this technique, in particular reactive and interactive applications.

For Microsoft internal users we have a C# library and several sample applications available for download at http://codebox/orcs (internal link only). We are currently considering a binary public release, but it is not available yet.

 

Publications