Unikraft Releases

  • v0.8.0 Enceladus

    We are proud to announce the latest version of Unikraft, v0.8.0 (Enceladus)! In this release, we introduce many new improvements, including critical bug fixes, improved stability and new features. To summarise:

    🚀 New Features

    🐛 Bug Fixes & Improvements

    A big thank you also to all those who helped in the review process: Cristian Vijelie, Michalis Pappas, Marco Schlumpp, Simon Kuenzer, Adina Smeu, Florin Postolache, Gabi Mocanu, Sergiu Moga, Razvan Deaconescu, Stefan Jumarea, Răzvan Vîrtan, Cezar Craciunoiu, Daniel Dinca and Vlad-Andrei Badoiu.

    For more information, check out the accompanying blog post or view the full changelog.

  • v0.7.0 Mimas

    We are proud to announce the latest version of Unikraft. In this release, we introduce many new improvements, including critical bug fixes, improved stability and new features. To summarise:

    Also thank you to @razvanvirtan, @skuenzer, @mogasergiu, @razvand, @hlef, @danield20 and @farif for additional bug fixes and improvements!

    For more information, check out the accompanying blog post.

  • v0.6.0 Dione

    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;
    • OpenSynergy;
    • 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 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.
    • 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_shim layer (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.

    Find out more about the release and Unikraft by joining us on GitHub and on Discord.

  • v0.5.0 Tethys

    We are proud to announce the latest version of Unikraft. In this release, we introduce many new improvements, including critical bug fixes, improved stability and new features. To summarise:

    • Support for multiple, concurrent memory allocators
    • Support for non-executable pages on x86;
    • Support for IEEE 802.1q and IEEE 802.1ad tagged frames;
    • Access to the TSC-clock for accurate boot and system time;
    • Memory stack-protection;
    • Recursive PCI-bus enumeration;
    • Better error reporting;
    • Support for arm64 fp;
    • Automatic libc-style system call stubs;
    • Improved console I/O;
    • virtio block driver;
    • signals support
    • ANSI-colored output; …and much more!

    We have also been hard at work increasing the number of available applications and libraries supported by Unikraft, including:

    • tflite - ML for Mobile and Edge Devices
    • dnnl - Deep Neural Network Library
    • nnpack - an acceleration package for neural network computations
    • tlsf - Memory allocator real time embedded systems
    • allocregion - A simple region-based memory allocator
    • tinyalloc - A tiny allocator designed for tiny embedded systems
    • mimalloc - A general purpose allocator with excellent performance characteristics
    • nettle - A low-level cryptographic library
    • gemmlowp - Low-precision matrix multiplication
    • liblzma - A compression library with an API similar to that of zlib
    • protobuf - Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data.
    • zydis - Fast and lightweight x86/x86-64 disassembler library
    • farmhash - FarmHash provides hash functions for strings and other data
    • flatbuffers - FlatBuffers is an efficient cross platform serialization library
  • v0.4.0 Rhea

    • Cloud-based deployments (GCP, AWS, Digital Ocean)
    • Native support for many programming languages and language environments: C++, Python/Micropython, Go, Lua, Web Assembly (WAMR), JavaScript (Duktape), Ruby
    • Improvements to the ARM64 platform, including virtio and multi-thread support
    • Basic musl support
    • pthread and TLS support
    • Trace point sub-system
    • Filesystem support (9pfs, devfs, ramfs)
    • Applications: Click, SQLite, nginx, redis
    • Support for external platforms, and in particular solo5
    • Additional lib ports: uuid, http-parser, intel-intrinsics, openssl, boost, protobuf, etc.
    • Lots of other features and bug fixes
  • v0.3.1 Iapetus

    This release is a bugfix that adds support for newlib back to Unikraft. Due to changes in unikraft’s vfscore library, newlib did not properly compile against v0.3. This release fixes this problem.

    All xenbits-hosted unikraft repositories (unikraft, newlib, lwip, as well as the example applications helloworld and httpreply) at RELEASE-0.3.1 tag are compatible with each other and can be built and linked together again.

  • v0.3.0 Iapetus

    This release includes many exciting features; the biggest ones are:

    • Xenstore and Xen bus support
    • ARM32 support for Xen
    • ARM64 support for QEMU/KVM
    • X86_64 bare metal support
    • Networking support, with virtio drivers
    • A lightweight network stack (lwip)
    • Initial VFS support along with an in-RAM filesystem