We are proud to announce the latest version of Unikraft, v0.12.0 (Epimetheus)! This release comes with a bag of new exciting features and more stability to the existing ones. Here is the full updates list:
🚀 New Features
- Expose
HANDLED_CONT
return value ininclude/event
(#738) by Marc Rittinghaus - Register
mkdirat
to syscall shim inlib/vfscore
(#732) by Eduard Vintilă - Fault-safe memory access in
lib/uknofault
(#725) by Marc Rittinghaus - Boot code refactoring (#722) by Marc Rittinghaus
- Make TCB overlap configurable in
arch/libcontext
(#720) by Eduard Vintilă - Add
_SC_PHYS_PAGES
and_SC_AVPHYS_PAGES
tosysconf
inlib/posix-sysinfo
(#719) by osmten - Add
setattr
function for 9pfs inlib/9pfs
(#710) by Ștefan Jumărea - Update rust version to latest nightly in
lang/rust
(#709) by Fabian Patraș - Add comments to vfs.h file in
lib/vfscore
(#707) by Radu Nichita - Add
README.md
file inlib/ramfs
(#705) by Delia Pavel - Add comments to ramfs.h file in
lib/ramfs
(#704) by Delia Pavel - Update documentation of ukarch_random (#703) by Michalis Pappas
- Use ukarch_random_seed to seed MTE keys in
arch/arm64
(#702) by Michalis Pappas - Add IRQ events in
plat/*
(#699) by Marco Schlumpp - Implement
ukarch_random
inarch/x86_64
(#695) by Michalis Pappas - Handle error code returns from event handlers in
include/event
(#691) by Marco Schlumpp - Use correct variable name for sect-strip.py tool in
lib/ukdebug
(#690) by Marco Schlumpp - Use the ukarch_random API to generate PAuth keys and enable Pointer Authentication on KVM (#686) by Michalis Pappas
- 9p2000.L support in
lib/{uk9p,9pfs}
(#671) by Dinh Ngoc Tu - Implement subclass matching in
plat/common/pci
(#624) by Marco Schlumpp - Add additional flags for compatibility in
lib/vfscore
(#623) by Marco Schlumpp - Expose
rmdir
/rename
fromnolibc
inlib/nolibc
(#622) by Marco Schlumpp - Add
lib/ukvmem
andlib/posix-mmap
(#603) by Marc Rittinghaus - Add README.md file in
lib/uktest
(#555) by Ștefan Jumărea - Upgrade musl to latest version (1.2.3) (#34) by Eduard Vintilă
- Upgrade libsqlite version (#4) by Eduard Mihăilescu
- Add configuration file for textlint in
.github
(#178) by Razvan Deaconescu - Add make-based build workflow (#177) by Ștefan Jumărea
- Add
CONTRIBUTING.md
file referencing the website (#174) by Ștefan Jumărea - Add instructions on contributing to documentation (#171) by Ștefan Jumărea
- Split coding style content (#162) by Ștefan Jumărea
- Port the informations on the
Makefile.uk
,exportsyms.uk
andextra.ld
files from the Unikraft old documentation (#126) by Ștefan Jumărea
🐛 Bug Fixes & Improvements
- Fix typecast for
PT_BUFP
inuk_prsyscall
forlib/syscall_shim
(#750) by Simon Kuenzer - Fix
lstat()
infinite loop inlib/vfscore
(#711) by Maria Sfîrăială - Fix
gcc
-ism forclang
compilation inplat/pci_ecam.c
(#701) by Maria Sfîrăială - Comment out unused sysinfo buffer in
lib/posix-info
(#673) by Razvan Deaconescu - Fix a memory leak in
lib/ukallocbbuddy
(#689) by Noureddine Taleb - Fix race condition during context switch in
lib/uksched
(#694) by Eduard Vintilă - Fix segments in ELF output images in
build
(#698) by Marco Schlumpp - Align the stack to 16 bytes in
arch/x86_64
(#684) by Marco Schlumpp - Update ukrust to work alongside Cargo in
lib/ukrust
(#680) by Vlad Badoiu - Use Linux-compatible stat structure in
lib/nolibc
(#675) by Razvan Deaconescu - virtio-net fixes (#669) by Dinh Ngoc Tu
- Flip argument names of
VOP_SYMLINK
inlib/vfscore
(#629) by Marco Schlumpp - Prefer local include dirs in
support/build
(#625) by Marco Schlumpp - Ensure time monotonicity for tscclock in
plat/kvm
(#617) by Marco Schlumpp - 16-byte align syscall stack in
plat/common/x86
(#748) by Marc Rittinghaus - Align allocated stacks to arch requirement in
lib/uksched
(#747) by Simon Kuenzer - Fix for .tdata warning (#746) by Marc Rittinghaus
- Cast initrd vbase to
(void *)
in lib/vfscore (#744) by Simon Kuenzer - Fix initrd0 macro in
include/uk/plat
(#742) by Marc Rittinghaus - Fix cmdline parsing in
plat/kvm/x86
(#741) by Marc Rittinghaus - Fix various warnings (#739) by Marc Rittinghaus
- Fix dependency for
nanosleep()
inapp-helloworld
(#13) by Michalis Pappas - Adapt forced polling mode to
uknetdev
flag rename (#30) by Marco Schlumpp - Adapt memory region usage in patch (#7) by Marc Rittinghaus
- Remove hash templates for
pthread_t
(#26) by Dinh Ngoc Tu - Move
_XOPEN_SOURCE
define to library CFLAGS (#33) by Marco Schlumpp - Remove outdated vendored
features.h
(#32) by Marco Schlumpp - Fix typos in the
en/docs/contributing
(#179) by Radu Nichita - Fix kraft via pip installation step (#176) by Martin Kröning
- Ignore md104 rule when inside shortcodes in
github/linter
(#173) by Ștefan Jumărea - github/linter: Remove
.png
keyword ingithub/linter
(#172) by Ștefan Jumărea
A big thank you also to all those who helped in the review process: Gabriel Mocanu, Alexander Jung, Cezar Crăciunoiu, Eduard Vintilă, Marc Rittinghaus, Maria Sfîrăială, Răzvan Deaconescu, Răzvan Vîrtan, Robert Kuban, Sergiu Moga, Simon Kuenzer, Ștefan Jumărea, Vlad Bădoiu, Radu Nichita, Fabian Patraș, Andra Paraschiv, Michalis Pappas, Florin Postolache, Delia Pavel and Marco Schlumpp.
For more information, check out the accompanying blog post or view the full changelog.