Programming with Futures, Lattices and Quiescence
summary
Extends Scala futures into cells and cell completers that hold elements of a lattice and accept join-based monotonic updates (multiple puts instead of single completion), adds a handler pool with onQuiescent quiescence detection to resolve cyclic dataflow, and plugs into OPAL static analysis. Applied to JDK8 (rt.jar, ~150k methods) for purity/immutability checks, yields ~15% faster runs on a small machine and roughly halves analysis code size while enabling deterministic resolution of strongly connected components via pluggable resolution policies.
AI-written summary · about
chapters (23)
- 0:00Introduction
- 1:13Programming Models
- 2:42Other Projects
- 3:31Why Concurrent Programming
- 4:14Nondeterminism
- 5:41Concurrent Set
- 7:17Deterministic Concurrent
- 8:25Restrictions
- 9:33Approach
- 12:02Reactive Programming
- 14:07Example
- 23:59Handler Pools
- 24:38Data Flow
- 26:37Data Flow Cycles
- 28:33Resolution Policies
- 30:01Lattice Purity
- 32:42Lattice Purity Analysis
- 34:41Opal Framework
- 36:02Results
- 38:16Future work
- 40:00Conclusion
- 45:11Phases
- 47:29Quiet
related talks
52mNew Concurrency Utilities in Java 8
44mConcurrency in Scala and on the JVM
42mBuilding Bulletproof Concurrent Applications on the JVM
32mProject Loom? Better Futures? What’s next for JVM concurrent programming
01h 05mLawful Asynchronous Programming
01h 00mProject Loom? Better Futures? What’s next for JVM concurrent programming
01h 06mProject Lambda: Simplifying Concurrent Programming in Java SE 8
48mConcurrency: It’s Harder (and Easier) Than You Think
