| J. H. Reppy. Synchronous Operations as First-Class Values. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, SIGPLAN Notices, Val 23, No. 27, page 250259. ACM Press, 1988. |
....[22] and the Spi calculus [51] are other influential works in the field. 7 4 Concurrent ML (CML) 4.1 Development Concurrent ML (CML) 13] is a programming language, developed by John Reppy, which integrates high level abstraction mechanisms with concurrency primitives. It has its roots in PML [52], an ML like language used in the Pegasus system at AT T Bell Laboratories. The concurrency primitives of PML were re implemented on top of Standard ML of New Jersey [53] at Cornell University and this evolved into CML as presented in Reppy s dissertation. Reppy s s introduction to CML starts ....
J. H. Reppy. Synchronous operations as first-class values. In Proceedings of the SIGPLAN Conference on Programming Language Design and Implementation, pages 250--259, 1988.
....two or more committees might share a professor. When that professor becomes available, she can only choose one of the meetings, while the others continue to wait. Coordinating this is non trivial, and various solutions have appeared [9, 17, 22, 23] Several proposals for concurrency primitives [5, 11, 19, 20, 24] further extend the CSP model in a direction briefly mentioned in Hoare s original paper. These introduce communication entities known as channels. A process no longer explicitly names other processes in its send and receive operations but instead names a channel. Synchronous transfer of data from ....
J. H. Reppy. Synchronous operations as first-class values. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 250--259, June 1988. 14
....values and are created by the SEND and RECEIVE functions. send has a side effect communication while SEND returns a value; selecting the value returned by SEND has a side effect. All communication is synchronous. These primitives are equivalent to those of the Pegasus Meta Language [Rep88] (although developed independently) Below I show how to transform them into the Pegasus primitives. I have implemented two new primitives, wait and WAIT, which wait for input from or output to files to be possible. Using wait and WAIT, I have implemented functions that make it possible for users ....
....then returns a pair: the input and output sides of the channel. I have restricted channels so that it is impossible to send a message until it is asked for; this is an abstraction of McIlroy s demand channels [McI90] I have mapped my primitives to the primitives used in the Pegasus Meta Language [Rep88]. Finally, I have added Boolean guards to potential communications, so that select statements can use combinations of Booleans and communications after the manner of CSP [Hoa78] These four modifications are orthogonal; their implementations, which range in size from 6 to 27 lines, are given ....
[Article contains additional citation context not shown here]
John H. Reppy. Synchronous operations as first-class values. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 250--259, June 1988. 13
....Though these systems are theoretical there are other closely related systems, in varying stages of formal analysis, that are actually implemented and are being used in experiments. The most interesting of these is Reppy s calculus that incorporates events as first class entities in Standard ML [16]. Though our work does not directly bear on these activities it does indicate that these ideas are ripe for an intensive study. We plan to extend our model to the full calculus. We would also like to understand what it takes to make the calculus fully abstract. Given that the language has ....
J. H. Reppy. Synchronous operations as first-class values. In Procedings of the SIGPLAN conference on Programming languaage design and implementation, 1988.
....the paper, inheritance was used as a means of code re use. Relationship with another aspect of inheritance, subtype classifications, might be required. One related research we should note is the event types for synchronization as first class values, in the concurrent version of language SML[94]. Another work towards the type theory for active objects[87] by Nierstrasz et al. and also by Honda[47] are also interesting although our work has not addressed the issues of types in OOCP languages and adhered to inheritance as means of reusing code, the relationship between the type theory ....
J. H. Reppy. Synchronous operations as first-class values. In Proceedings of the SIGPLAN '88 Conference on Programming Design and Implementation, pages 250-- 259, 1988.
....of the language. ML2000, in contrast, integrates support for concurrency into all aspects of the language. ML2000 has the notion of independent threads of control and support for first class synchronous operations. First class synchronous operations were first introduced in Pegasus ML [40] and were refined in Concurrent ML (CML) 41] For the most part, ML2000 follows the design of CML. It provides an event type constructor for representing synchronous values and the same set of combinators for constructing new event values from existing ones. It does, however, provide a different ....
J. H. Reppy. Synchronous operations as first-class values. In Proceedings of the 1988 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 250--259. ACM, 1988.
....race is mediated by a single lock, which is created by the sync operation and distributed to all the individual receiver clauses. It is important to distinguish the description of a choice from the running choice process that is created when sync is applied to this description. Following Reppy [Rep92, Rep88, Rep91], we call the description of a choice an event. The operation takes two events and creates a new event that, when it receives its lock, transmits it to both component events. def ( e1, e2] abs lock e1 lock e2 lock end The sync operation takes an event and triggers it with a freshly ....
....the original sender on c cannot observe when the value it sent is recieved, we may safely perform a receive, check whether we actually want the value, and resend it if not. The identifiers sync, and form part of an events library, which provides selective communication in the style of CML [Rep92, Rep88, Rep91]. 6.3 Multi State Objects For most of the examples we have considered so far, locks and choice can be used to build implementations of comparable clarity. The explicit locking idiom, being closer to the base language, is more efficient for these examples. However, the more powerful choice ....
John Reppy. Synchronous operations as first-class values. In Programming Language Design and Implementation, pages 250--259. SIGPLAN, ACM, 1988.
....[3, 7] supports type safe, first class 1 UNIX is a trademark of AT T Bell Laboratories. Hoare s monitors [22] Mesa processes [25] Modula 2 threads [9, 10, 33] CMA [17] C threads [15] Phi Phi Phi Wand s coroutines [38] POSIX threads [24] Ramsey s and Reppy s coroutines [28, 30] H H H Phi Phi Phi SML threads Figure 1: Genealogy of thread interfaces continuations with callcc and throw, and provides asynchronous exception handling facilities in the form of signal handlers [32] We have found that these extensions, along with the clean organization of the compiler and ....
....interface, including but not limited to: ffl CSP guarded commands [23] the Ada rendezvous and select [37] and variants such as Charlesworth s multiway rendezvous [14] See Section B.3 for an implementation of rendezvous and select. ffl Reppy s first class synchronous operations (events) [30]. 2 Since we use refs to implement channels, we are forced to use a weak type variable in the specification. signature CHANNEL = sig type a T val create : unit 1a T val put : a T a unit val get : a T a end functor Channel (Thread : THREAD) CHANNEL = struct datatype a T = ....
J. H. Reppy. Synchronous operations as first-class values. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 250--259, June 1988. Also published as SIGPLAN Notices, 23(7).
....type Number = AckReq Signal] def zero [n:Number] Create a proc representing 0 located at n def succ [m:Number n:Number] Create a proc representing m 1 at n def plus [m:Number n:Number o:Number] etc. Solution on page 100. 10.4 Programming with Events John Reppy [Rep92, Rep90, Rep88, Rep91, Rep95] has argued that the programming facilities offered by the pure Gammapi calculus and many related concurrent programming languages are inadequate in an important way: they provide insufficient support for abstraction in concurrent code. The main culprit is the restriction to ....
John Reppy. Synchronous operations as first-class values. In Programming Language Design and Implementation, pages 250--259. SIGPLAN, ACM, 1988.
....from a transport protocol on the CAB to a sender on the host could be done using a mailbox, but all that is really needed is a condition variable and a shared word for the value. Syncs allow a user to return a one word value to an asynchronous reader efficiently; they are similar to Reppy s events [14]. The Sync Interface The operations on syncs are Alloc, Write, Read, and Cancel. Alloc allocates a new sync. Write places a one word value in the sync data structure, and marks the sync as written. Read blocks until a sync has been written, then frees the sync and returns its value. ....
J. H. Reppy. Synchronous operations as first-class values. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 250-- 259, June 1988.
....threads and typed channels, and rendezvous communication. This distributedmemory model fits well with the mostly applicative style of SML. CML is a higher order concurrent language. Just as SML supports functions as first class values, CML supports synchronous operations as first class values [Rep88, Rep91a, Rep92] These values, called events, provide the tools for building new synchronization abstractions. This is the most significant characteristic of CML. CML provides integrated I O support. Potentially blocking I O operations, such as reading from an input stream, are full fledged ....
....dilemma. 3 First class Synchronous Operations To resolve the conflict between abstraction and selective communication requires introducing a new abstraction mechanism that preserves the synchronous nature of the abstraction. First class synchronous operations provide this abstraction mechanism [Rep88, Rep89, Rep91a] The traditional select construct has four facets: the individual I O operations, the actions associated with each operation, the nondeterministic choice, and the synchronization. In CML, we unbundle these facets by introducing a new type of values, called events, that represent ....
[Article contains additional citation context not shown here]
Reppy, J. H. Synchronous operations as first-class values. In Proceedings of the SIGPLAN'88 Conference on Programming Language Design and Implementation, June 1988, pp. 250--259.
....part addresses practical issues. It describes the use of CML in non trivial applications, describes the implementation and performance of CML on a single processor computer, and discusses issues related to the use and implementation of CML on a shared memory multiprocessor. In memory of David A. Reppy 1962 1988 Acknowledgements I would first, and foremost, like to thank my parents for all of their support and love during my never ending education. My committee members, Tim Teitelbaum, Bard Bloom and Anil Nerode, provided me with feedback on this research. I would especially like to thank Tim, my ....
....and sketches the design of a shared memory multiprocessor implementation of CML. 1.3 History The ideas in this dissertation have been evolving for several years and there have been several instantiations of them in language designs. I first developed this approach in the context of PML [Rep88] an ML like language used in the Pegasus system at AT T Bell Laboratories [RG86, GR92] I reimplemented the concurrency primitives of PML on top of SML NJ at Cornell University [Rep89] This implementation evolved into the current version of CML [Rep91a] which is described in this dissertation. ....
[Article contains additional citation context not shown here]
Reppy, J. H. Synchronous operations as first-class values. In Proceedings of the SIGPLAN'88 Conference on Programming Language Design and Implementation, June 1988, pp. 250--259.
....management of application specific complexity. This paper looks one recent application of the principle that languages should support programmer defined abstraction: first class synchronous operations. Firstclass synchronous operations were developed originally as part of the PML language design [Rep88], and were further refined in the language Concurrent ML (CML) Rep91, Rep95] They provide a mechanism for programmers to define new synchronization and communication abstractions on top of a simple collection of primitives. 1.1 Concurrent programming Concurrent programming is the task of ....
....and ease of maintenance provided by abstraction. To resolve the conflict between abstraction and selective communication requires introducing a new abstraction mechanism that preserves the synchronous nature of the abstraction. First class synchronous operations provide this abstraction mechanism [Rep88, Rep91]. The basic idea is to introduce a new type constructor, event, for typing synchronous operations, much the same way that we introduce the type constructor to type functional values. This allows us to represent synchronous operations as first class values, instead of merely as functions, which, ....
Reppy, J. H. Synchronous operations as first-class values. In Proceedings of the SIGPLAN'88 Conference on Programming Language Design and Implementation, June 1988, pp. 250--259.
....toolkit on top of a concurrent, high level foundation, one achieves a system that is simpler, safer, more uniform, and more modular. 4.1.1 Related Work CML and eXene are actually second generation systems emerging from these ideas. They follow from our earlier work with the Pegasus system [Rep86, Nor87, Rep88, Gan92], which used the PML language for its foundation. The work most closely related to Pegasus and eXene in spirit is Newsqueak [Pik89b, Pik89a] and Montage [Haa90] EXene differs in being a more fully developed system, with a higher level model of concurrency (CML events values) a richer graphics ....
....threads and typed channels, and rendezvous communication. This distributed memory model fits well with the mostly applicative style of SML. ffl CML is a higher order concurrent language. Just as SML supports functions as firstclass values, CML supports synchronous operations as first class values [Rep88, Rep91a, Rep92]. These values, called events, provide the tools for building new synchronization abstractions. This is the most significant characteristic of CML. ffl CML provides integrated I O support. Potentially blocking I O operations, such as reading from an input stream, are full fledged synchronous ....
J. H. Reppy. Synchronous operations as first-class values. In Proc. SIGPLAN'88 Conference onProgrammingLanguageDesignandImplementation, pages250--259, Atlanta, June1988. GANSNER & REPPY ACM, New York.
No context found.
J. H. Reppy. Synchronous Operations as First-Class Values. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, SIGPLAN Notices, Val 23, No. 27, page 250259. ACM Press, 1988.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC