CML: A higher concurrent language

Although most research in the area of concurrent language design has been motivated by the desire to improve performance by exploiting multiprocessors, we believe that concurrency is a useful programming paradigm for certain application domains. For example, interactive systems often have a naturally concurrent structure [CP85, RG86, Pik89, Haa90] . Another example is distributed systems: most systems for distributed programming provide multi-threading at the node level (e.g., Isis[BCJ 90] and Argus[LCJS87]). Sequential programs in these application domains often must use complex and artificial control structures to schedule and interleave activities (e.g., event-loops in graphics libraries). They are, in effect, simulating concurrency. These application domains need a high-level concurrent languagethat provides both efficient sequential execution and efficient concurrent execution: CML satisfies this need.

[1]  Verzekeren Naar Sparen,et al.  Cambridge , 1969, Humphrey Burton: In My Own Time.

[2]  Jr. Guy L. Steele,et al.  Rabbit: A Compiler for Scheme , 1978 .

[3]  Mitchell Wand,et al.  Continuation-Based Multiprocessing , 1980, High. Order Symb. Comput..

[4]  Gregory R. Andrews,et al.  Concepts and Notations for Concurrent Programming , 1983, CSUR.

[5]  David B. MacQueen Modules for standard ML , 1984, LFP '84.

[6]  Mitchell Wand,et al.  Continuations and coroutines , 1984, LFP '84.

[7]  Luca Cardelli,et al.  Squeak: a language for communicating with mice , 1985, SIGGRAPH.

[8]  Robert Harper Introduction to standard ml , 1986 .

[9]  Richard Bornat,et al.  A Protocol for Generalized occam , 1986, Softw. Pract. Exp..

[10]  Paul Hudak,et al.  ORBIT: an optimizing compiler for scheme , 1986, SIGPLAN '86.

[11]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[12]  Bernard Robinet,et al.  Combinators and functional programming languages : Thirteenth Spring School of the LITP, Val d'Ajol, France, May 6-10, 1985, proceedings , 1986 .

[13]  Andrew W. Appel,et al.  A Standard ML compiler , 1987, FPCA.

[14]  Barbara Liskov,et al.  Implementation of Argus , 1987, SOSP '87.

[15]  Emden R. Gansner,et al.  A foundation for programming environments , 1987, SDE 2.

[16]  A. Burns,et al.  Programming in Occam 2 , 1988 .

[17]  John H. Reppy Synchronous operations as first-class values , 1988, PLDI '88.

[18]  Andrew W. Appel,et al.  RETROSPECTIVE : Real-time Concurrent Collection on Stock Multiprocessors , 2004 .

[19]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[20]  John H. Reppy,et al.  First-Class Synchronous Operations in Standard ML , 1989 .

[21]  Andrew W. Appel,et al.  Simple generational garbage collection and fast allocation , 1989, Softw. Pract. Exp..

[22]  Robert Hieb,et al.  Engines From Continuations , 1989, Comput. Lang..

[23]  Andrew W. Appel,et al.  Continuation-passing, closure-passing style , 1989, POPL '89.

[24]  Rob Pike A Concurrent Window System , 1989, Comput. Syst..

[25]  Robin Milner,et al.  Definition of standard ML , 1990 .

[26]  John H. Reppy,et al.  Asynchronous Signals is Standard ML , 1990 .

[27]  Peter A. Buhr,et al.  The μsystem: Providing light‐weight concurrency on shared‐memory multiprocessor computers running UNIX , 1990, Softw. Pract. Exp..

[28]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[29]  James Gettys,et al.  The X window system , 1990 .

[30]  Paul Haahr Montage: Breaking Windows into Small Pieces , 1990, USENIX Summer.

[31]  Robert Hieb,et al.  Representing control in the presence of first-class continuations , 1990, PLDI '90.

[32]  J. Gregory Morrisett,et al.  Adding threads to Standard ML , 1990 .

[33]  Robert Harper,et al.  Typing first-class continuations in ML , 1991, POPL '91.

[34]  John H. Reppy,et al.  Higher-Order Concurrency , 1992 .