Aspect-oriented language for reactive distributed applications at the edge

This paper presents EdgeC, a new language for programming reactive distributed applications. It enables separation of concerns between expressing behavior and controlling distributed aspects, inspired by aspect-oriented language design. In EdgeC, developers express functionality with sequential behaviors, and data allocation, reactivity, consistency, and underlying network with orthogonal specifications. Through such separation, EdgeC allows developers to change functionality and control the shape of resulting distributed behaviors without cross-cutting code, simplifying deployment to the edge. Developers can reason about and test their applications as sequential executions, whilst EdgeC automatically synthesizes low-level distributed code. It handles, with the help of the EdgeC run-time, allocation, communication, concurrency, and coordination, across the specified, potentially non-uniform, network model. We introduce the main features of EdgeC, present the new compiler design, its prototype implementation, the resulting performance, and discuss the potential of the approach for simplifying development of reactive applications over nonuniform networks and achieving performance gains, compared to existing approaches.