Mu: A Micro-Virtual-Machine for Managed Languages

July 26th, 2016


Mu is a micro-virtual-machine targeted at managed languages and intended as a verification target.

The majority of software developers today work with 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 Mu Micro-VM project is defining, developing, evaluating, and refining the essential components of a new foundation layer for managed language implementation. In doing so, it addresses a key source of systemic inefficiency, by pioneering micro virtual machines as an efficient high-performance substrate for managed language implementation. The relationship between a micro-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 micro-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 micro-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 software and a distinctly sharper focus for language implementation research and development.

One of the goals for our Mu prototype micro-VM is that aspects of its implementation be amenable to verification. For that reason, we have adopted a minimalist design and implementation for Mu.  The Mu specification and prototype implementations can be found at


  1. 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.
  2. 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.
  3. 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.
  4. 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
DATA61_CSIRO_OnWhite_RGB ARC_stacked nsf4
ANUlogoPreferred@4x Purdue-Sig-Black-Gold-rgb UMass Wordmark Vertical (RGB-color)1500pxwide@72

The Mu project is a collaboration among Data61, The Australian National University, Purdue University, and the University of Massachusetts at Amherst, supported by Data61, the Australian Research Council, and the US National Science Foundation.