JErlang: Erlang with Joins

Erlang is an industrially successful functional language that uses the Actor model for concurrency. It supports the message-passing paradigm by providing pattern-matching over received messages. Unfortunately coding synchronisation between multiple processes is not straightforward. To overcome this limitation we designed and implemented JErlang, a Join-Calculus inspired extension to Erlang. We provide a rich set of language features with our joins. We present implementation details of our two alternative solutions, a library and an altered VM. Our optimisations provide JErlang with good performance.

[1]  John A. Trono A new exercise in concurrency , 1994, SGCS.

[2]  Claudio V. Russo Join patterns for visual basic , 2008, OOPSLA '08.

[3]  Luc Maranget,et al.  Compiling Join-Patterns , 1998, Electron. Notes Theor. Comput. Sci..

[4]  Philipp Haller,et al.  Implementing Joins Using Extensible Pattern Matching , 2008, COORDINATION.

[5]  Luca Cardelli,et al.  Modern concurrency abstractions for C# , 2002, TOPL.

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

[7]  Farhad Arbab,et al.  Coordination Models and Languages , 1998, Adv. Comput..

[8]  C. Laneve,et al.  Inheritance in the Join Calculus (Extended Abstract) , 2000 .

[9]  Andy Oram,et al.  Beautiful code , 2007 .

[10]  Sophia Drossopoulou ECOOP 2009 - Object-Oriented Programming, 23rd European Conference, Genoa, Italy, July 6-10, 2009. Proceedings , 2009, ECOOP.

[11]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[12]  Lars-Åke Fredlund,et al.  A framework for reasoning about Erlang code , 2001 .

[13]  Joe Armstrong,et al.  Programming Erlang: Software for a Concurrent World , 1993 .

[14]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[15]  Simon L. Peyton Jones,et al.  Imperative functional programming , 1993, POPL '93.

[16]  Martin Sulzmann,et al.  Actors with Multi-headed Message Receive Patterns , 2008, COORDINATION.

[17]  Martín Abadi,et al.  A calculus for cryptographic protocols: the spi calculus , 1997, CCS '97.

[18]  Sophia Drossopoulou,et al.  SCHOOL: a Small Chorded Object-Oriented Language , 2006, DCM@ICALP.

[19]  G. Stewart Von Itzstein,et al.  On Implementing High Level Concurrency in Java , 2003, Asia-Pacific Computer Systems Architecture Conference.

[20]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[21]  Flemming Nielson,et al.  International Workshop on Principles of Program Analysis , 1999 .

[22]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[23]  Charles L. Forgy,et al.  Rete: a fast algorithm for the many pattern/many object pattern match problem , 1991 .

[24]  Cédric Fournet,et al.  The reflexive CHAM and the join-calculus , 1996, POPL '96.

[25]  Martin Sulzmann,et al.  XHaskell - Adding Regular Expression Types to Haskell , 2008, IFL.

[26]  Don Batory The LEAPS Algorithm , 1994 .

[27]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

[28]  Nikhil Bansal,et al.  The Santa Claus problem , 2006, STOC '06.

[29]  Martin Sulzmann,et al.  Parallel Join Patterns with Guards and Propagation , 2009 .

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

[31]  Patrick Th. Eugster,et al.  EventJava: An Extension of Java for Event Correlation , 2009, ECOOP.

[32]  Daniel P. Miranker TREAT: A new and efficient match algorithm for AI production systems , 1988 .

[33]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

[34]  Thom W. Frühwirth,et al.  Theory and Practice of Constraint Handling Rules , 1998, J. Log. Program..