:::info To generate the feature list: ```bash gh pr list -s closed -L 100 --search "is:pr is:closed closed:>2024-01-18" --json author,title,number --template '{{range .}}{{ printf "* %s (#%v) by @%s\n" .title .number .author.login }}{{end}}' ``` To generate the list of reviewers: ```bash git --no-pager log --format="* %(trailers:key=Reviewed-by,valueonly,separator=%x2C )" --abbrev-commit HEAD...RELEASE-0.16.2 | sed 's/, /\n* /g' | sort -u ``` ::: :::danger before submitting, please search the document for "TODO", "commit" ::: [toc] ## GitHub Release Note We are proud to announce the latest version update of Unikraft, v0.16.2! This release comes with fixes, Xen ARM64 support an updates to the [application catalog](https://github.com/unikraft/catalog). Here is the full updates list in this release: * `.github/workflows`: Disable 'merge' global flag ([#1318](https://github.com/unikraft/unikraft/pull/1318)) by @craciunoiuc * `.github/workflows`: Set committer email and name globally ([#1313](https://github.com/unikraft/unikraft/pull/1313)) by @craciunoiuc * `lib/posix-fdtab`: Fix minor docstring issues ([#1312](https://github.com/unikraft/unikraft/pull/1312)) by @andreittr * `lib/nolibc`: Solve warning of Musl imported `strstr` ([#1311](https://github.com/unikraft/unikraft/pull/1311)) by @mogasergiu * `lib/posix-poll`: Fix EPOLL_CTL_MOD missing events ([#1310](https://github.com/unikraft/unikraft/pull/1310)) by @andreittr * `lib/nolibc`: Expose FD_SETSIZE as Kconfig option ([#1309](https://github.com/unikraft/unikraft/pull/1309)) by @andreittr * `lib/posix-sysinfo`: Fix off-by-1 error in `sethostname` ([#1307](https://github.com/unikraft/unikraft/pull/1307)) by @andreittr * `plat/xen`: Remove duplicate PAGE definitions ([#1306](https://github.com/unikraft/unikraft/pull/1306)) by @michpappas * `plat/kvm/x86`: Remove unused variable from `lxboot_entry()` ([#1305](https://github.com/unikraft/unikraft/pull/1305)) by @michpappas * `lib/posix-time`: Add support for` CLOCK_BOOTTIME` ([#1304](https://github.com/unikraft/unikraft/pull/1304)) by @andreittr * `lib/posix-process`: Add option to context switch away from clone caller ([#1303](https://github.com/unikraft/unikraft/pull/1303)) by @mschlumpp * `lib/vfscore`: Prevent superfluous slashes in working directory ([#1302](https://github.com/unikraft/unikraft/pull/1302)) by @mschlumpp * `lib/posix-fdio`: ENOTTY for unsupported tty ioctls ([#1301](https://github.com/unikraft/unikraft/pull/1301)) by @andreittr * `lib/ukvmem`: Use correct argument type in format string ([#1300](https://github.com/unikraft/unikraft/pull/1300)) by @michpappas * `lib/posix-fdtab`: Silence unused parameter warning ([#1299](https://github.com/unikraft/unikraft/pull/1299)) by @michpappas * `lib/nolibc`: Use `strcat()` from mini-os ([#1298](https://github.com/unikraft/unikraft/pull/1298)) by @michpappas * `lib/posix-poll`: Fix `epoll` missing events ([#1297](https://github.com/unikraft/unikraft/pull/1297)) by @andreittr * `lib/posix-socket`: Introduce `CREATE`, `BIND` events ([#1296](https://github.com/unikraft/unikraft/pull/1296)) by @skuenzer * `.github/workflows`: Remove redundant checks ([#1295](https://github.com/unikraft/unikraft/pull/1295)) by @craciunoiuc * `lib/posix-process`: Add support for RLIMIT_AS ([#1294](https://github.com/unikraft/unikraft/pull/1294)) by @andreittr * `build`: Disable image compression ([#1293](https://github.com/unikraft/unikraft/pull/1293)) by @michpappas * `.github/workflows`: Enable `-Werror` on integration builds ([#1292](https://github.com/unikraft/unikraft/pull/1292)) by @michpappas * `lib/ukboot`: Ensure the auxiliary stack is backed by physical memory ([#1291](https://github.com/unikraft/unikraft/pull/1291)) by @michpappas * `checkpatch`: Update to v6.8-rc2 ([#1289](https://github.com/unikraft/unikraft/pull/1289)) by @michpappas * `drivers/ukintctrl`: Update GICv2 compatible list ([#1287](https://github.com/unikraft/unikraft/pull/1287)) by @ananos * `lib/ukboot`: Ensure the auxiliary stack is backed by physical memory ([#1286](https://github.com/unikraft/unikraft/pull/1286)) by @michpappas * `.github/workflows`: Add missing checkpatch flags ([#1285](https://github.com/unikraft/unikraft/pull/1285)) by @craciunoiuc * `lib/vfscore`: Additional mount options ([#1282](https://github.com/unikraft/unikraft/pull/1282)) by @skuenzer * `lib/nolibc`: Change default FD_SETSIZE to 1024 ([#1280](https://github.com/unikraft/unikraft/pull/1280)) by @marcrittinghaus * `lib/posix-socket`: Extend socket events ([#1279](https://github.com/unikraft/unikraft/pull/1279)) by @marcrittinghaus * `support/scripts`: Fix `checkpatch.uk` ([#1276](https://github.com/unikraft/unikraft/pull/1276)) by @skuenzer * Add README for posix-pipe library ([#1275](https://github.com/unikraft/unikraft/pull/1275)) by @RaduNichita * `support/scripts`: Auto-split words and disable info message ([#1274](https://github.com/unikraft/unikraft/pull/1274)) by @craciunoiuc * `lib/posix-mmap`: Round-up madvise length to page size ([#1273](https://github.com/unikraft/unikraft/pull/1273)) by @michpappas * `.github/workflows`: Switch to debug logging ([#1270](https://github.com/unikraft/unikraft/pull/1270)) by @craciunoiuc * Misc fixes found during the development of the Aarch64 XEN support. ([#1269](https://github.com/unikraft/unikraft/pull/1269)) by @oleksiimoisieiev * Align auxiliary stack with regular stacks and add guard pages on per-thread regular stacks ([#1264](https://github.com/unikraft/unikraft/pull/1264)) by @mogasergiu * Promote unhandled page fault message level and add stack guard page explicit message ([#1263](https://github.com/unikraft/unikraft/pull/1263)) by @mogasergiu * `lib/nolibc`: Import `strstr` from `musl` ([#1261](https://github.com/unikraft/unikraft/pull/1261)) by @mogasergiu * `lib/posix-poll`: Fix `epoll()` crash on `NULL` event arg ([#1259](https://github.com/unikraft/unikraft/pull/1259)) by @andreittr * `lib/posix-poll`: Handle unpollable files correctly ([#1258](https://github.com/unikraft/unikraft/pull/1258)) by @andreittr * `lib/posix-poll`: Fix `poll()` ignoring fd 0 ([#1255](https://github.com/unikraft/unikraft/pull/1255)) by @andreittr * `{include/,lib/*}`: Separate initializers from anonymous right-hand values ([#1245](https://github.com/unikraft/unikraft/pull/1245)) by @andreittr * `lib/posix-fdtab`: Add comments for `posix-fdtab` ([#1241](https://github.com/unikraft/unikraft/pull/1241)) by @DeliaPavel * `.github/workflows`: Move integration tests to upb runners ([#1215](https://github.com/unikraft/unikraft/pull/1215)) by @craciunoiuc * `plat/common/x86`: Use `FSGSBASE` for TLS if available ([#862](https://github.com/unikraft/unikraft/pull/862)) by @andreittr * `arm64/xen`: Introduce xen support for aarch64 architecture ([#726](https://github.com/unikraft/unikraft/pull/726)) by @oleksiimoisieiev * `[lib-lwip]`: Expose `LWIP_SO_RCVBUF` config and set on by default ([#50](https://github.com/unikraft/lib-lwip/pull/50)) by @andreittr * `[lib-lwip]`: Set system hostname when initializing interface ([#49](https://github.com/unikraft/lib-lwip/pull/49)) by @andreittr * `[lib-lwip]`: Prepare lwip to provde DNS functions to native musl ([#48](https://github.com/unikraft/lib-lwip/pull/48)) by @skuenzer * `[lib-lwip]`: Option to wait for DHCP and fail without netifs ([#47](https://github.com/unikraft/lib-lwip/pull/47)) by @skuenzer * `[lib-lwip]`: Various smaller fixes ([#46](https://github.com/unikraft/lib-lwip/pull/46)) by @mschlumpp * `[lib-musl]`: Option to handle DNS requesets by lwIP ([#74](https://github.com/unikraft/lib-musl/pull/74)) by @skuenzer A big thank you also to all those who helped in the [review process](unikraft.org/docs/contributing/review-process/): [Alexander Jung](https://github.com/nderjung), [Andrei Stan](https://github.com/andreistan26), [Cezar Craciunoiu](https://github.com/craciunoiuc), [Delia Pavel](https://github.com/DeliaPavel), [Eduard Vintilă](https://github.com/eduardvintila), [Florin Postolache](https://github.com/maniatro111), [Ioan-Teodor Teugea](https://github.com/John-Ted), [Marco Schlumpp](https://github.com/mschlumpp), [Maria Pana](https://github.com/mariapana), [Maria Sfiraiala](https://github.com/mariasfiraiala), [Michalis Pappas](https://github.com/michpappas), [Mihnea Firoiu](https://github.com/Mihnea0Firoiu), [Oleksandr Grytsov](https://github.com/al1img), [Oleksii Moisieiev](https://github.com/oleksiimoisieiev), [Radu Nichita](https://github.com/RaduNichita), [Razvan Deaconescu](https://github.com/razvand), [Razvan Virtan](https://github.com/razvanvirtan), [Sergiu Moga](https://github.com/mogasergiu), [Simon Kuenzer](https://github.com/skuenzer). --- For more information, check out [the accompanying blog post](https://unikraft.org/blog/2024-02-12-unikraft-releases-v0.16.2) or [view the full changelog](https://github.com/unikraft/unikraft/compare/RELEASE-0.16.1...RELEASE-0.16.2). --- ## Twitter Unikraft v0.16.2 is here! 🚀 Check out the blog post for details on the latest changes: https://unikraft.org/blog/2024-02-12-unikraft-releases-v0.16.2 --- ## LinkedIn Unikraft v0.16.2 is here! 🚀 It add plenty of fixes to improve application support and adds Xen support for ARM64. Check out the blog post for details on the latest changes (https://unikraft.org/blog/2024-02-12-unikraft-releases-v0.16.2) and join us on GitHub (https://github.com/unikraft/) and on Discord (https://bit.ly/UnikraftDiscord). --- ## Blog Post We are proud to announce the latest version of Unikraft, v0.16.2! ### Xen on ARM64 _This feature was championed by [Oleksii Moiseiev](https://github.com/oleksiimoisieiev) with great support from [Michalis Pappas](https://github.com/michpappas) and from [Andrei Stan](https://github.com/andreistan26) and [Maria Sfîrăială](https://github.com/mariasfiraiala)_. This release brings the Xen support for ARM64. Up until this point, Xen was only running on x86_64. Recent advances in the embedded world, with focus on automotive and security, have made Xen an important target for the ARM64 architecture. The current Xen on ARM64 work includes the following features: * Implemented of the loaders and image header for ARM64 architecture. * Implemented all basic drivers, that are essential for work on XEN, such as: memory management, `gnttab`, `xenbus` and console drivers. * Updated and tested frontend drivers for the devices: `9p`, `blkfront` and `netfront`. * Ported `pvcalls`-frontend driver from the Linux Kernel implementation. With the resurfacing of Xen support in release 0.16, Unikraft has now enhanced its Xen ecosystem with the ARM64 support. Future steps relate to using binary-compatibility mode on Xen and KraftKit integration. ### Application Catalog _This feature was championed by [Alexander Jung](https://github.com/nderjung) and [Razvan Deaconescu](https://github.com/razvand) with feedback from [Ștefan Jumărea](https://github.com/StefanJum) and [Mihnea Firoiu](https://github.com/Mihnea0Firoiu)._ The [`catalog`](https://github.com/unikraft/catalog) has been populated with additional applications and examples. Currently a large set of programming languages (JavaScript, Java, Python, Lua, Ruby, Perl) are supported, together with other applications (Nginx, Redis). Feel free to try existing applications and examples and add your own to the catalog. ### Community Activities #### Monthly Hackathon We continue organizing monthly hackathons, generally taking place in the last Saturday of each month. Hackathons take place both online and in person, generally at the National University of Science and Technology POLITEHNICA of Bucharest. We organized a monthly hackathon on Saturday, January 27, 2024. It was targeted on the 0.16.2 release, application support, CI improvements and fixes. The next monthly hackathon is scheduled to take place on Saturday, March 2, 2024. #### FOSDEM'24 Unikraft was of [FOSDEM'24](https://fosdem.org/2024/), at the [Microkernel and Component-based OS devroom](https://fosdem.org/2024/schedule/track/microkernel/), on February 3&4, 2024, in Brussels. There were two talks from the Unikraft community, videos and slides now available online: - ["Linux Binary Compatible Unikernels with Unikraft"](https://fosdem.org/2024/schedule/event/fosdem-2024-3386-linux-binary-compatible-unikernels-with-unikraft/), by [Simon Kuenzer](https://github.com/skuenzer) - ["Unikernels Are Here: Building, Running and Deploying Application Unikernels With One Command"](https://fosdem.org/2024/schedule/event/fosdem-2024-3459-unikernels-are-here-building-running-and-deploying-application-unikernels-with-one-command/) by [Răzvan Deaconescu](https://github.com/razvand) It was a good time to meet with members of the [Unikernel Alliance community](https://unikernelalliance.org/), and other friends of the Unikraft project. ### Applying for GSoC'24 With [Google Summer of Code 2024 (GSoC'24)](https://summerofcode.withgoogle.com/) being announced, Unikraft applied as an organization. We have [a healthy list of projects](https://github.com/unikraft/gsoc/blob/staging/gsoc-2024/ideas.md) that we offer to future participants, in case Unikraft is selected for GSoC'24. According to the [GSoC'24 timeline](https://developers.google.com/open-source/gsoc/timeline), we will know whether Unikraft is selected as an organization on Wednesday, February 21, 2024. If you are interested in taking part in GSoC'24, and work on operating-systems, cloud and tooling items, see the [Unikraft GSoC'24 projects page](https://github.com/unikraft/gsoc/blob/staging/gsoc-2024/ideas.md), join [Unikraft Discord](http://bit.ly/UnikraftDiscord), take part in discussions, make contributions and ask for support.