Project: The Complexity of Modern Runtimes

Project: The Complexity of Modern Runtimes

Overview

Widely-used performance-critical runtimes such as OpenJDK (Java) and V8 (JavaScript) are notoriously complex. The complexity of the code raises lots of questions. These include the level of complexity, and how that complexity affects: the cost of maintaining it, the security of the code, and the ability to innovate. Fortunately both OpenJDK and V8 are open source so their code is available to analyze. Furthermore, they have been open for some time, so it will be possible to analyze some of how the complexity of the code base has changed over time.

This project will explore code complexity of OpenJDK and/or V8 and from that try to draw insights into the construction of high-performance, production-quality runtimes. The analysis will use the publicly available code bases and software engineering tools to analyze code complexity. The analysis may include how the projects have changed over time, how the projects compare with each other, how different elements of the runtime (eg compiler or garbage collector) compares, etc. The project may possibly compare changes in complexity with changes in performance over time.

Ideally the project would give some insight into the extent to which the complexity in these VM is accidental and which is essential (a distinction made by Fred Brooks). Common wisdom among developers is that these runtimes are complex because they are “hard”, however it is not clear how much of the complexity is truly essential to the problems being solved.

Themes

  • Runtime Systems
  • Software Engineering

Requirements

  • Coding This project will require very little coding, aside from scripting, which may be done using python or another suitable scripting language.

  • Analysis The heart of this project will be analysis. It will involve identifying and then using the appropriate tools to calculate complexity metrics and then performing analysis of those metrics.

Project Length

This project is quite open ended. An initial project could readily be completed in one semester half time.

Project Outputs

The project will hopefully lead to a publishable software engineering paper, possibly at VEE, or for a larger, deeper take on the project, at ICSE. Ideally the project would also help identify how complexity could be tamed, ideally via tooling that identifies issues before they are become part of the code base.

References