DocsReleasesCommunityGuidesBlog

v0.14.0 (Prometheus)

Fri Aug 18 2023

70bc0af0bd1c

View Changelog

We are proud to announce the latest version of Unikraft, v0.14.0 (Prometheus)! Along with many fixes, this release comes with a bunch of new features that are worth your attention!

Here is the full updates list:

🚀 New Features#

  • build: Darwin (macOS) support (#1034) by @skuenzer
  • .github/workflows: Introduce GitHub Actions Workflow integrations (#1012) by @nderjung
  • build: Add tree builds (#1001) by @andreittr
  • plat/kvm/arm64: Firecracker support on arm64 (#989) by @michpappas
  • plat/kvm/arm64: Implement lxboot on arm64 (#988) by @michpappas
  • lib/vfscore: Implement individual volume automounting (#979) by @mogasergiu
  • lib/uklibid: Library identifiers and SUBBUILD build system feature (#938) by @skuenzer
  • build: Allow setting flags from the environment (#957) by @mkroening
  • lib/ukstore: Introduce dynamic store API (#939) by @michpappas
  • Add the ability to build EFI ISO and DISK images. (#910) by @mogasergiu
  • Add EFI stub support (#909) by @mogasergiu
  • doc: Introduce ADOPTERS.md (#892) by @nderjung
  • Add PIE support for Xen and KVM (#772) by @mogasergiu
  • Makefile: Add flags for cross-compiler LLVM target (#685) by @mariasfiraiala
  • [lib-geos] Port upstream libgeos 3.11.2 (#1) by @andreittr
  • [lib-libffi] Port upstream libffi 3.4.4 for x86_64 (#1) by @andreittr
  • [lib-fork-glibc] feat: Binary syscall bypass through VDSO (#1) by @i-Pear
  • [lib-fork-musl] feat: Binary syscall bypass through VDSO (#1) by @i-Pear
  • [lib-python-numpy] Port upstream NumPy 1.25.0 (#1) by @andreittr
  • [lib-python-shapely] Port upstream Shapely 2.0.1 (#1) by @andreittr
  • [app-elfloader] feat: Provide VDSO image and __kernel_vsyscall interface (#23) by @i-Pear
  • [catalog] Create initial version of catalog repository by @nderjung

🐛 Bug Fixes & Improvements#

  • plat/drivers/virtio: Fix virtio_9p tag read (#1059) by @zhxj9823
  • lib/posix-environ: Remove unused variable warnings (#1058) by @mogasergiu
  • plat/kvm/x86: Ensure that lxboot initrd/cmdl regions are aligned (#1057) by @mogasergiu
  • plat/kvm/arm: Use length when clean/invalidating cache in KVM entry (#1056) by @mogasergiu
  • build: Adjust fixdep to the changed config.h location (#1055) by @mschlumpp
  • lib/posix-environ: Ensure that compiled-in strings are writable (#1054) by @mogasergiu
  • plat/kvm/arm: Fix default choice in arm64 VMM menu (#1053) by @michpappas
  • plat/kvm: Check return code of all memory region inserting methods (#1052) by @mogasergiu
  • plat/common: Increase granularity of hardcoded legacy high memory (#1051) by @mogasergiu
  • plat/common: Align TLS sections to PAGE_SIZE (#1050) by @mogasergiu
  • plat/kvm/arm: Rework early cache clean & invalidate (#1049) by @michpappas
  • plat/kvm: Enable 8250 / NS16550 for Firecracker on arm64 (#1048) by @michpappas
  • plat/kvm: Align the bootstack base address (#1047) by @michpappas
  • plat/common: Add BIOS system memory in legacy high memory region (#1046) by @mogasergiu
  • plat/kvm/x86: Enable relocation for Firecracker PIE builds (#1045) by @mogasergiu
  • support/qemu-guest: Workaround for TCG/x86 and Unikraft paging (#1041) by @skuenzer
  • plat/kvm: Fix guest hang on UKPLAT_HALT during shutdown request (#1039) by @mogasergiu
  • plat/kvm: Add configuration hint for EFI (#1038) by @skuenzer
  • plat/common/x86: Fix libukreloc error for non-PIE SMP builds (#1037) by @mogasergiu
  • .github/workflows: Output all unikernel information and log test fails (#1035) by @craciunoiuc
  • .github/workflows: Fix missing dependency to LIBCOMPILER_RT (#1033) by @nderjung
  • lib/nolibc: Fix compiler warning for (f)scanf() prototypes (#1029) by @skuenzer
  • Makefile: Include Makefile.build from main Makefile (#1028) by @skuenzer
  • plat/common: Add support for pvpanic devices for x86 (#1022) by @craciunoiuc
  • Add ULiège to ADOPTERS.md. (#1020) by @gaulthiergain
  • plat/*: Signal shutdown cause on QEMU (#1019) by @mschlumpp
  • plat/kvm/x86: Fix build error due to missing assert.h header (#1017) by @mogasergiu
  • doc: Add EPAM Systems to the ADOPTERS.md (#1015) by @oleksiimoisieiev
  • Add The University of Manchester to ADOPTERS.md (#1013) by @olivierpierre
  • Makefile: Allow external Makefile.build and Provide GO 1.18 support (#1005) by @eduardvintila
  • lib/*: Add syscall interfaces for dotnet runtime (#1004) by @i-Pear
  • lib/nolibc: Fix & improve headers (#1002) by @andreittr
  • lib/vfscore: Fix create through broken symlink (#998) by @andreittr
  • lib/ramfs: Support setting file mode on creation (#997) by @andreittr
  • lib/ramfs: Ensure stability of inode numbers (#996) by @andreittr
  • lib/ramfs: Implement new file timestamps (#995) by @andreittr
  • lib/vfscore: Add unlinkat syscall (#994) by @andreittr
  • lib/vfscore: Correct behavior of utime(NULL) (#993) by @andreittr
  • lib/ukcpio: Fix symlinks not being extracted (#992) by @andreittr
  • lib/vfscore: Accept negative timestamps (#991) by @andreittr
  • lib/vfscore: Fix wrong application of umask (#990) by @andreittr
  • arch/x86_64: Paging code - Enclose params of function-like macros in brackets (#987) by @c7stef
  • plat/drivers: Add two configurations to ns16550 (#985) by @zhxj9823
  • plat/drivers/virtio-ring: Downgrade saturated descriptors error (#984) by @mkroening
  • build: Add compiler version checking for Clang (#983) by @andreittr
  • plat/kvm/arm: Do not enable interrupts before wfi (#980) by @kubanrob
  • lib/nolibc: scanf and fscanf functions (#977) by @RaduNichita
  • build: Silence misc warnings (#976) by @andreittr
  • Fix exporting of ntohs and also include the long versions (#974) by @haesbaert
  • plat/drivers/virtio: Fix virtio read write (#970) by @zhxj9823
  • lib/ukschedcoop: Keep track of thread execution times (#965) by @skuenzer
  • lib/*fs, lib/vfscore: Add proper dirent/dirent64 structure usage (#963) by @StefanJum
  • plat/linuxu: Add fpsimd source file to build system (#962) by @StefanJum
  • lib/vfscore: Fix behavior of writable open on directories (#953) by @andreittr
  • lib/vfscore: Fix double-lock bug in symlink (#952) by @andreittr
  • lib/vfscore: Reorder locks in *at syscalls (#951) by @andreittr
  • build: Add minumum required compiler version and fix cpu model and erratas for arm64 (#949) by @StefanJum
  • build: Use -fcf-protection for GCC >= 8 or Clang >= 7 (#944) by @Krechals
  • lib/uknetdev: Export stats via uk_store #943) by @michpappas
  • lib/ukschedcoop: Add early check for runnable thread in idle thread (#941) by @mogasergiu
  • lib/posix-sysinfo: Provide _SC_GETPW_R_SIZE_MAX (#936) by @andreittr
  • lib/9pfs: Fix create call for 9p.2000L (#934) by @StefanJum
  • lib/ukallocbuddy: Add debug freelist sanity checks (#932) by @andreittr
  • lib/ukalloc: Fix underallocation bug in malloc (#931) by @andreittr
  • lib/posix-sysinfo: Various improvements needed for OpenJDK support (#930) by @csvancea
  • lib/ukdebug: Add LVLC_THREAD macro (#929) by @StefanJum
  • lib/9pfs: Stub uk_9pfs_ioctl (#928) by @razvand
  • doc: Correct docstring format to silence warnings (#927) by @andreittr
  • arch/x86: Silence warning about incomplete switch (#926) by @andreittr
  • plat/drivers/virtio: Fix missing lcpu.h include (#925) by @andreittr
  • lib/uksignal: Use correct kernel struct sigaction (#924) by @andreittr
  • Fix schedcoop idling and x86 timer interrupts (#923) by @FedeParola
  • arch/x86: Introduce NMI event for x86 (#920) by @mschlumpp
  • Add support for setting up SMP on ARM64 through ACPI (#912) by @mogasergiu
  • Refactor the ACPI code and change its location. (#911) by @mogasergiu
  • Add ukvmem Aarch64 page fault handler (#908) by @mogasergiu
  • arch/arm/arm64: Fix stxr's used in spinlocks register size (#907) by @mogasergiu
  • Improve posix-futex debugging (#904) by @skuenzer
  • fix/eventfd: O_NONBLOCK (#903) by @skuenzer
  • lib/vfscore: Improve and fix trace point format (#899) by @mschlumpp
  • lib/ukboot: Allow disabling weak main using KConfig (#898) by @mschlumpp
  • kvm/x86: Add pristine ECTX check (#897) by @mschlumpp
  • Integrate ukplat_memregion into Xen x86, AArch64 KVM and linuxu (#848) by @mogasergiu
  • [lib-compiler-rt] Makefile.uk: Remove redundant check for libunwind (#19) by @andreittr
  • [lib-compiler-rt] Split off functionality that relies on libm (#18) by @andreittr
  • [lib-compiler-rt] Build: Split off functionality that depends on libunwind (#14) by @andreittr
  • [lib-googletest] Update to upstream 1.13.0 (#2) by @andreittr
  • [lib-intel-intrinsics] Add compatibility with GCC <= 11.2 & Clang 10 (#4) by @andreittr
  • [lib-intel-intrinsics] Rework of x86 intrinsics support (#3) by @andreittr
  • [lib-libcxx] Makefile.uk: Add minimum compiler version check (#33) by @andreittr
  • [lib-libgo] Upgrade Go to 1.18 (#7) by @eduardvintila
  • [lib-libuuid] Makefile.uk: Fix subdirectory make rule (#5) by @StefanJum
  • [lib-libuuid] Correct libc dependency (#4) by @andreittr
  • [lib-lua] patches: Remove outdated patch (#8) by @StefanJum
  • [lib-lua] Change newlib dependency with musl (#7) by @JADarius
  • [lib-lwip] Makefile.uk: Silence macro redefinition warnings (#38) by @andreittr
  • [lib-musl] Makefile.uk.musl.misc: Add missing ar.h (#72) by @marcrittinghaus
  • [lib-musl] Makefile.uk.musl.exit: Patch for building on case insensitive file systems (#70) by @Starnox
  • [lib-musl] Config.uk: Add uksignal dependency for LIBMUSL_SIGNAL (#68) by @eduardvintila
  • [lib-musl] patches: Add syscall function prototype (#67) by @eduardvintila
  • [lib-musl] Makefile.uk: Include missing gettid implementation (#65) by @andreittr
  • [lib-musl] Makefile.uk: Include missing cpow* functions (#64) by @andreittr
  • [lib-musl] patches: Delete patching of ioctl call in isatty (#62) by @mogasergiu
  • [lib-musl] Makefile.uk: Silence warnings (#61) by @andreittr
  • [lib-musl] Initialize main thread pthread structure (#59) by @alexhoppus
  • [lib-musl] Include missing parts of the string library (#55) by @andreittr
  • [lib-musl] Makefile.uk: Condition behavior on Kconfig (#54) by @andreittr
  • [lib-musl] glue: Init libc.auxv to point to a zero value (#53) by @StefanJum
  • [lib-musl] Allow deselection of ukmmap (#52) by @marcrittinghaus
  • [lib-musl] Makefile.uk: Fix gcc specific warnings (#51) by @mbrdg
  • [lib-newlib] Makefile.uk: Call tcb reserve conditionally (#35) by @razvand
  • [lib-openssl] Add patch to remove include of >linux/mman.h< (#5) by @andreittr
  • [lib-python3] Add support for the Shapely extension (#17) by @andreittr
  • [lib-python3] Add support for NumPy (#16) by @andreittr
  • [lib-python3] Update to upstream Python 3.10.11 (#15) by @andreittr
  • [lib-python3] Makefile.uk: Allow configuring with custom config file (#13) by @StefanJum
  • [lib-python3] include/pyconfig.h: Define SIZEOF_PHTREAD_T based on chosen libc (#12) by @eduardvintila
  • [lib-redis] Redis 7.0.11 (#10) by @John-Ted
  • [lib-sqlite] Config.uk: Fix dependency issues & defaults (#6) by @andreittr
  • [lib-wamr] lib/lib-wamr: Move to musl and address compiler errors (#8) by @R0mbertus
  • [app-redis] Update configurations and instructions (#18) by @razvand
  • [app-elfloader] Add missing uk/config.h (#25) by @marcrittinghaus
  • [app-elfloader] Add default configuration file (#22) by @StefanJum
  • [app-elfloader] Readme: Add Hint about duplicate symbols (#21) by @mkroening
  • [app-elfloader] Config.uk: Fix paging configuration typo (#18) by @costinsin
  • [app-helloworld] README.md: Add $ in commands (#21) by @StefanJum
  • [app-helloworld] feat(devcontainer): Add devcontainer for codespaces (#20) by @craciunoiuc
  • [app-helloworld] Add Makefile, configuration files and scripts (#19) by @StefanJum
  • [app-helloworld] Update platform name according to 0.13 release (#17) by @Krechals
  • [app-helloworld-cpp] Add configuration and scripts (#16) by @razvand
  • [app-helloworld-cpp] Update platform to qemu for all targets (#13) by @gabrielmocanu
  • [app-helloworld-go] Add Makefile and update Makefile.uk (#9) by @eduardvintila
  • [app-httpreply] Update platform to qemu for all targets (#16) by @gabrielmocanu
  • [app-httpreply] Update README.md file with easier to use instructions (#15) by @StefanJum
  • [app-httpreply] Add Makefile, configuration files and scripts (#14) by @StefanJum
  • [app-lua] Change newlib with musl (#9) by @JADarius
  • [app-nginx] Update configurations and instructions (#15) by @razvand
  • [app-nginx] Update README.md file with easier to use instructions (#14) by @StefanJum
  • [app-nginx] Add Makefile, configuration files and scripts (#13) by @razvand
  • [app-python3] Fix rootfs mistakenly containing numpy (#17) by @andreittr
  • [app-python3] Update default Python app to 3.10.11 (#16) by @andreittr
  • [app-python3] Rename running scripts to run-qemu-*.sh (#15) by @StefanJum
  • [app-python3] Add Makefile, configuration files and scripts (#12) by @StefanJum
  • [app-redis] Update README.md file with easier to use instructions (#17) by @StefanJum
  • [app-redis] Add run scripts and documentation (#16) by @John-Ted
  • [app-sqlite] Update configurations and instructions (#11) by @razvand
  • [app-sqlite] Update README.md file with easier to use instructions (#10) by @StefanJum
  • [app-sqlite] Update building and running workflows (#9) by @StefanJum
  • [app-wamr] Port application to musl (#5) by @R0mbertus

A big thank you also to all those who helped in the review process: @adinamariav, @nderjung, @andraprs, @craciunoiuc, @csvancea, @DeliaPavel, @dragosp27, @Starnox, @eduardvintila, @maniatro111, @gabrielmocanu, @Ted, @mschlumpp, @mariasfiraiala, @michpappas, @RaduNichita, @miculescu, @razvand, @razvanvirtan, @kubanrob, @mogasergiu, @skuenzer, @StefanJum, Tu Dinh Ngoc.

Connect with the community

Feel free to ask questions, report issues, and meet new people.

Join us on Discord!
®

Getting Started

What is a unikernel?Install CLI companion toolUnikraft InternalsRoadmap

© 2024  The Unikraft Authors. All rights reserved. Documentation distributed under CC BY-NC 4.0.