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:
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 main()
.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 nolibc
and compiled with the |isr
variant which disables the use of extended CPU features, like vector units (e.g., SSE, AVX) and floating point units.ubsan
can 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.ukcpio
provides 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.syscall_shim
layer (40 merged PRs in this category alone!)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.Find out more about the release and Unikraft by joining us on GitHub and on Discord.
Feel free to ask questions, report issues, and meet new people.