Abstract: “In this dissertation, we study memory management strategies with an eye out for fitness to system programming.
First, we establish a framework to study memory management strategies. Often perceived as distinct categories, we argue that memory management approaches are actually part of a single design space. To this end, we establish a precise and powerful lexicon to describe memory management strategies of any kind. Using our newly established vocabulary, we further argue that this design space has not been exhaustively explored. We argue that one of the unexplored portion of this space, the static-automatic gap, contributes to the persistence of C in system programming.
Second, we develop asap: a new memory management technique that fits in the static-automatic gap. Asap is fully automatic (not even annotations are required) and makes heavy use of static analysis. At compile time it inserts, in the original program, code that deallocates memory blocks as they becomes useless. We then show how asap interacts with various, advanced language features. Specifically, we extend asap to support polymorphism and mutability.
Third, we compare asap with existing approaches. One of the points of comparison we use is the behavioural suitability to system programming. We also explore how the ideas from asap can be combined with other memory management strategies. We then show how asap handles programs satisfying the linear or region constraints. Finally, we explore the insights gained whilst developing and studying asap.”