We are proud to announce the latest version of Unikraft, v0.8.0 (Enceladus)! In this release, we introduce many new improvements, including critical bug fixes, improved stability and new features. To summarise:
🚀 New Features
- Introduce Pointer Authentication (PAuth) support (#369) by Michalis Pappas
- Virtual Memory API (x86_64, kvm) (#338) by Marc Rittinghaus
- Support for partial checksumming / checksum offloading (#308) by Simon Kuenzer
- Add
uk_event
for new trap interface (#227 #230, #231) by Marc Rittinghaus - Additional interrupt context safe functions (#192) by Cristian Vijelie
- TAP network device driver (#251) by Sharan Santhanam
- Add basic test suite to
ukargparse
(#392 #431) by Stefan Jumarea - Add
uk_list_last_entry_or_null
(#396) by Marc Rittinghaus - Add
mprotect
(#394) by Marc Rittinghaus - Add support for arm64 on linuxu (#418) by Florin Postolache
🐛 Bug Fixes & Improvements
- Rewrite of ubsan library (#404) by Marc Rittinghaus
- Migrate and update docs (#252) by Alexander Jung
- Allow
mkcpio
to quietly gzip compress CPIO images (#359) by Aadhithya Kannan - Enhance arm(64)/x86_64 Bitscan Functions (#395) by Marc Rittinghaus
- Add
getgrgid
to export (#410) by Marc Rittinghaus - Do not invoke
rustc
ifukrust
is not enabled (#403) by Michalis Pappas - Fixes layout of assert table on ARM64 (#397) by Marc Rittinghaus
- Add dependency to
lib/ukalloc
forlinuxu
(#430) by Simon Kuenzer - Fix quoted whitespaces handling (#433) by Stefan Jumarea
- Fix build warning for
_uk_printd
definition (#432) by Gabi Mocanu - Fix build warning for halt definition (#429) by Gabi Mocanu
- Fix build errors introduced by #251 (#412) by Vlad-Andrei Badoiu
- Fix conditional definition of functions (#399) by George Hopkins
- Fix some bugs (#394) by Marc Rittinghaus
- Fix and introduce more range macros (#370) by Simon Kuenzer
- Fixing various bugs (#411) by Marc Rittinghaus
- Complete syscall lists on arm and aarch64 (#423) by Răzvan Vîrtan
- Replace
EDOOFUS
macro (#416) by Florin Postolache - Remove
uk_free
call on request dequeue (#413) by Marco Schlumpp - Move alloc out of critical section in
sys_open
(#408) by Marc Rittinghaus - Use types from
shareddefs.h
(#407) by Marc Rittinghaus - Use non-prototyped no-ops (#405) by Marc Rittinghaus
- Do not pass
-march
with-mcpu
(#368) by Michalis Pappas - Do not allocate IRQ handler entries dynamically (#240) by Hugo Lefeuvre
A big thank you also to all those who helped in the review process: Cristian Vijelie, Michalis Pappas, Marco Schlumpp, Simon Kuenzer, Adina Smeu, Florin Postolache, Gabi Mocanu, Sergiu Moga, Razvan Deaconescu, Stefan Jumarea, Răzvan Vîrtan, Cezar Craciunoiu, Daniel Dinca and Vlad-Andrei Badoiu.
For more information, check out the accompanying blog post or view the full changelog.