We are proud to announce the latest version of Unikraft, v0.13.0 (Atlas)! Along with many fixes, this release comes with a bunch of new features that are worth your attention!
This release includes a breaking change which affects output unikernel binary name. See native Firecracker support for details.
Here is the full updates list:
🚀 New Features
- Update parser in
lib/uklibparam
(#882) by Simon Kuenzer - Support escaping of quotes in
lib/ukargparse
(#893) by Simon Kuenzer - Add support for environment variables in
lib/posix-environ
(#868) by Simon Kuenzer - Support for environment variables with
lib/posix-environ
in Musl (lib-musl#43) by Simon Kuenzer - Add
README.md
file for 9pfs inlib/9pfs
(#837) by Delia Pavel - Extend prsyscall in
lib/syscall_shim
(print structs, …) (#836) by Marc Rittinghaus - Dynamically allocate
struct mount
paths (#826) by Dinh Ngoc Tu - Port the testsuite to the new scheduling APIs in
lib/posix-futex/test
(#809) by Nour-eddine Taleb - Add per-lcpu variable definition (#784) by Andra Paraschiv
- Add
README.md
file inlib/vfscore
(#780) by Radu Nichita - Add
README.md
file inlib/nolibc
(#778) by Alexandru Calciu - Implement a more robust compiler detection in
build
(#774) by Marco Schlumpp - Add Codacy code quality status badge to
README.md
indoc
(#764) by Aryan Verma - Firecracker boot protocol support in
plat/kvm
(#760) by Marco Schlumpp - Implement subset of FUTEX_WAIT_BITSET in
lib/posix-futex
(#758) by Marco Schlumpp - Add an empty implementation of ioctl to eventfd in
lib/posix-event
(#756) by Marco Schlumpp - Add
syscall
alias touk_syscall
inlib/syscall_shim
(#755) by Marco Schlumpp - Implement the EFD_NONBLOCK flag for eventfd in
lib/posix-event
(#754) by Marco Schlumpp - Merge
.gcc_except_table
s inplat/common
(#753) by Marco Schlumpp - Compile all source files for ISR context in
lib/ukvmem
(#751) by Marco Schlumpp - Use -ffreestanding compiler flag in
lib/nolibc
(#740) by Răzvan Deaconescu - Use 48-bit virtual addressing for PARange >= 52 in
plat/kvm/arm
(#729) by Eduard Vintilă - Improve unwind information for x86 architecture in
plat/x86
(#700) by Marco Schlumpp - Improve nolibc compatibility in
lib/nolibc
(#627) by Marco Schlumpp - Add synchronization mechanisms (#476) by Sairaj Kodilkar
- Update description of Musl support in
README
(lib-musl#49) by Răzvan Deaconescu - Update newlib to the latest Unikraft version (#28) by Eduard Vintilă
- Update pthread-embedded to the latest Unikraft version (#11) by Eduard Vintilă
- Add linux definitions patch (#34) by Teodor Țeugea
- Add
SOCK_NONBLOCK
toaccept4()
andsocket()
(#33) by Marc Rittinghaus - Improve
README.md
forapp-elfloader
(app-elfloader#7) by Simon Kuenzer - VFS and native dynamic loader support (app-elfloader#17) by Simon Kuenzer
🐛 Bug Fixes & Improvements
- Add semicolon to
DPRINTF
macro inlib/vfscore
(#890) by Răzvan Deaconescu - Initialize lists for
stdio_vnode
inlib/vfscore
(#889) by Răzvan Deaconescu - Avoid recursive locking in sys_rename in
lib/vfscore
(#888) by Marc Rittinghaus - Add missing errno include in
lib/ukswrand
(#887) by Marc Rittinghaus - Fix I/O error on fsync with 9P2000.u in
lib/uk9p, lib/9pfs
(#886) by Marc Rittinghaus - Start TID numbering from 1 in
lib/posix-process
(#885) by Florin Postolache - Fix file path resolution for 9pfs setup in
lib/vfscore
(#883) by Andra Paraschiv - Disable compiler control flow protection in
build
(#881) by Andrei Tătar - Modify pointer comparison in
lib/{nolibc,isrlib}
(#880) by Maria Sfîrăială - Add additional recognised Git trailers to checkpatch in
support/scripts
(#879) by Alexander Jung - Fix memory region setup and issue #766 in
plat/linuxu
(#878) by Sergiu Moga - Fix register names for clang in
plat/kvm/x86
(#877) by Ștefan Jumărea fs0
for automounting 9pfs inlib/vfscore
(#875) by Simon Kuenzer- Handle
FIONBIO
command inpipe_ioctl()
inlib/vfscore
(#874) by Eduard Vintilă - Fix Python ascii codec can’t decode byte in
support/scripts
(#873) by Florin Postolache - Change vnops to take constant strings in
lib/vfscore
(#866) by Marc Rittinghaus - Fix
dup
,utimensat
, andfutimens
inlib/vfscore
(#865) by Marc Rittinghaus - Add
ukarch_fetch_sub
inuk/arch
(#864) by Răzvan Vîrtan - Fix
ioctl()
on device files (+ cleanup) in/lib/devfs
,/lib/ukswran
(#855) by Marc Rittinghaus - Fix file flags for
O_NONBLOCK
andO_ASYNC
(#850) by Marc Rittinghaus - Remove
clone3
syscall inlib/posix-process
(#847) by Teodor Țeugea - Apply
LIBxxx_COMPFLAGS{,-y}
to C++ too inbuild
(#845) by Dinh Ngoc Tu - Fix cast to invalid type in
9p.c
(#844) by Hugo Lefeuvre - Fix potential
free(NULL)
inlib/vfscore
(#843) by Hugo Lefeuvre - Use page alignment macros everywhere (#842) by Hugo Lefeuvre
- Remove unreachable NULL checks in
ukalloc
(#840) by Hugo Lefeuvre - Fix unchecked
uk_palloc
value inxen/x86/mm.c
(#839) by Hugo Lefeuvre - Various fixes for application compatibility (#834) by Marc Rittinghaus
- Fix compilation and loading of linuxu images in
plat/linuxu
(#833) by Marco Schlumpp - Allow non-writable shared file mappings in
lib/ukvmem
(#832) by Cosmin Vancea - Fix symlink support for 9pfs in
9pfs, vfscore
(#830) by Andra Paraschiv - Fix wrong type for the
st_nlink
field insidestruct stat
inlib/nolibc
(#829) by Cosmin Vancea - Fix build warnings in
lib/posix-process
(#820) by Konstantinos Koukopoulos - Force update
UK_CONFIG
inbuild/Makefile
(#817) by Tianyi Liu - Fix for Issue #730 in
lib/uksglist
(#813) by Vineeth Krishna M - Handle a full tracing buffer correctly in
lib/ukdebug
(#810) by Marco Schlumpp - Fix issues in FDT functions in
plat/drivers/ofw
(#805) by Eduard Vintilă - Detect if
gawk
can be used instead ofawk
inbuild
(#803) by Simon Kuenzer - Add a simple test for mmap and munmap in
lib/ukmmap
(#802) by Kha Dinh - Remove warnings related to timespec in
lib/nolibc
(#800) by Takeru Wada - Fix
posix-mmap
errno issue (#799) by Teodor Țeugea - Update
uio_offset
anduio_resid
on successful reads inlib/posix-event
(#798) by Eduard Vintilă - Add comments to
9pfs.h
file (#794) by Delia Pavel - Change the
SECINFO_EXP
regex to be more permissive insupport/scripts
(#792) by Florin Postolache - Fix double fault and failing mmap (#790) by Marc Rittinghaus
- Add
write-combined
page entry attribute inplat/x86
(#788) by Marco Schlumpp - Ensure the
.eh_frame
section stays inplat/common
(#776) by Marco Schlumpp - Fix type of
revents
pointer inlib/posix-event
(#775) by Marco Schlumpp - Change unhandled IRQ message to a tracepoint in
plat/kvm
(#768) by Marco Schlumpp - Fix interrupt flag check in
drivers/virtio
(#761) by Marco Schlumpp - Ensure the
ifpages
metadata does not break any alignments inlib/ukalloc
(#757) by Marco Schlumpp - Disable default LIBMUSL_COMPLEX in
Config.uk
(lib-musl#47) by Răzvan Deaconescu - Fix ioctl signature in function definition in
patches
(lib-musl#44) by Ștefan Jumărea - Fix
ioctl
signature (lib-musl#42) by Marc Rittinghaus - Various fixes (lib-musl#41) by Marco Schlumpp
- Add option to disable character maps in
locale
(lib-musl#40) by Dinh Ngoc Tu - Apply
-ffreestanding
for the Musl source code (lib-musl#35) by Marco Schlumpp - Use
-ffreestanding
as internal build option inMakefile.uk
(lib-newlib#33) by Răzvan Deaconescu - Add
*_OK
flags in fcntl.h header ininclude
(#32) by Ștefan Jumărea - Return address from previous
brk()
context on follow-up request (#15) by Andra Paraschiv - Fix
argv
parsing (app-elfloader#13) by Cosmin Vancea - Align the stack pointer at a 16-byte boundary at function calls (#9) by Cosmin Vancea
A big thank you also to all those who helped in the review process: Adina Smeu, Alexander Jung, Alexandru Calciu, Alexandru Apostolescu, Andra Paraschiv, Andrei Tătar, Cezar Crăciunoiu, Delia Pavel, Dragoș Petre, Eduard Mihăilescu, Eduard Vintilă, Florin Postolache, Gabriel Mocanu, Teodor Țeugea, Luca Serițan, Marco Schlumpp, Marc Rittinghaus, Maria Sfîrăială, Michalis Pappas, Radu Nichita, Rareș Miculescu, Răzvan Deaconescu, Răzvan Vîrtan, Robert Kuban, Sergiu Moga, Simon Kuenzer, Ștefan Jumarea, Teodor Tiron, Tu Dinh Ngoc, Vlad Bădoiu.
For more information, check out the accompanying blog post or view the full changelog.