CORDIS - Risultati della ricerca dell’UE
CORDIS

Programming Abstractions for Applications in Cloud Environments

Final Report Summary - PACE (Programming Abstractions for Applications in Cloud Environments)

The goal of the project “Programming Abstractions for Applications in Cloud Environments” (PACE) was to develop programming abstractions for reactive data intensive (RDI) applications, covering a wide range of domains including intelligent user interfaces, correlating and responding to user’s inputs/gestures, realtime Web applications, correlating and reacting to messages from other hosts, realtime business IT systems, correlating and responding to business changes/events, social network applications, correlating and reacting to user content, IoT systems, correlating and reacting to sensor data, etc. RDI applications have the potential to radically innovate the economy and the society, but are challenging to develop and maintain. PACE addresses this challenge by providing (a) programming abstractions for realtime reactivity and event/data aggregations, and (b) module concepts for deploying RDI applications on cloud/edge/mobile platforms.
A key result of PACE is REScala, a programing language with native support for self-updating computations (SUCs), whose results are automatically updated as their inputs change. Inputs may be (a) imperatively changing values, composed in SUCs via arbitrary expressions, including relational queries over data collections (b) events triggered by external stimuli, first-class values correlated in SUC via declarative event correlations, or (c) other SUCs. A REScala application is a dynamic graph with SUCs as nodes and data-flow dependencies between SUCs as edges through which changes of values or arrival of events automatically propagate, reminiscent to a spreadsheet computation. REScala brings SUCs to distributed applications - beyond automating consistent change propagation its runtime also manages distribution, concurrency, and fault-tolerance. REScala supports tier-less programming resulting in a programming model that is streamlined across different tiers of distributed systems, thus tremendously facilitating application development, while increasing application robustness and correctness. PACE also developed a unified model for semantic variants of event/data correlations beyond those supported by reactive programming, including stream-relational algebra, complex event processing, and concurrent programming styles, currently provided as separated technology silos. Our model reduces native correlation support to a minimal kernel and adds principled support for programmable semantics extensibility, so that different semantics are provided as composable, modular, and open-ended libraries. The integration of versatile correlation semantics will tremendously increase REScala’s expressivity and turn it to a workbench for programming technology covering arbitrary many RDI application domains on demand.
Another part of PACE investigated module and interface concepts for flexible deployment of RDI applications on cloud/mobile/edge platforms with the goal of maximizing decoupling and supporting incremental dynamic changes in the composition of RDI application components. The work covered different aspects such as parameterized first-class modules with event-driven interaction interfaces, incremental build systems, as well as new kinds of type systems that support modularized incremental type checking. Related to the latter aspect, PACE also developed novel ways of designing and specifying type systems for RDI applications that support automated proofs of their properties.