Our Mirage prototype produces unikernels by compiling and linking
OCaml code into a bootable Xen VM image. We implement
all but the lowest-level features in OCaml and, to assist developers
testing and debugging their code, provide the ability to produce
POSIX binaries that run Mirage services on UNIX, as well as Xen
VM images. We now discuss some of the key design decisions and
components of Mirage: use of OCaml the PVBoot library
that initialises a basic environment, a modified language runtime
library for heap management and concurrency and its
type-safe device drivers and I/O stack