We plan to design, implement, and evaluate language features for expressing deterministic parallelism in an imperative, object-oriented language for high performance that supports mutable object references and aliasing. Our language features will incorporate an effects system with explicit region annotations on object reference types and effects annotations on methods. We will build on similar systems that have been extensively studied in related contexts such as software engineering, scalar program optimization, region-based memory management, and enforcing safety properties in low-level program code.
Some sharing patterns cannot be expressed using the type system, either because allowing them
would make the type system much more complex or because they are inherently complex patterns.
In those cases, we will fall back on run-time speculation (i.e., using run-time conflict detection)
and recovery. We can borrow directly from previous work, e.g., "safe futures" for Java, but
integrating this with our type system is an interesting and open research problem.
Investigator:
Deterministic Sharing of Pointer-based Structures Information