MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Programming parallel algorithms
Communications of the ACM
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
A constructive logic for services and information flow in computer networks
The Computer Journal
Implicit parallel programming in pH
Implicit parallel programming in pH
The m-calculus: a higher-order distributed process calculus
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
Proceedings of the 15th Conference on Foundations of Software Technology and Theoretical Computer Science
An Asynchronous Model of Locality, Failurem and Process Mobility
COORDINATION '97 Proceedings of the Second International Conference on Coordination Languages and Models
Safe Dynamic Binding in the Join Calculus
TCS '02 Proceedings of the IFIP 17th World Computer Congress - TC1 Stream / 2nd IFIP International Conference on Theoretical Computer Science: Foundations of Information Technology in the Era of Networking and Mobile Computing
TCS '02 Proceedings of the IFIP 17th World Computer Congress - TC1 Stream / 2nd IFIP International Conference on Theoretical Computer Science: Foundations of Information Technology in the Era of Networking and Mobile Computing
The incremental garbage collection of processes
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
A judgmental reconstruction of modal logic
Mathematical Structures in Computer Science
A Symmetric Modal Lambda Calculus for Distributed Computing
LICS '04 Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science
Natural Deduction for Hybrid Logic
Journal of Logic and Computation
X10: an object-oriented approach to non-uniform cluster computing
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Parallel Programmer Productivity: A Case Study of Novice Parallel Programmers
SC '05 Proceedings of the 2005 ACM/IEEE conference on Supercomputing
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Manticore: a heterogeneous parallel language
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Type-safe higher-order channels in ML-like languages
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Type-safe distributed programming with ML5
TGC'07 Proceedings of the 3rd conference on Trustworthy global computing
A modal language for the safety of mobile values
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Hi-index | 0.00 |
As a means of transmitting not only data but also code encapsulated within functions, higher-order channels provide an advanced form of task parallelism in parallel computations. In the presence of mutable references, however, they pose a safety problem because references may be transmitted to remote threads where they are no longer valid. This paper presents an ML-like parallel language with type-safe higher-order channels. By type safety, we mean that no value written to a channel contains references, or equivalently, that no reference escapes via a channel from the thread where it is created. The type system uses a typing judgment that is capable of deciding whether the value to which a term evaluates contains references or not. The use of such a typing judgment also makes it easy to achieve another desirable feature of channels, channel locality, that associates every channel with a unique thread for serving all values addressed to it. Our type system permits mutable references in sequential computations and also ensures that mutable references never interfere with parallel computations. Thus, it provides both flexibility in sequential programming and ease of implementing parallel computations.