Parallel computing with the Pi-calculus

To tackle the multi-core programming challenge, we investigate the design and implementation of concurrency-oriented programming languages. Our approach mimics the evolution from lambda-calculi to functional programming languages, but with the pi-calculus as a starting point. To fill the gap between the abstract calculus and its implementations, we introduce the pi-threads: an intermediate language and its abstract machine.The stackless architecture of the abstract machine makes the underlying algorithms both simple and naturally concurrent. The scheduling, for instance, can be operated in a completely decentralized way. Another remarkable feature of the abstract machine is its garbage collector. We adopt a reference counting scheme that can be characterized formally using only two semantic rules. Moreover, it provides original solutions to the usual shortcomings of reference counting: the overhead caused by the maintenance of the reference counts - we only track global references - and the complex issue of collecting cyclic structures - reinterpreted as the (in our case, much simpler) problem of detecting partial terminations.

[1]  Frédéric Peschanski,et al.  Modelling and Verifying Mobile Systems Using pi-Graphs , 2009, SOFSEM.

[2]  Simon L. Peyton Jones,et al.  Concurrent Haskell , 1996, POPL '96.

[3]  David Detlefs,et al.  Garbage-first garbage collection , 2004, ISMM '04.

[4]  Claudio V. Russo,et al.  Parallel concurrent ML , 2009, ICFP.

[5]  Simon L. Peyton Jones,et al.  Composable memory transactions , 2005, CACM.

[6]  Iain Phillips,et al.  CCS with priority guards , 2001, J. Log. Algebraic Methods Program..

[7]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

[8]  Davide Sangiorgi,et al.  On Bisimulations for the Asynchronous pi-Calculus , 1996, Theor. Comput. Sci..

[9]  Benjamin C. Pierce,et al.  Pict: a programming language based on the Pi-Calculus , 2000, Proof, Language, and Interaction.

[10]  V. T. Rajan,et al.  An efficient on-the-fly cycle collection , 2005, TOPL.

[11]  Robin Milner,et al.  Communicating and mobile systems - the Pi-calculus , 1999 .

[12]  Alexey Lastovetsky The mpC Programming Language Specification , 1994 .

[13]  Joe Armstrong,et al.  A history of Erlang , 2007, HOPL.

[14]  Mads Tofte,et al.  Pict: A Programming Language Based on the Pi-Calculus , 2000 .

[15]  Davide Sangiorgi,et al.  The Pi-Calculus - a theory of mobile processes , 2001 .

[16]  Gul Agha,et al.  Using passive object garbage collection algorithms for garbage collection of active objects , 2002, ISMM '02.

[17]  Jean-Jacques Lévy,et al.  A Calculus of Mobile Agents , 1996, CONCUR.

[18]  Peter H. Welch,et al.  Communicating Mobile Processes , 2004, 25 Years Communicating Sequential Processes.

[19]  John H. Reppy,et al.  Concurrent programming in ML , 1999 .

[20]  Frédéric Peschanski,et al.  A stackless runtime environment for a Pi-calculus , 2006, VEE '06.

[21]  Herb Sutter,et al.  The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software , 2013 .

[22]  Davide Sangiorgi,et al.  Communicating and Mobile Systems: the π-calculus, , 2000 .