# _ _ _ _ _
# | | | |_ __ (_) | _____ _ __ _ __ ___| |
# | | | | '_ \| | |/ / _ \ '__| '_ \ / _ \ |
# | |_| | | | | | < __/ | | | | | __/ |
# \___/|_| |_|_|_|\_\___|_| |_| |_|\___|_|
#
Up until the rise of virtualization to popularity, the concept of running a kernel for a solitary process was counterproductive and highly problematic, but now things have changed. As technology moves closer to isolating all processes in self contained virtualized environments, the unikernel is an essentially part of this developmental progression, as it provides the foundation for which truly self contained environments can be built upon.
Unikernels come in different forms; language specific unikernels, Linux compatible unikernels, and Posix compliant unikernels. The latter two are generic unikernels. A handful of language specific unikernels are available for programming languages. Rust, Ocaml, Go, ErLang, Pascal, Java, C++, NodeJS and Haskell have unikernels specifically designed to support those languages.
A table representation of available unikernel technologies as of Summer 2024.
Name | Supported Langs | Runtime Envs | Features | Active | Supported Systems |
---|---|---|---|---|---|
Kontain | Any / All | Docker | Uses Docker Build system | Yes | Not Kali :( |
UniKraft | Most | KVM Xen Linux | Kraft orchestration | Yes | Linux |
Nanos/Ops | Any / All | Qemu Xen, Amzn, ggle, hyper V | Ops Orchestration | Yes | A whole buttload |
MirageOS | OCaml only | KVM or Xen | N/A | Yes | Does it even matter? |
OSv | Most | Vbox ESXi Amzn ggle | Cloud and IoT | Yes | Linux |
IncludeOS | Mostly for C++ | KVM Vbox VMware ggle | Mothership orchestration | Yes | Linux |
Below are unikernels that may or may not be included in the above table.