v0.14.0 Prometheus
·
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 andSUBBUILD
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
andDISK
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 ofcatalog
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 @skuenzerlib/*fs
,lib/vfscore
: Add properdirent/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
onARM64
throughACPI
(#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 inspinlock
s 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
intoXen
x86
,AArch64
KVM
andlinuxu
(#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: Adduksignal
dependency forLIBMUSL_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 missingcpow*
functions (#64) by @andreittr[lib-musl]
patches: Delete patching ofioctl
call inisatty
(#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: DefineSIZEOF_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]
UpdateREADME.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 torun-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.