Useful Links
We coined the concept of micro virtual machines for the development of managed languages.
"Mu" is the name of our specific micro virtual machine. This project has a specification and a reference implementation which are publicly available:
- Mu Specification: canonical information
- Holstein (Mu reference implementation): a simple but slow implementation of the Mu specification in Scala
- Zebu (high performance Mu implementation): an implementation with a focus on performance (still in development)
- Mu Tutorial: a step-by-step guide
- The Micro Virtual Machine Project on ANU GitLab: this includes many sub-projects
- High-level Issue Tracker: general discussions and questions not specific to any sub-project
Overview
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 micro virtual machines as an efficient high-performance substrate for managed language implementation. The relationship between a micro virtual machine 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 virtual machine 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 virtual machine 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.
Publications
- An efficient implementation of a micro virtual machine", Ph.D. thesis, College of Engineering and Computer Science, The Australian National University, 2019. pdf url , "
- Hop, Skip, & Jump: Practical On-Stack Replacement for a Cross-Platform Language-Neutral VM", in 14th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE 2018), 2018. pdf url , "
- Micro Virtual Machines: A Solid Foundation for Managed Language Implementation", Ph.D. thesis, College of Engineering and Computer Science, The Australian National University, 2017. pdf url , "
- Rust as a Language for High Performance GC Implementation", in Proceedings of the Sixteenth ACM SIGPLAN International Symposium on Memory Management, ISMM ‘16, Santa Barbara, CA, June 13, 2016, 2016. pdf , "
- Stop and Go: Understanding Yieldpoint Behavior", in Proceedings of the Fourteenth ACM SIGPLAN International Symposium on Memory Management, ISMM ‘15, Portland, OR, June 14, 2015, 2015. pdf , "
- Draining the Swamp: Micro Virtual Machines as Solid Foundation for Language Development", in 1st Summit on Advances in Programming Languages (SNAPL 2015), 2015. pdf url , "