Documentation
Mirage is still under heavy development, and so there is no detailed documentation available. However, if you are keen to hack, you can read the INSTALL file and give it a shot.
Feedback and questions are always welcome via e-mail to mirage at recoil.org or occasionally catch us on #mirage on FreeNode IRC.
The best way to wait for a release is to watch the project on GitHub.
This page lists any publications, technical reports and related work to Mirage. If you know of any work that should be listed here, please contact us.
Publications
Unikernels: library operating systems for the cloud
Anil Madhavapeddy, Richard Mortier, Charalampos Rotsos, David Scott, Balraj Singh, Thomas Gazagnaire, Steven Smith, Steven Hand and Jon Crowcroft. Proceedings of the 18th International Conference on Architectural Support for Programming Languages and Operating Systems ASPLOS '13, April, 2013
We present unikernels, a new approach to deploying cloud services via applications written in high-level source code. Unikernels are single-purpose appliances that are compile-time specialised into standalone kernels, and sealed against modification when deployed to a cloud platform. In return they offer significant reduction in image sizes, improved efficiency and security, and should reduce operational costs. Our Mirage prototype compiles OCaml code into unikernels that run on commodity clouds and offer an order of magnitude reduction in code size without significant performance penalty. The architecture combines static type-safety with a single address-space layout that can be made immutable via a hypervisor extension. Mirage contributes a suite of type-safe protocol libraries, and our results demonstrate that the hypervisor is a platform that overcomes the hardware compatibility issues that have made past library operating systems impractical to deploy in the real-world.
Turning down the LAMP: Software Specialisation for the Cloud
Anil Madhavapeddy, Richard Mortier, Ripduman Sohan, Thomas Gazagnaire, Steven Hand, Tim Deegan, Derek McAuley and Jon Crowcroft. 2nd USENIX Workshop on Hot Topics in Cloud Computing HotCloud '10, June 2010
This paper positions work on the Xen backend for Mirage. It is a decent summary of the idea, although some details such as the filesystem extension are likely to be significantly different in the first release.
Multiscale not Multicore: Efficient Heterogeneous Cloud Computing
Anil Madhavapeddy, Richard Mortier, Jon Crowcroft and Steven Hand. ACM/BCS Visions of Computer Science, April 2010
This is a vision paper that lays out the broader background to the project, including some of the problem areas we are tackling in social networking and scientific computing. The first half is a good introduction to the area, but read the later HotCloud paper instead of the technical second half.
Statically-typed value persistence for ML
Thomas Gazagnaire and Anil Madhavapeddy. Workshop on Generative Technologies, April 2010
This paper defines the [dyntype](http://github.com/mirage/dyntype) dynamic typing extension we developed for OCaml, and the SQL mapper that converts ML values directly into SQL calls. The approach is useful as it is purely meta-programming instead of compiler patching, and thus much easier to integrate with other OCaml code. There is an extended journal paper currently under review; please contact the authors if you wish to read it.
Combining Static Model Checking with Dynamic Enforcement using the Statecall Policy Language
Anil Madhavapeddy. International Conference on Formal Engineering Methods ICFEM, December 2009.
A small domain-specific language which compiles to both PROMELA (for static model checking) and OCaml (for dynamic enforcement) of state machines. This paper defines the DSL and an example against an SSH server written in pure OCaml.
Melange: Towards a "functional" Internet
Anil Madhavapeddy, Alex Ho, Tim Deegan, David Scott and Ripduman Sohan. EuroSys 2007, March 2007.
The original paper that formed the basis of Mirage. We define MPL, a DSL to express bi-directional packet descriptions and compile them into efficient, type-safe OCaml code. Performance is tested for DNS and SSH servers written in OCaml versus their C counterparts (BIND and OpenSSH).
Related Work
Tim Deegan. PhD Thesis, University of Cambridge, 2006.
This thesis describes the Main Name System, an approach to centralising DNS for improved reliability. The source code for the Mirage DNS library is based directly off the data structures described in this thesis.
