We are proud to announce the latest version of Unikraft, v0.20.0
!
This release comes with the much anticipated redesign and implementation of VFS, which brings enhanced performance, better maintainability, and improved compatibility with modern applications.
For more info refer to the accompanying blog post.
DEPRECATION NOTICEThe old VFS, vfscore, will be deprecated in Unikraft 0.22.0 (early 2026). For help on transitioning, consult the migration guide or join us on Discord.
COMPATIBILITY NOTICEThe implementation of
arch_prctl
system call has been migrated fromapp-elfloader
tolibposix-process
. Configurations usingCONFIG_APPELFLOADER_ARCH_PRCTL
should now useCONFIG_LIBPOSIX_PROCESS_ARCH_PRCTL
.
A summary of the most important changes follows. For the full list of changes see the changelog.
libukfs
: New library for the filesystem interface, driver templates and utilitieslibukfs-ramfs
: ukfs
memory-resident volatile filesystemlibukfs-devfs
: ukfs
pseudo-filesystem that provides files under /devlibukfs-pseudo
: New library home to pseudo-files previously provided by posix-tty
; also provides pseudo-files under devfsposix-vfs
: New library for POSIX-compliant virtual filesystem layer on top of ukfs
posix-vfs-fstab
: New library for mounting filesystems at boot according to predefined tables (fstabs)libukpod
: Utility library for managing pages-on-demand - used by filesystem driverslibuksparsebuf
: Utility library for efficient management of sparse buffers - used by filesystem driverslibukfile
: Add interface to expose & manage file backing memorylcpu
: Enhanced exception handling with context escape trampolineslibposix-fdio
: Support the sendfile()
syscalllibposix-process
: Signal the application on system error (SIGSEGV
, SIGILL
etc.)virtio-net
, liblwip
: Support Mergeable RX buffers (VIRTIO_NET_F_MRG_RXBUF
)virtio-net
, liblwip
: Support Large Receive Offload (LRO)libukallocbuddy
: Refactor to support asymmetric palloc()
/ pfree()
operationsukallocpool
: Various improvements to enhance performancelibukvmem
: Fix VMA stack population logiclibukalloc
: Ensure sufficient memory allocation for region metadatalibukallocregion
: Various enhancements and improvementslibuksched
: Remove unnecessary ECTX saving/restoration for cooperative thread switchinglibposix-process
: Refactor the kernel event APIlibposix-process
: Fix exit code propagation to termination contextlcpu
: Align exception handling stacks across architectureslibuklock
: Optimize ukmutex
and allow opt-out of atomics in the fast patch.libuklock
: Introduce semaphore operation to consume all tokens at oncevirtio-net
: Use single descriptor for packetsvirtio-net
: Keep event suppression mechanism internalvirtio-net
: Split feature probing and negotiationlibsyscall-shim
: Enhance syscall tracing with pretty-print decoding for socket, filesystem, and process syscallsFeel free to ask questions, report issues, and meet new people.