I-structures: data structures for parallel computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
CML: A higher concurrent language
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
A multi-threaded higher-order user interface toolkit
User interface software
Higher-order concurrent programs with finite communication topology (extended abstract)
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Analyzing stores and references in a parallel symbolic language
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Analyzing the communication topology of concurrent programs
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Partial-evaluation techniques for concurrent programs
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
The design of a class mechanism for Moby
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Control flow analysis: a functional languages compilation paradigm
SAC '95 Proceedings of the 1995 ACM symposium on Applied computing
Concurrent programming in ML
Communicating sequential processes
Communications of the ACM
Events in Haskell, and how to implement them
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
The Definition of Standard ML
Data flow analysis of communicating processes
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
An Algorithm for Analyzing Communicating Processes
Proceedings of the 7th International Conference on Mathematical Foundations of Programming Semantics
Communication Topology Analysis for Concurrent Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
A Type-Based Algorithm for the Control-Flow Analysis of Higher-Order Concurrent Programs
IFL '96 Selected Papers from the 8th International Workshop on Implementation of Functional Languages
Protium, an Infrastructure for Partitioned Applications
HOTOS '01 Proceedings of the Eighth Workshop on Hot Topics in Operating Systems
Protocols for Non-Deterministic Communication over Synchronous Channels
IPPS '98 Proceedings of the 12th. International Parallel Processing Symposium on International Parallel Processing Symposium
Kill-safe synchronization abstractions
Proceedings of the ACM SIGPLAN 2004 conference on Programming language design and implementation
Type-sensitive control-flow analysis
Proceedings of the 2006 workshop on ML
Message analysis for concurrent languages
SAS'03 Proceedings of the 10th international conference on Static analysis
Manticore: a heterogeneous parallel language
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Status report: the manticore project
ML '07 Proceedings of the 2007 workshop on Workshop on ML
Proceedings of the conference on Design, automation and test in Europe
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
A scheduling framework for general-purpose parallel languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Compile-Time Analysis and Specialization of Clocks in Concurrent Programs
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Context-oriented programming with EventJava
International Workshop on Context-Oriented Programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
EventJava: An Extension of Java for Event Correlation
Genoa Proceedings of the 23rd European Conference on ECOOP 2009 --- Object-Oriented Programming
Thorn: robust, concurrent, extensible scripting on the JVM
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Lightweight asynchrony using parasitic threads
Proceedings of the 5th ACM SIGPLAN workshop on Declarative aspects of multicore programming
Putting events in context: aspects for event-based distributed programming
Proceedings of the tenth international conference on Aspect-oriented software development
Composable asynchronous events
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Program analysis for event-based distributed systems
Proceedings of the 5th ACM international conference on Distributed event-based system
Scalable efficient composite event detection
COORDINATION'10 Proceedings of the 12th international conference on Coordination Models and Languages
Control flow analysis for the join calculus
SAS'12 Proceedings of the 19th international conference on Static Analysis
Abstracting context in event-based software
Transactions on Aspect-Oriented Software Development IX
Proceedings of the 2nd ACM SIGPLAN workshop on Functional high-performance computing
Hi-index | 0.00 |
Concurrent ML (CML) is a statically-typed higher-order concurrent language that is embedded in Standard ML. Its most notable feature is its support for first-class synchronous operations. This mechanism allows programmers to encapsulate complicated communication and synchronization protocols as first-class abstractions, which encourages a modular style of programming where the underlying channels used to communicate with a given thread are hidden behind data and type abstraction.While CML has been in active use for well over a decade, little attention has been paid to optimizing CML programs. In this paper, we present a new program analysis for statically-typed higher-order concurrent languages that enables the compile-time specialization of communication operations. This specialization is particularly important in a multiprocessor or multicore setting, where the synchronization overhead for general-purpose operations are high. Preliminary results from a prototype that we have built demonstrate that specialized channel operations are much faster than the general-purpose operations.Our analysis technique is modular (i.e.,, it analyzes and optimizes a single unit of abstraction at a time), which plays to the modular style of many CML programs. The analysis consists of three steps: the first is a type-sensitive control-flow analysis that uses the program's type-abstractions to compute more precise results. The second is the construction of an extended control-flow graph using the results of the CFA. The last step is an iterative analysis over the graph that approximates the usage patterns of known channels. Our analysis is designed to detect special patterns of use, such as one-shot channels, fan-in channels, and fan-out channels. We have proven the safety of our analysis and state those results.