POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Systematic concurrent object-oriented programming
Communications of the ACM
Adoption and focus: practical linear types for imperative programming
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Using data groups to specify and check side effects
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
Object-Oriented Programming in Eiffel: 2nd Ed.
Object-Oriented Programming in Eiffel: 2nd Ed.
Ownership, encapsulation and the disjointness of type and effect
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
An Object-Oriented Effects System
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
StreamIt: A Language for Streaming Applications
CC '02 Proceedings of the 11th International Conference on Compiler Construction
FX-87 PERFORMANCE MEASUREMENTS: DATAFLOW IMPLEMENTATION
FX-87 PERFORMANCE MEASUREMENTS: DATAFLOW IMPLEMENTATION
SPLASH: Stanford parallel applications for shared-memory*
SPLASH: Stanford parallel applications for shared-memory*
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
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
Protecting representation with effect encapsulation
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Preliminary design of JML: a behavioral interface specification language for java
ACM SIGSOFT Software Engineering Notes
Generic ownership for generic Java
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
A capability calculus for concurrency and determinism
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Model for Java with Wildcards
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Intel threading building blocks
Intel threading building blocks
A type and effect system for deterministic parallel Java
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Inferring Method Effect Summaries for Nested Heap Regions
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Concurrent abstract predicates
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Modular reasoning for deterministic parallelism
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Safe nondeterminism in a deterministic-by-default parallel language
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The spec# programming system: an overview
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Lightweight polymorphic effects
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
The tasks with effects model for safe concurrency
Proceedings of the 18th ACM SIGPLAN symposium on Principles and practice of parallel programming
Aliasing in Object-Oriented Programming
Alias control for deterministic parallelism
Aliasing in Object-Oriented Programming
Hi-index | 0.00 |
Object-oriented frameworks can make parallel programming easier by providing generic parallel algorithms such as map, reduce, or pipeline and letting the user fill in the details with sequential code. However, such frameworks can produce incorrect behavior if they are not carefully used, e.g., if a user-supplied function performs an unsynchronized access to a global variable. We develop novel techniques that can prevent such errors. Building on a language (Deterministic Parallel Java, or DPJ) with an expressive region-based type and effect system, we show how to write a framework API that enables sound reasoning about the effects of unknown user-supplied methods. We also describe novel extensions to DPJ that enable generic types and effects while retaining soundness. We present a formal semantics and soundness properties for the language. Finally, we describe an evaluation showing that our technique can express three parallel frameworks and three realistic parallel algorithms using those frameworks.