Projects • 


Full Title
Resource Aware Programming

The Karlskrona manifesto has raised awareness for the sustainability of the Software Development Process [Becker2015]. Developers should be conscious of the sustainable impact of their decisions at every stage of the software development lifecycle. One major concern regarding sustainability is energy-consumption. It is expected that by 2025 computing and communication will account for 20% of the global energy usage [Fonseca2017]. Energy efficiency is important for users both at the macro and micro scale. Data-centers account for 3% of global emissions and represent a substantial running cost for online service providers. When evaluating new server purchases, the monthly energy cost is nowadays more important than the equipment’s upfront cost. On the micro-scale, users are concerned about the battery life of their computers, tablets, phones and wearables. The Manifesto for Energy-Aware Software [Fonseca2017] contends that software developers must become energy-aware during all phases of software development. Furthermore, developers should be equipped with the necessary training and tools. A thorough survey on the status of energy-efficiency in software development [Pinto2017] concludes that most performance estimation tools focus on low-level rather than high-level programming at which application developers work. Software refactoring techniques and tools to detect and automatically fix energy inefficiencies with a direct impact on energy-consumption have been proposed in the past. However, these tools apply mostly to mobile application development, an area that directly impacts end users. The survey also concludes that there is a clear lack of knowledge in writing, maintaining, and evolving energy-efficient software systems. RAP will explore the integration of energy-cost models in programming languages and, more importantly, in code editors. We put forward a modular type-based approach (inspired by [Cohen2012][Zhu2015][Gastel2016][Canino2017]), allowing the programmer to obtain immediate feedback on the resource consumption of a given section of code (for instance, by hovering the mouse over the section). Moreover, the proposed type system will add support for probabilistic models since the energy consumption of high-level programs is not constant due to various factors like Operating System scheduler overheads, garbage collection, just-in-time compilation. However, users will not be required to annotate the cost model of functions manually because we will automatically infer the cost-model of standard library functions based on measurements from executions with random inputs. Finally, we will build an editor tool that can display the inferred cost model to the user in real-time. We believe this direct feedback to be more educational and successful at creating awareness than other approaches that concentrate on the testing phase of software development. Creating awareness will lead to the detection of patterns and anti-patterns that can significantly impact energy consumption. RAP shall raise energy-awareness among software developers and design energy-efficient applications by developing a programming language and editor tool that infers energy consumption from basic blocks, considers the non-deterministic nature of energy consumption, expresses energy-efficient design patterns via high-order generic programming features, and is usable from the programmers perspective. The team is highly qualified to pursue the objectives of RAP. The PI has a large experience in the field of resource-aware computation. The team has authored many recent papers on topics that RAP will further explore; its members regularly publish at top venues, including TCS, I&C, POPL, ICFP, OOPSLA, IJCAI, TOPLAS, PPSN. Furthermore, team members have gathered a large experience in developing compilers and tools for software development (,,,,,,

Funding Entity
Start Date
End Date
Principal Investigator at LASIGE
Alcides Fonseca
Team at LASIGE