Skip to content

v0.15.0 Pandora

Compare
Choose a tag to compare
@nderjung nderjung released this 23 Oct 17:25
· 547 commits to staging since this release

We are proud to announce the latest version update of Unikraft, v0.15.0! This release brings important new features and further improvements and stabilizing to the previous release (0.14.0 - Prometheus). It adds new features, a healthy number of fixes and it enhances application support.

Here is the full updates list:

🚀 New Features

  • Improved application documentation and support scripts
    • [app-click]: Add configuration files and run scripts (#5) by @StefanJum
    • [app-click]: Port app-click to use musl (#4) by @MekalBoy
    • [app-duktape]: Update setup for developer-centric scripts (#10) by @razvand
    • [app-duktape]: Add Musl support (#9) by @razvand
    • [app-duktape]: Added Makefile and Makefile.uk to duktape, including the necessary li… (#7) by @justin9939
    • [app-duktape]: lib/duktape: port to musl addresses: #3 (#6 by @JoachimBose
    • [app-helloworld-cpp]: README.md: Use correct Firecracker JSON file name (#22) by @razvand
    • [app-helloworld-cpp]: Stefan jum/add dev content (#21) by @StefanJum
    • [app-helloworld-cpp]: Add KraftKit configuration file for KraftCloud (#20) by @razvand
    • [app-helloworld-cpp]: kraft.yaml: Fix contents (#19) by @razvand
    • [app-helloworld-go]: Add networking support for Go applications (#11) by @razvand
    • [app-helloworld-go]: Add KraftKit configuration file for KraftCloud (#10) by @razvand
    • [app-helloworld]: Makefile: Remove lwip (#30) by @razvand
    • [app-helloworld]: Makefile: Remove lwip (#29) by @razvand
    • [app-helloworld]: Testlib fxdiv (#28) by @SumairShergill
    • [app-helloworld]: lib/update/test: added library (#27) by @SumairShergill
    • [app-helloworld]: lib-intx upadate v0.10.0 (#26) by @ZackYe42
    • [app-helloworld]: Stefan jum/add dev content (#25) by @StefanJum
    • [app-helloworld]: Add KraftKit configuration file for KraftCloud (#23) by @razvand
    • [app-httpreply]: README.md: Update documentation (#20) by @razvand
    • [app-httpreply]: Stefan jum/add dev content (#19) by @StefanJum
    • [app-httpreply]: Add KraftKit configuration file for KraftCloud (#18) by @razvand
    • [app-lua]: Stefan jum/add dev content (#12) by @StefanJum
    • [app-lua]: Add KraftKit configuration file for KraftCloud (#11) by @razvand
    • [app-lua]: Makefile: Port app-lua to use musl (#6) by @panagiotiskon
    • [app-nginx]: README.md: Fix repeating words (#22) by @Mihnea0Firoiu
    • [app-nginx]: README.md: Update README (#20) by @razvand
    • [app-nginx]: Stefan jum/add dev content (#17) by @StefanJum
    • [app-nginx]: Add KraftKit configuration file for KraftCloud (#16) by @razvand
    • [app-python3]: README.md: Fix typo (#24) by @gabrielpitic
    • [app-python3]: README.md: Update kraft run command (#23) by @SorinAlexB
    • [app-python3]: Update setup for developer-centric scripts (#21) by @razvand
    • [app-python3]: kraft.cloud.yaml: Add networking support (#20) by @razvand
    • [app-python3]: Simplify root filesystem (#19) by @razvand
    • [app-python3]: Add KraftKit configuration file for KraftCloud (#18) by @razvand
    • [app-python3]: kraft.yaml: Update libraries order (#14) by @StefanJum
    • [app-redis]: Update Redis app directory (#20) by @razvand
    • [app-redis]: Add kraft.cloud.yaml (#19) by @razvand
    • [app-run-app-elfloader]: Add new applications and use fs1 as 9p index (#18) by @razvand
    • [app-run-app-elfloader]: Update prebuilt images to Unikraft 0.14 (#17) by @razvand
    • [app-run-app-elfloader]: [run.sh] Let user use custom QEMU arguments (#11) by @costinsin
    • [app-sqlite]: Stefan jum/add dev content (#13) by @StefanJum
    • [app-sqlite]: Add KraftKit configuration file for KraftCloud (#12) by @razvand
    • [app-testing]: Introduce generate.py script (#4) by @razvand
    • [app-wamr]: Update setup for developer-centric scripts (#7) by @razvand
    • [app-wamr]: Update README.md (#6) by @chococandy63
    • [app-wamr]: add makefile, makefile.uk (#4) by @akouk
    • [run-app-elfloader]: Add new applications and use fs1 as 9p index (#18) by @razvand
    • [run-app-elfloader]: Update prebuilt images to Unikraft 0.14 (#17) by @razvand
    • [run-app-elfloader]: [run.sh] Let user use custom QEMU arguments (#11) by @costinsin
    • [lib-click]: Update lib click to the latest Unikraft version (#7) by @StefanJum
    • [lib-wamr]: patches: Remove patch 0005: main adaptation (#9) by @razvand
    • [lib-wamr]: base to pbase (#2) by @akouk
  • Improved Python support
    • [lib-python-numpy]: Makefile.uk: Fix internal build include paths (#2) by @andreittr
    • [lib-python-pillow]: Port upstream Pillow 10.0.0 (#1) by @andreittr
    • [lib-python3]: Add support for the Pillow extension (#22) by @andreittr
    • [lib-python3]: Makefile.uk: Supress warnings (#21) by @andreittr
    • [lib-python3]: Enable the mmap stdlib module (#20) by @andreittr
    • [lib-python3]: Makefile.uk: Fix generated header include path (#19) by @andreittr
    • [lib-python3]: patches: Fix ctypes import error (#18) by @andreittr
    • [lib-python3]: Introduce Library.uk (#14) by @nderjung
  • Extended application support
    • [dynamic-apps]: Add sed pre-built binary (#103) by @gabrielpitic
    • [dynamic-apps]: Add awk PIE build (#102) by @andreistan26
    • [dynamic-apps]: README.md: Fix "dyamic" typo (#101) by @SorinAlexB
    • [dynamic-apps]: Add tar pre-built binary (#100) by @gabrielpitic
    • [dynamic-apps]: lang/go: Update libraries for helloworld (#99) by @razvand
    • [dynamic-apps]: nginx: Ingore generated files (#98) by @razvand
    • [dynamic-apps]: gzip: Use input.txt as input file (#97) by @razvand
    • [dynamic-apps]: extract.sh: Simplify script (#96) by @razvand
    • [dynamic-apps]: openssl: Update binary and libraries (#95) by @razvand
    • [dynamic-apps]: bzip2: Use input.txt as input file (#94) by @razvand
    • [dynamic-apps]: lang/go: Rename client-server to client_server (#93) by @razvand
    • [dynamic-apps]: Add Python helloworld (#92) by @razvand
    • [dynamic-apps]: imagemagick: Remove duplicate libraries (#91) by @StefanJum
    • [dynamic-apps]: Add curl into dynamic apps (#86) by @cozkul
    • [dynamic-apps]: added wget to dynamic-apps (#83) by @sinamhdv
    • [dynamic-apps]: Add du linux app (#82) by @hadisinaee
    • [dynamic-apps]: app/linux: add md5sum (#81) by @Moh3nsalehi
    • [dynamic-apps]: add blackjack example for c++ (#78) by @BR-
    • [dynamic-apps]: adding unzip to dynamic-apps (#74) by @Moh3nsalehi
    • [dynamic-apps]: adding netcat to dynamic apps (#73) by @hadisinaee
    • [dynamic-apps]: Grep: Add grep dynamic executable (#71) by @chococandy63
    • [dynamic-apps]: imagemagick: Add magick command (#70) by @TiagoRG
    • [dynamic-apps]: imagemagick: convert command (#69) by @GuilhermeVieiraDev
    • [dynamic-apps]: lang: Add Linux pre-built Python interpreter (#68) by @razvand
    • [dynamic-apps]: lang/python: Add HTTP server program (#67) by @razvand
    • [dynamic-apps]: lang/go: Add simple HTTP program (#66) by @razvand
    • [dynamic-apps]: lang/c++: Add simple HTTP program (#65) by @razvand
    • [dynamic-apps]: lang/c: Add simple HTTP program (#64) by @razvand
    • [dynamic-apps]: Add busybox 1.36.1 (#63) by @StefanJum
    • [dynamic-apps]: lang/rust: Introduce simple HTTP server (#62) by @razvand
    • [dynamic-apps]: Add nats-server application build from source (#58) by @SHOREQU69
    • [dynamic-apps]: Add GnuPG dynamic application built from source (#57) by @andreistan26
    • [dynamic-apps]: Add ffmpeg-source (#55) by @razvang0307
    • [dynamic-apps]: Add GnuPG 2.4.3 (#52) by @mtimaN
    • [dynamic-apps]: Add ffmpeg 5.1.2 (#49) by @timmmyeo
    • [dynamic-apps]: Add busybox 1.36.1 (#17) by @i-
    • [dynamic-apps]: Add perl 5.36 (#14) by @LucaSeri
    • [dynamic-apps]: Add NodeJS 18.15.0 (#10) by @maniatro111
    • [app-elfloader]: Add lang/c/http_server to run.yaml (#60) by @ALEX11BR
    • [app-elfloader]: Add du to run.yaml (#59) by @valudimi
    • [app-elfloader]: Add GnuPG to run.yaml (#58) by @ALEX11BR
    • [app-elfloader]: Add du to run.yaml (#56) by @valudimi
    • [app-elfloader]: Add gzip to run.yaml (#55) by @ALEX11BR
    • [app-elfloader]: Make VDSO creation work for cross-compilation and Darwin (#54) by @skuenzer
    • [app-elfloader]: Update scripts (#53) by @razvand
    • [app-elfloader]: Added support for openssl to run.yaml (#52) by @sinamhdv
    • [app-elfloader]: Added curl config into run.yaml (#42) by @cozkul
    • [app-elfloader]: Added support for running echo by modifying run.yaml (#41) by @JackieHam
    • [app-elfloader]: Made changes to run.yaml file to support running bzip2 application (#39) by @JackieHam
    • [app-elfloader]: Add ls to run.yaml (#37) by @willgao23
    • [app-elfloader]: Add node and gnupg to run.yaml (#33) by @SorenEricMent
    • [app-elfloader]: scripts: Add support for running http_server-cpp (#32) by @chococandy63
    • [app-elfloader]: scripts: Add support for running helloworld-cpp (#31) by @willgao23
    • [app-elfloader]: Add sqlite3 to run.yaml (#30) by @SorenEricMent
    • [app-elfloader]: mmap each ELF segment if CONFIG_LIBPOSIXMMAP is enabled (#28) by @mogasergiu
    • [app-elfloader]: Add developer-centric contents (#27) by @razvand
    • [app-elfloader]: Add KraftKit configuration files (#26) by @razvand
    • [lib-cairo]: Port upstream Cairo 1.17.8 (#1) by @andreittr
    • [lib-fribidi]: Port upstream Fribidi 1.0.13 (#1) by @andreittr
    • [lib-giflib]: Port upstream GIFLIB 5.2.1 ([#1) by @andreittr
    • [lib-harfbuzz]: Port upstream HarfBuzz 8.1.1 (#1) by @andreittr
    • [lib-libdeflate]: Port upstream libdeflate 1.18 (#1) by @andreittr
    • [lib-libtiff]: Port upstream libtiff 4.5.1 (#3) by @andreittr
    • [lib-libwebp]: Port upstream libwebp 1.3.1 (#1) by @andreittr
    • [lib-littlecms]: Port upstream LittleCMS 2.15 (#1) by @andreittr
    • [lib-openjpeg]: Port upstream OpenJPEG 2.5.0 (#3) by @andreittr
    • [lib-pixman]: Port upstream pixman 0.42.2 (#1) by @andreittr
    • [lib-python-pillow]: Port upstream Pillow 10.0.0 (#1) by @andreittr
    • [lib-raqm]: Port upstream Raqm 0.10.1 (#1) by @andreittr
    • [lib-xz]: Port upstream xz 5.4.4 (#1) by @andreittr
    • [lib-zstd]: Port upstream zstd 1.5.5 (#1) by @andreittr
  • Steps towards library versioning (Library.uk)
  • Firecracker networking support + modern virtio
  • Initial ARM64 binary compatibility support
    • arch/arm64: Support AArch64 binary syscalls (#1009) by @i-
    • arch/arm64: Fix dependency for arm64_syscall_adapter (#1132) by @i-
    • [app-elfloader]: feat: Support AArch64 architecture (#24) by @i-
  • Re-arch drivers
    • plat: Migrate bus drivers to drivers/ukbus (#1024) by @michpappas
    • Introduce drivers subsystem (#1023) by @michpappas
    • plat: Migrate gic to drivers/ukintctlr (#971) by @rares-
    • drivers: Move virtio from plat/drivers/ to drivers/ (#967) by @rares-
    • lib: Add ofw from plat/drivers to lib (#966) by @rares-
  • plat/kvm: Adapt EFI boot to new APIC driver (#1138) by @kha-
  • build, scripts: Ensure using GNU coreutils on Darwin (#1109) by @skuenzer
  • support/scripts: mkcpio: Support Darwin (MacOS) environments (#1078) by @skuenzer
  • build: Support replacing internal libraries (#1104) by @skuenzer
  • drivers/virtio: Implement support for event index notification suppression (#1089) by @mschlumpp
  • {lib/uknetdev,drivers/virtio}: Add support for IPv4/TCP segmentation offloading (#1088) by @mschlumpp
  • lib/ukintctlr: Introduce uk_intctlr API - Re-arch IRQ handling (#1103) by @michpappas

🐛 Bug Fixes & Improvements

  • plat/kvm/x86: Pre-initialize VGA framebuffer terminal_buffer (#1136) by @mogasergiu
  • plat/kvm/x86: Use ur_pte for the first page table (#1135) by @mogasergiu
  • lib/uklibid: Clang-compatible compile option flags (#1131) by @skuenzer
  • build: Use ISO 8601 format for $(HOSTUTC) (#1127) by @skuenzer
  • plat/kvm/x86: Make zero page inaccessible (#1123) by @mschlumpp
  • plat/common/acpi: Check for offline GICC's and fix VGIC IRQ Mode flag (#1120) by @mogasergiu
  • build: Recompile everything on .config changes (workaround) (#1119) by @skuenzer
  • Makefile: Save UK_NAME on savedefconfig (#1118) by @StefanJum
  • lib/uklibid: Library metadata (#1117) by @skuenzer
  • plat/common/x86: Make SIPI Vector related symbols relocations independent from ukreloc (#1113) by @mogasergiu
  • driver/ukbus: Fix an invalid check in PCI probe (#1110) by @kha-
  • build: Add target to print unikernel LoC stats (#1108) by @andreittr
  • lib/vfscore: Fix spelling mistake in Config.uk (#1106) by @chococandy63
  • lib/nolibc: Move prctl.h inside nolibc/musl-imported (#1102) by @TAGOliveira201000
  • lib: Remove vfscore_mount_initrd_volume-related build warnings (#1100) by @TAGOliveira201000
  • lib: Remove timeval-related build warnings (#1099) by @TAGOliveira201000
  • lib/9pfs: Return ENOTSUP on ioctl requests except for FIONBIO (#1098) by @StefanJum
  • lib Remove dirent64-related build warnings (#1097) by @TAGOliveira201000
  • arch: Add an non-aligned version for stack-pushing (#1096) by @i-
  • drivers: Add PLAT_COMMON_BASE to the include path (#1095) by @michpappas
  • lib/vfscore: Fix pipe error codes (#1093) by @andreittr
  • build: Forward YACC/LEX to kconfig make invocation (#1092) by @mschlumpp
  • arch: Align virtual/physical address validation on x86 and arm64 (#1091) by @kha-
  • lib/uklock: Remove the rwlock_{upgrade,downgrade} functions (#1090) by @mschlumpp
  • lib/9pfs: Add check for NULL data in uk_9pfs_parse_options (#1086) by @mogasergiu
  • arch/ctx.h: Update ctx members declaration order (#1085) by @StefanJum
  • build: Always save architecture with savedefconfig (#1084) by @skuenzer
  • Makefile: Fix support for external platforms (#1082) by @kubanrob
  • plat/kvm: Fix typo in configuration variable (#1081) by @kubanrob
  • Make elf64_to_32.py also build the multiboot header and rename it to multiboot.py (#1079) by @mogasergiu
  • support/scripts: checkpatch WARN on commit summary > 70 chars (#1077) by @mogasergiu
  • plat/virtio: Fix vring_avail_event macro (#1076) by @mschlumpp
  • lib/ramfs: Fix UAF bug when deleting open file (#1075) by @andreittr
  • lib/vfscore: Fix potential vfscore_file mem leak (#1074) by @andreittr
  • lib/ukmmap: Fix wrong return of NULL (#1073) by @andreittr
  • lib/posix-user: Allow custom user & group (#1072) by @andreittr
  • lib/ukcpio: Misc fixes and improvements (#1071) by @andreittr
  • lib/vfscore: Embedded initrd (#1070) by @skuenzer
  • lib/vfscore: Replace dup2 syscalls with dup3 (#1069) by @andreittr
  • doc: Add KIT to ADOPTERS.md (#1068) by @lluchs
  • Makefile: Fix build verbosity for V=0 (#1066) by @StefanJum
  • plat/kvm: Use AllocatePages() to allocate memory regions in UEFI (#1061) by @mogasergiu
  • plat: Let coalescing method ensure memregion alignment (#1060) by @mogasergiu
  • lib/nolibc: Add __errno_location implementation (#1044) by @Starnox
  • lib/nolibc: Provide symbols for malloc, free, calloc, realloc... (#1042) by @Starnox
  • [lib-click]: Makefile.uk: Fix build-time infinite loop (#6) by @eduardvintila
  • [lib-intel-intrinsics]: Add cpuid.h header (#5) by @andreittr
  • [lib-libcxx]: Makefile.uk: Add -D_GNU_SOURCE to C++ flags (#34) by @andreittr
  • [lib-libffi]: Fix missing internal function declaration (#2) by @andreittr
  • [lib-libgo]: Config.uk: Imply LIBUKMMAP / LIBPOSIX_MMAP (#8) by @razvand
  • [lib-libunwind]: Select lib-compiler-rt as Kconfig dependency (#10) by @andreittr
  • [lib-libuuid]: Makefile.uk: Restrict private headers to -iquote (#6) by @andreittr
  • [lib-lua]: Fix structure member naming in patches (#5) by @panagiotiskon
  • [lib-newlib]: Makefile.uk: Suppress more warnings (#36) by @andreittr
  • [lib-nginx]: Config.uk: Imply LIBUKMMAP (#15) by @razvand
  • [lib-python-numpy]: Makefile.uk: Fix internal build include paths (#2) by @andreittr
  • [lib-libcxx]: Assign -Wno-keyword-compat to clang only (#35) by @skuenzer
  • [lib-libelf]: Set ELFTC_HAVE_MMAP to 1 (#3) by @mogasergiu
  • [lib-sqlite]: Makefile.uk: Register library using addlib_s (#8) by @andreittr

A big thank you also to all those who helped in the review process: @adinamariav, @andraprs, @andreittr, @Krechals, @craciunoiuc, @DeliaPavel, @eduardvintila, @Starnox, @John-Ted, @jake-ciolek, @mschlumpp, @mariasfiraiala, @michpappas, @RaduNichita, @rares-miculescu, @razvand, @razvanvirtan, @kubanrob, @mogasergiu, @skuenzer, @StefanJum, @I-pea