Lightweight Language Support for Type-Based, Concurrent Event Processing
Many concurrent applications are structured around type-based event handling. Scala provides a library for event-based actors, which allows common idioms to be expressed in a concise and intuitive way. However, innocent-looking programs can exhibit catastrophic performance under certain conditions. In this paper, the authors introduce translucent functions, a type-based refinement of Scala's pattern-matching functions. Translucent functions additionally provide the runtime types of classes that identify disjoint cases in a pattern. They show how this additional type information can be used to optimize actors as well as a form of join-style synchronization.