Skip to content

v0.14.0 Prometheus

Compare
Choose a tag to compare
@razvand razvand released this 17 Aug 23:56
· 746 commits to staging since this release

We are proud to announce the latest version of Unikraft, v0.14.0 (Prometheus)! This is one of the biggest releases so far with tons of fixes and improvements!

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 @cppstef
  • 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-opwnssl] 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
  • [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
  • [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, @dinhngtu.


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