Type-parameterized actors and their supervision
The robustness of actor-based concurrent applications can be improved upon by (i) employing failure recovery mechanisms such as the supervision principle, or (ii) using typed messages to prevent ill-typed communication. This thesis explores to what extent the supervision principle can work with typed messages. This thesis evaluates the hypothesis by building a new library called TAkka in the Scala language on top of the existing Akka library, where Akka provides supervised actors and TAkka adds typed messaging. The TAkka library mixes static and dynamic type checking to make sure that dynamically typed distributed resources and statically typed local resources have consistent types. Our notion of typed actor can publish itself as different types when used by different parties so that messages of unexpected types are prevented at the senders’ side. In TAkka, messages for supervision purposes are treated in a special way so that a supervisor can interact with child actors of different types. This thesis evaluates the TAkka library by porting 23 small and medium sized Akka applications to their TAkka equivalents. Results show that Akka programs can be gradually upgraded to TAkka equivalents with minimal runtime and code size overheads. Finally, TAkka includes two auxiliary libraries for reliability assessment. This thesis confirms that the supervision principle and typed messages can be merged in an actor library for building real world applications.