MULTILISP: a language for concurrent symbolic computation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Promises: linguistic support for efficient asynchronous procedure calls in distributed systems
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Mul-T: a high-performance parallel Lisp
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Lazy task creation: a technique for increasing the granularity of parallel programs
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
On-the-fly detection of data races for programs with nested fork-join parallelism
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Object fault handling for persistent programming languages: a performance evaluation
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
SIGMOD '93 Proceedings of the 1993 ACM SIGMOD international conference on Management of data
A status report on the OO7 OODBMS benchmarking effort
OOPSLA '94 Proceedings of the ninth annual conference on Object-oriented programming systems, language, and applications
The semantics of future and its use in program optimization
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Eraser: a dynamic data race detector for multithreaded programs
ACM Transactions on Computer Systems (TOCS)
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Ownership types for flexible alias protection
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Revised5 report on the algorithmic language scheme
ACM SIGPLAN Notices
The Jalapeño dynamic optimizing compiler for Java
JAVA '99 Proceedings of the ACM 1999 conference on Java Grande
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Escape analysis for object-oriented languages: application to Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Removing unnecessary synchronization in Java
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-based race detection for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Efficient and precise datarace detection for multithreaded object-oriented programs
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
A parallel java grande benchmark suite
Proceedings of the 2001 ACM/IEEE conference on Supercomputing
Ownership types for safe programming: preventing data races and deadlocks
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Transactional lock-free execution of lock-based programs
Proceedings of the 10th international conference on Architectural support for programming languages and operating systems
Lock-Free Garbage Collection for Multiprocessors
IEEE Transactions on Parallel and Distributed Systems
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
Comprehensive synchronization elimination for Java
Science of Computer Programming - Special issue on static analysis (SAS'99)
Static conflict analysis for multi-threaded object-oriented programs
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Hybrid dynamic data race detection
Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming
Software transactional memory for dynamic-sized data structures
Proceedings of the twenty-second annual symposium on Principles of distributed computing
PARATRAN: A TRANSPARENT, TRANSACTION BASED RUNTIME MECHANISM FOR PARALLEL EXECUTION OF SCHEME
PARATRAN: A TRANSPARENT, TRANSACTION BASED RUNTIME MECHANISM FOR PARALLEL EXECUTION OF SCHEME
Language support for lightweight transactions
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Atomizer: a dynamic atomicity checker for multithreaded programs
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The semantics of future and an application
Journal of Functional Programming
Transparent proxies for java futures
OOPSLA '04 Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
SableSpMT: a software framework for analysing speculative multithreading in Java
PASTE '05 Proceedings of the 6th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Stabilizers: a modular checkpointing abstraction for concurrent functional programs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
User-level transactional programming in Haskell
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Implicit parallelism with ordered transactions
Proceedings of the 12th ACM SIGPLAN symposium on Principles and practice of parallel programming
Software behavior oriented parallelization
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Modular Checkpointing for Atomicity
Electronic Notes in Theoretical Computer Science (ENTCS)
Supporting exception handling for futures in Java
Proceedings of the 5th international symposium on Principles and practice of programming in Java
Software speculative multithreading for Java
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
Semantics of transactional memory and automatic mutual exclusion
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Quasi-static scheduling for safe futures
Proceedings of the 13th ACM SIGPLAN Symposium on Principles and practice of parallel programming
Software thread-level speculation: an optimistic library implementation
Proceedings of the 1st international workshop on Multicore software engineering
As-if-serial exception handling semantics for Java futures
Science of Computer Programming
Alchemist: A Transparent Dependence Distance Profiling Infrastructure
Proceedings of the 7th annual IEEE/ACM International Symposium on Code Generation and Optimization
COORDINATION '09 Proceedings of the 11th International Conference on Coordination Models and Languages
A lightweight in-place implementation for software thread-level speculation
Proceedings of the twenty-first annual symposium on Parallelism in algorithms and architectures
Grace: safe multithreaded programming for C/C++
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
A type and effect system for deterministic parallel Java
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
The design of a task parallel library
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Dynamic Classes: Modular Asynchronous Evolution of Distributed Concurrent Objects
FM '09 Proceedings of the 2nd World Congress on Formal Methods
A complete guide to the future
ESOP'07 Proceedings of the 16th European conference on Programming
Variant-based competitive parallel execution of sequential programs
Proceedings of the 7th ACM international conference on Computing frontiers
Safe programmable speculative parallelism
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Asynchronous Components with Futures: Semantics and Proofs in Isabelle/HOL
Electronic Notes in Theoretical Computer Science (ENTCS)
Lightweight checkpointing for concurrent ml
Journal of Functional Programming
Parallel programming must be deterministic by default
HotPar'09 Proceedings of the First USENIX conference on Hot topics in parallelism
Implicit invocation meets safe, implicit concurrency
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Concurrent programming with revisions and isolation types
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Concurrency by modularity: design patterns, a case in point
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Building scalable software systems in the multicore era
Proceedings of the FSE/SDP workshop on Future of software engineering research
Semantics of transactional memory and automatic mutual exclusion
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Dynamic resource reallocation between deployment components
ICFEM'10 Proceedings of the 12th international conference on Formal engineering methods and software engineering
OoOJava: software out-of-order execution
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
Two examples of parallel programming without concurrency constructs (PP-CC)
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
Validating timed models of deployment components with parametric concurrency
FoVeOOS'10 Proceedings of the 2010 international conference on Formal verification of object-oriented software
Semantics of concurrent revisions
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
Models of Rate Restricted Communication for Concurrent Objects
Electronic Notes in Theoretical Computer Science (ENTCS)
Simulating concurrent behaviors with worst-case cost bounds
FM'11 Proceedings of the 17th international conference on Formal methods
First class futures: specification and implementation of update strategies
Euro-Par 2010 Proceedings of the 2010 conference on Parallel processing
Safe parallel programming using dynamic dependence hints
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Sprint: speculative prefetching of remote data
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Proceedings of the compilation of the co-located workshops on DSM'11, TMC'11, AGERE!'11, AOOPES'11, NEAT'11, & VMIL'11
DOJ: dynamically parallelizing object-oriented programs
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
Fastpath speculative parallelization
LCPC'09 Proceedings of the 22nd international conference on Languages and Compilers for Parallel Computing
Dependence analysis for safe futures
Science of Computer Programming
A proof system for a PGAS language
Concurrency, Compositionality, and Correctness
Concurrency, Compositionality, and Correctness
A theory of speculative computation
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
ABS: a core language for abstract behavioral specification
FMCO'10 Proceedings of the 9th international conference on Formal Methods for Components and Objects
Delegation and nesting in best-effort hardware transactional memory
Proceedings of the twenty-fourth annual ACM symposium on Parallelism in algorithms and architectures
Isolating determinism in multi-threaded programs
RV'11 Proceedings of the Second international conference on Runtime verification
Parallel closures: a new twist on an old idea
HotPar'12 Proceedings of the 4th USENIX conference on Hot Topics in Parallelism
A formal model of user-defined resources in resource-restricted deployment scenarios
FoVeOOS'11 Proceedings of the 2011 international conference on Formal Verification of Object-Oriented Software
Proof-Directed Parallelization Synthesis by Separation Logic
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
A future is a simple and elegant abstraction that allows concurrency to be expressed often through a relatively small rewrite of a sequential program. In the absence of side-effects, futures serve as benign annotations that mark potentially concurrent regions of code. Unfortunately, when computation relies heavily on mutation as is the case in Java, its meaning is less clear, and much of its intended simplicity lost.This paper explores the definition and implementation of safe futures for Java. One can think of safe futures as truly transparent annotations on method calls, which designate opportunities for concurrency. Serial programs can be made concurrent simply by replacing standard method calls with future invocations. Most significantly, even though some parts of the program are executed concurrently and may indeed operate on shared data, the semblance of serial execution is nonetheless preserved. Thus, program reasoning is simplified since data dependencies present in a sequential program are not violated in a version augmented with safe futures.Besides presenting a programming model and API for safe futures, we formalize the safety conditions that must be satisfied to ensure equivalence between a sequential Java program and its future-annotated counterpart. A detailed implementation study is also provided. Our implementation exploits techniques such as object versioning and task revocation to guarantee necessary safety conditions. We also present an extensive experimental evaluation of our implementation to quantify overheads and limitations. Our experiments indicate that for programs with modest mutation rates on shared data, applications can use futures to profitably exploit parallelism, without sacrificing safety.