We are proud to announce the latest version update of Unikraft, v0.17! This release comes with plenty of new features and updates.
Be aware of the following potentially breaking changes
The
linuxu
platform has been removed. No build should be performed against thelinuxu
platform.Random number generation is reliant on CPU support. This means that, when using QEMU, one of two options must be enabled:
- You are using QEMU >= 8.0.
- You are using hardware acceleration, with KVM.
There is an (insecure) configuration option to disable support for CPU-based randomization. This is however only recommended for test & development builds.
Here is the full updates list:
include/uk
: Import tree implementations from FreeBSD + improvements (#1356) by @andreittrplat/linuxu
: Retire mostly unused and unmaintained linuxu platform (#1422) by @skuenzerlib/ukfile
: API improvements (#1397) by @andreittrlib/posix-poll
: Add option to yield on wait (#1319) by @andreittrlib/posix-poll
: Autoremove closed files from epoll
(#1419) by @andreittrplat
: Rework paged memory init (#1373) by @michpappasdriver/virtio/blk
: Ensure request header stays in-page boundaries AND some minor sglist
cleanup (#1290) by @mogasergiulib/posix-*
: Add support for packet pipes & datagram unix sockets (#1272) by @andreittrlib/{vfscore, posix-tty}
: Introduce posix-tty
& move stdio/console files out of vfscore (#1226) by @andreittrlib/ukrandom
: Rename and refactor lib/ukswrand
(#1008) by @Alex-deVislib
: Introduce generic (page guarded) stack allocator library (#1322) by @mogasergiu{lib,arch,plat}
: Redo syscall ctx's and swapgs
logic (#1346) by @mogasergiu[app-elfloader]
: Adjust to the rename ukarch_sysregs
-> ukarch_sysctx
(#77) by @mogasergiuplat/common
: Fix wrong vbase
of legacy video memory area (#1452) by @mogasergiulib/ukrandom
: Alternative options for seeding the CSPRNG (#1451) by @michpappasplat
: Set HAVE_RANDOM
at the platform (#1450) by @michpappasplat/common
: A bunch of fixes post-merge of #1212 (#1449) by @mogasergiuplat/xen
: Remove UKPLAT_MEMRF_MAP
from arm/setup64
(#1445) by @michpappasplat/common/x86
: Sanitize the ECTX slot on syscall entry (#1444) by @mogasergiuplat/common/arm
: Check for QARMA3 support in pauth_init()
(#1441) by @michpappaslib/ukalloc
: Fix build with clang when MEMTAG
is enabled (#1440) by @michpappasarch/arm64
: Add checks for min clang version (#1439) by @michpappaslib/posix-poll
: Fix finalizer duplication in epoll
(#1438) by @andreittrplat/xen/arm
: Set pg_count
parameter for mrd regions (#1436) by @oleksiimoisieiev.github/workflows
: Allow capital letters in files & new error message (#1435) by @craciunoiucplat/xen
: Remove redundant memory region (#1434) by @andreistan26README
: Fix broken codacy link (#1433) by @thass0lib/vfscore
: Add support for renameat syscall (#1430) by @RaduNichitaplat/common/arm
: Add ISB after enabling PAuth() (#1428) by @michpappasdocs
: Update ADOPTERS.md
with CertKOR (#1425) by @hapticslabs.github/workflows
: Pretty print failed runs (#1423) by @craciunoiuclib/posix-unixsocket
: Add support for destination in sendmsg
(#1421) by @andreittrlib/vfscore
: Do not interpret device pointer as string (#1418) by @mschlumpplib/posix-fdio
: Allow owner/group == -1 for fchown
(#1416) by @andreittrlib/ukvmem
: Ensure bool
exists through stdbool.h
in VMA stacks (#1415) by @mogasergiuuk/plat
: Mark MRD validation flags variable in macro as maybe unused (#1414) by @mogasergiulib/ukboot
: Fix configuration of no "no scheduler" (#1413) by @skuenzer.github/workflows
: Tidy up unused checkpatch variables (#1400) by @craciunoiuclib/ukboot
: Fix unused variable warning in boot.c
(#1399) by @keenoxlib/ukfile
: Add utility inlines for iovec I/O (#1396) by @andreittrplat/kvm/x86
: Add dependency to ukbitops (#1395) by @andreittrlib/posix-fdio
: Add bincompat support for RWF_*
(#1394) by @andreittrlib/posix-*
: Fix missing/unneeded dependencies (#1393) by @andreittrlib/posix-fdio
: Move non-trivial libc syscall wrappers over from vfscore (#1392) by @andreittrsupport
: Change PYTHONCMD
to python3 (#1391) by @tbunch1.clang-format
: Update to match coding conventions (#1390) by @tbunch1lib/ukvmem/arch/arm
: Fix error_code
build error with correct esr
(#1388) by @mogasergiulib/ukfile
: Remove padding from struct uk_statx
(#1387) by @andreittrlib/syscall_shim
: Update syscall numbers to 6.8 (#1385) by @andreittr.github/workflows
: Catalog tests fixes and adjustments (#1382) by @craciunoiuclib/ukboot
: Silence compiler warning on envp (#1378) by @michpappaslib/posix-process
: Fix off-by-one error in tid check (#1377) by @michpappaslib/vfscore
: No-op mkmp
on /
(#1376) by @mogasergiulib/posix-timerfd
: Fix update thread double free and add update thread dtor (#1375) by @mogasergiudoc
: Correct links in README.md
(#1374) by @razvandarch/
: Replace libc types with Unikraft defined (#1369) by @rares-miculescuinclude/uk
: Replace libc types with Unikraft defined (#1368) by @rares-miculescudoc
: Refactor README.md with new layout and latest info (#1366) by @nderjung.github/workflows
: Add job to merge staging to stable (#1363) by @craciunoiuclib/ukcpio
: Consistently overwrite existing destination (#1362) by @andreittrarch/x86
: Use the ISR-safe variant for ectx string operations (#1357) by @kha-dinhlib/posix-environ
: Deduplicate env variables during boot (#1352) by @skuenzerlib/ukfile
: Add opt-in support for file finalizers (#1341) by @andreittrlib/posix-socket
: Expose internal socket syscalls (#1337) by @andreittrlib/posix-time*
: Replace time syscalls with internal API (#1336) by @andreittrplat/kvm/x86
: Add early COM1 init/print for CPU init errors (#1335) by @mogasergiulib/uknofault
: Add on-demand paging disabled read/write operations (#1333) by @mogasergiu{arch,plat}/x86
: Refactor FS_BASE/GS_BASE
operations (#1316) by @mogasergiulib/posix-unixsocket
: Add basic *sockopt
support (#1314) by @andreittruk/plat/memory
: Introduce pg_off
and pg_count
memregion fields (#1212) by @mogasergiulib/ukrust
: Fix helloworld-rust application compilation error (#1163) by @cocoderyplat
: Migrate RTC PL031 to drivers/ukrtc/
(#972) by @rares-miculescudoc
: Replaced libc types with unikraft defined (#954) by @rares-miculescuarch/x86
: Fix interrupts on qemu-microvm/qboot (#947) by @felixmoebius[app-click]
: Rename LIBUKSWRAND
to LIBUKRANDOM
(#6) by @Alex-deVis[app-elfloader]
: Rename LIBUKSWRAND
to LIBUKRANDOM` (#80) by @Alex-deVis[app-elfloader]
: Use default allocators of the current scheduler for stacks/TLS (#73) by @mogasergiu[app-elfloader]
: Config.uk
: Imply yield-on-wait behavior for *poll
(#72) by @andreittr[lib-embedded-gcov]
: Add memory output support (#3) by @Starnox[lib-embedded-gcov]
: Add binary file output support (#2) by @Starnox[lib-libc-test]
: patches: Adapt malloc patch to match new test format (#4) by @craciunoiuc[lib-libsodium]
: Rename LIBUKSWRAND
to LIBUKRANDOM
(#10) by @Alex-deVis[lib-lwip]
: Rename LIBUKSWRAND
to LIBUKRANDOM
(#57) by @Alex-deVis[lib-lwip]
: patches
: Bring back address structure length checks (#56) by @mogasergiu[lib-lwip]
: Indicate EPOLLRDHUP
when the peer closed the connection (#55) by @mschlumpp[lib-lwip]
: lwip
: Provide config option for SO_LINGER
and enable by default (#52) by @michpappas[lib-musl]
: Rename LIBUKSWRAND
to LIBUKRANDOM
(#78) by @Alex-deVis[lib-musl]
: Add sys/membarrier.h
to the headers list (#76) by @StefanJum[lib-nginx]
: Rename LIBUKSWRAND to LIBUKRANDOM
(#17) by @Alex-deVis[lib-openssl]
: Rename LIBUKSWRAND
to LIBUKRANDOM
(#10) by @Alex-deVis[lib-redis]
: Rename LIBUKSWRAND
to LIBUKRANDOM
(#14) by @Alex-deVisA big thank you also to all those who helped in the review process: Alexander Jung, Alexandru Apostolescu, Andrei Stan, Andrei Tatar, Cezar Craciunoiu, Delia Pavel, Eduard Vintilฤ, Felipe Huici, Marco Schlumpp, Maria Pana, Maria Sfiraiala, Michalis Pappas, Mihnea Firoiu, Mihnea Popeanga, Radu Nichita, Rares Miculescu, Razvan Deaconescu, Razvan Virtan, Robert Zamfir, Serban Sorohan, Sergiu Moga, Simon Kuenzer, Stefan Jumarea.
Feel free to ask questions, report issues, and meet new people.