ACM Transactions on Programming Languages and Systems (TOPLAS)
A distributed garbage collection algorithm
Proc. of a conference on Functional programming languages and computer architecture
ORBIT: an optimizing compiler for scheme
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Abstract continuations: a mathematical semantics for handling full jumps
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Mul-T: a high-performance parallel Lisp
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Speculative computation in multilisp
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Common LISP: the language (2nd ed.)
Common LISP: the language (2nd ed.)
New ideas in parallel Lisp: language design, implementations, and programming tools
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
A parallel Lisp language PaiLisp and its kernel specification
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
Proceedings of the US/Japan workshop on Parallel Lisp on Parallel Lisp: languages and systems
Indirect reference counting: a distributed garbage collection algorithm
PARLE '91 Proceedings on Parallel architectures and languages Europe : volume I: parallel architectures and algorithms: volume I: parallel architectures and algorithms
Distributed primality proving and the primality of (23539+1)/3
EUROCRYPT '90 Proceedings of the workshop on the theory and application of cryptographic techniques on Advances in cryptology
Essentials of programming languages
Essentials of programming languages
Compiling with continuations
Orca: A Language for Parallel Programming of Distributed Systems
IEEE Transactions on Software Engineering
A foundation for an efficient multi-threaded scheme system
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The derivation of distributed termination detection algorithms from garbage collection schemes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Lisp and Symbolic Computation
Continuation conscious compilation
ACM SIGPLAN Lisp Pointers
Design of a LISP-based microprocessor
Communications of the ACM
An Efficient Implementation for Coroutines
IWMM '92 Proceedings of the International Workshop on Memory Management
Implementation of Distributed Trellis
ECOOP '93 Proceedings of the 7th European Conference on Object-Oriented Programming
A Concurrent and Distributed Extension of Scheme
PARLE '92 Proceedings of the 4th International PARLE Conference on Parallel Architectures and Languages Europe
Design of a Concurrent and Distributed Language
Proceedings of the US/Japan Workshop on Parallel Symbolic Computing: Languages, Systems, and Applications
Continuation-based multiprocessing
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Design and semantics of quantum: a language to control resource consumption in distributed computing
DSL'97 Proceedings of the Conference on Domain-Specific Languages on Conference on Domain-Specific Languages (DSL), 1997
Hi-index | 0.00 |
Concurrency and distribution are topics exacerbated by the omnipresence of Internet. Although many languages address these topics, few offer a real opportunity to control and coordinate widely spread dynamic computations. This paper presents such a language and its prominent features. Besides explaining the software architecture of the implementation (based on objects and generic functions), it also presents an original coherency protocol for shared mutable variables.We first recall, in Section 1, the main features of our Scheme-based, concurrent, distributed and computation-oriented language already presented in more details and examples in [QD93].Section 2 explains how to systematically implement a concurrent and distributed interpreter for that language, using a set of program transformations combining Abstract Continuation Passing Style (ACPS) and Object-Oriented Lifting. The originality of this implementation is that it chiefly uses objects and generic functions in a style that allows to concentrate the problems related to concurrency and migration of computations into the sole discriminating behavior of generic functions. ACPS is not only used to reify continuations but also to enforce locality of computations in presence of distal objects.In Section 3, we propose a new (to our knowledge) protocol to manage shared mutable variables. This protocol enhances [MSRN92], does not require atomic broadcast, tolerates short communication breakdowns and uses bounded circular clocks. This result comes from the use of a distributed GC (which allows us to maintain an approximation of Global Virtual Time) and from the exploitation of causality as stated by continuations. To give a continuation a value (and a store) clearly expresses that the computations that are present in the continuation causally depend on the invoker of the continuation. Finally the computation-orientation of our language and mainly the ability to control groups of threads, concurrently running on multiple sites for the completion of the evaluation of a single expression, is shortly sketched in Section 4.As usual, related works and conclusions end this paper.