Executing code in the past: efficient in-memory object graph versioning

  • Authors:
  • Frédéric Pluquet;Stefan Langerman;Roel Wuyts

  • Affiliations:
  • Université Libre de Bruxelles, Brussels, Belgium;Université Libre de Bruxelles, Brussels, Belgium;IMEC and Katholieke Universiteit Leuven, Leuven, Belgium

  • Venue:
  • Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
  • Year:
  • 2009
  • Usable live programming

    Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software

Quantified Score

Hi-index 0.00

Visualization

Abstract

Object versioning refers to how an application can have access to previous states of its objects. Implementing this mechanism is hard because it needs to be efficient in space and time, and well integrated with the programming language. This paper presents HistOOry, an object versioning system that uses an efficient data structure to store and retrieve past states. It needs only three primitives, and existing code does not need to be modified to be versioned. It provides fine-grained control over what parts of objects are versioned and when. It stores all states, past and present, in memory. Code can be executed in the past of the system and will see the complete system at that point in time. We have implemented our model in Smalltalk and used it for three applications that need versioning: checked postconditions, stateful execution tracing and a planar point location implementation. Benchmarks are provided to asses the practical complexity of our implementation.