MicroVM: Micro Virtual Machines for Managed Languages — Abstraction, contained

Research Areas: End System Security

Principal Investigator: Antony Hosking

A large fraction of today’s software is written in managed languages. These languages increase software productivity by offering rich abstractions for managing memory, executing code concurrently, and hiding the complexity of modern hardware. Examples include JavaScript, PHP, Objective-C, Java, C#, Python, and Ruby. These languages are economically important. Unfortunately, most of these languages are inefficient, imposing overheads as large as a factor of fifty compared to orthodox language choices such as C.

The project will define, develop, evaluate, and refine the essential components of a new foundation layer for managed language implementation. In doing so, it will address a key source of systemic inefficiency, by pioneering the micro virtual machine (μVM) as an efficient high-performance substrate for managed language implementation. The relationship between a μVM and existing managed language implementations is analogous to the one between an operating system micro kernel and monolithic operating systems such as Linux. A μVM captures the insight that there exists a well-defined foundation common to most modern languages that can take responsibility for fundamental abstractions over hardware, concurrency, and memory. By isolating and exposing this substrate, a μVM embodies state-of-the-art base technology available to language implementers while isolating them from the pernicious complexities of these abstractions, freeing them to focus on all-important language-specific optimizations. This project will enable more efficient, reliable, and verifiable software, and a distinctly sharper focus for language implementation research and development.

Personnel

Other PIs: Eliot Moss, UMass Amherst Steve Blackburn, Australian National University Michael Norrish, Data61

Representative Publications

  • Y. Lin, K. Wang, S. M. Blackburn, A. L. Hosking, and M. Norrish. Stop and go: Understanding yieldpoint behavior. In ACM SIGPLAN International Symposium on Memory Management, ISMM, pages 70–80, Portland, Oregon, June 2015.
    doi:
    10.1145/2754169.2754187
  • K. Wang, Y. Lin, S. M. Blackburn, M. Norrish, and A. L. Hosking. Draining the swamp: Micro virtual machines as solid foundation for language development. In T. Ball, R. Bodík, S. Krishnamurthi, B. S. Lerner, and G. Morrisett, editors, Inaugural Summit on Advances in Programming Languages, SNAPL, pages 321–336, Asilomar, California, May 2015. doi: 10.4230/LIPIcs.SNAPL.2015.321
  • Y. Lin, S. M. Blackburn, A. L. Hosking, and M. Norrish. Rust as a language for high performance GC implementation. In ACM SIGPLAN International Symposium on Memory Management, ISMM, pages 89–98, Santa Barbara, California, June 2016. doi: 10.1145/2926697.2926707
  • P. Gammie, A. L. Hosking, and K. Engelhardt. Relaxing safely: Verified on-the-fly garbage collection for x86-TSO. In ACM SIGPLAN International Conference on Programming Language Design and Implementation, PLDI, pages 99–109, Portland, Oregon, June 2015b. doi: 10.1145/2737924.2738006

Keywords: assurance, Java, JavaScript, Python, runtime systems, software systems, verification