To celebrate Unikraft’s 4-year “git commit birthday”, we are proud to announce the latest release: v0.6 - Dione.
Unikraft is a comprehensive toolchain and library operating system which builds highly specialized unikernels, software bundles that consist of a target application along with just the operating system primitives and libraries features it needs to run.
It’s been close to a year since our last release, and a lot of things have been happening in the Unikraft community, moving Unikraft further as a mature product for industry, research and academic use cases.
This release has over 432 new commits from more than 112 merged PRs, comprising 31,829 new lines of code (4,537 deletions), across 85 repositories (3 new external libraries), 4 new internal libraries, and with 12 new complete syscall implementations from 24 contributors!
During the past year, we’ve moved towards a fully open source project, with an open source governance system, public CI/CD integration and GitHub-supported development and planning (you can already see the plans for the next release!). The community has expanded and we’re now actively using GitHub and Discord to create, review and integrate contributions and to host meetings and talks. The community consists of active members from:
- NEC Laboratories Europe GmbH;
- University POLITEHNICA of Bucharest;
- Lancaster University,
- Karlsruhe Institute of Technology;
- University of Manchester;
- University of Liege;
- ARM China.
In order to further promote the Unikraft project to students, hobbyists, researchers, developers and professionals, we also organized the Unikraft Summer of Code USoC'21 in August/September, a 10 day hands-on workshop which provided attendees with extensive information and skills on unikernels and Unikraft. This was a consistent effort of the Unikraft community, resulting in extensive documentation and support for newcomers. A bunch of the USoC'21 attendees are now part of the extended Unikraft community and have found their work already upstream in this release!
During the same period, we published a paper on Unikraft: Fast, Specialized Unikernels the Easy Way at EuroSys'21 (and won best paper award!). Many of improvements and additional work resulting from this paper has made its way upstream into this release. The paper is open-access, so do check it out if you wish dive into more details on Unikraft internals and the reasonings for its design.
Apart from bug fixes, improvements and version updates, Unikraft Release v0.6 Dione adds core features to support its development and deployment, including:
uktest, the new unit testing framework for Unikraft. Testing of both internal and external libraries will be facilitated by
uktest, allowing you to turn on tests across all or select libraries; helping you ensure the integrity of your unikernel image before hitting
isrlib, a library for providing “interrupt-service-routine”- safe variants of standard functions so that they can be used in interrupt handlers and early boot code. This library provides an initial set of standard functions normally found with
<string.h>. The implementation is derived from
nolibcand compiled with the
|isrvariant which disables the use of extended CPU features, like vector units (e.g., SSE, AVX) and floating point units.
ubsancan catch runtime bugs such as dereferencing NULL or non-canonical addresses, certain undefined overflow errors, shifting or multiplying data which is out of bounds, and other errors.
ukcpioprovides you the ability to read CPIO files into memory, allowing for high-performance virtual in-memory filesystem for your application. You can pass a CPIO file as the initramfs to your unikernel image.
- SMP support is still on-going but with this release we introduced common SMP API for all architectures and platforms, preparing for multi-core support. The SMP API that will be backed by the actual implementation on the corresponding architecture (x86_64 and ARM).
- System call support has been extended reaching to more than 150 supported system calls via the
syscall_shimlayer (40 merged PRs in this category alone!)
- A new open-source governance system, deepening our GitHub integration which now automatically allocates reviewers and assignees to PRs. This is complemented by the CI/CD system that publicly shows results of build / run pipelines and automatically integrates approved PRs.
libsodium, an easy-to-use software library for encryption, is now part of the Unikraft ecosystem.
dafny, a library for the Dafny programming language, used for verification.
shfs, a simple (and fast!) hash filesystem implementation, used for fast cache-based storage.