This release marks a significant milestone in the evolution of Asterinas as we transition from "just a kernel" to a more complete, usable system. The headline of this release is the introduction of **Asterinas NixOS**, our first distribution that integrates the Asterinas kernel with the NixOS userspace, and enables real applications and services out of the box—including **XFCE**, **Podman**, and **systemd**. To support this growth, we are also strengthening our governance by establishing **the formal RFC (Request for Comments) process**, ensuring that major architectural decisions—starting with Asterinas NixOS itself—are designed transparently and collaboratively.
On the architecture front, **RISC-V support** has improved dramatically, with support for SMP (Symmetric Multiprocessing), FPU (Floating-Point Unit), VirtIO, and the SiFive HiFive Unleashed QEMU machine type. The kernel has also expanded with a new **input subsystem** (supporting keyboards and mice) and initial support for **namespaces and cgroups**. For filesystem developers, the big news is the addition of an **FS event notification mechanism (`inotify`)**, a new **ioctl infrastructure**, and a new filesystem type, **ConfigFS**. Finally, we are introducing **`sctrace`**—a dedicated tool for tracing and debugging syscall compatibility—now published on [crates.io](https://crates.io/crates/sctrace).
## Asterinas NixOS
We have made the following key changes to Asterinas NixOS:
* [Add NixOS as a distribution for Asterinas](https://github.com/asterinas/asterinas/pull/2621)
* [Add the XFCE Nix module](https://github.com/asterinas/asterinas/pull/2670)
* [Add the Podman Nix module](https://github.com/asterinas/asterinas/pull/2683)
* [Support the sleeping and stopping states in `/proc/[pid]/stat`](https://github.com/asterinas/asterinas/pull/2491)
* [Introduce `VmPrinter`](https://github.com/asterinas/asterinas/pull/2414) and [refactor procfs with `VmPrinter`](https://github.com/asterinas/asterinas/pull/2583)
* [Fix a lot of bugs in procfs](https://github.com/asterinas/asterinas/pull/2553)
* Ext2
* [Support Ext2 handling of FIFO and devices](https://github.com/asterinas/asterinas/pull/2658)
This release introduces initial support for the **LoongArch CPU architecture**, a major milestone for the project. Version 0.16.0 also significantly expands our Linux ABI compatibility with the addition of **nine new system calls** such as `memfd_create` and `pidfd_open`.
Key enhancements include expanded functionality for **UNIX sockets (file descriptor passing and the `SOCK_SEQPACKET` socket type)**, partial support for **netlink sockets of the `NETLINK_KOBJECT_UEVENT` type**, the initial implementation of **CgroupFS**, and a major testing improvement with the integration of system call tests from the **Linux Test Project (LTP)**. We've also adopted **[Nix](https://nix.dev/manual/nix/2.28/introduction)** for building the initramfs, streamlining our cross-compilation and testing workflow.
## Asterinas Kernel
We have made the following key changes to the Asterinas kernel:
* New system calls or features:
* Memory:
* [Add the `mremap` system call](https://github.com/asterinas/asterinas/pull/2162)
* [Add the`msync`system call based on an inefficient implementation](https://github.com/asterinas/asterinas/pull/2154)
* [Add the `memfd_create` system call](https://github.com/asterinas/asterinas/pull/2149)
* Processes and IPC:
* [Add the `pidfd_open` system call along with the `CLONE_PIDFD` flag](https://github.com/asterinas/asterinas/pull/2151)
* File systems and I/O in general:
* [Add the `close_range` system call](https://github.com/asterinas/asterinas/pull/2128)
* [Add the `fadvise64` system call (dummy implementation)](https://github.com/asterinas/asterinas/pull/2125)
* [Add the `ioprio_get` and `ioprio_set` system calls (dummy implementation)](https://github.com/asterinas/asterinas/pull/2126)
* [Add the `epoll_pwait2` system call](https://github.com/asterinas/asterinas/pull/2123)
* Enhanced system calls or features:
* Processes:
* [Add `FUTEX_WAKE_OP` support for the `futex` system call](https://github.com/asterinas/asterinas/pull/2146)
* [Add `WSTOPPED` and `WCONTINUED`support to the `wait4` and `waitpid` system calls](https://github.com/asterinas/asterinas/pull/2166)
* [Add more fields in `/proc/*/stat` and `/proc/*/status`](https://github.com/asterinas/asterinas/pull/2215)
* File systems and I/O in general:
* [Add a few more features for the `statx` system call](https://github.com/asterinas/asterinas/pull/2127)
* [Fix partial writes and reads in writev and readv](https://github.com/asterinas/asterinas/pull/2230)
* [Introduce `FsType` and `FsRegistry`](https://github.com/asterinas/asterinas/pull/2267)
* Sockets and network:
* [Enable UNIX sockets to send and receive file descriptors](https://github.com/asterinas/asterinas/pull/2176)
* [Support `SO_PASSCRED` & `SCM_CREDENTIALS` & `SOCK_SEQPACKET` for UNIX sockets](https://github.com/asterinas/asterinas/pull/2268)
* [Add`NETLINK_KOBJECT_UEVENT`support for netlink sockets (a partial implementation)](https://github.com/asterinas/asterinas/pull/2109)
* [Support some missing socket options for UNIX stream sockets](https://github.com/asterinas/asterinas/pull/2192)
* [Truncate netlink messages when the user-space buffer is full](https://github.com/asterinas/asterinas/pull/2155)
* [Fix the networking address reusing behavior (`SO_REUSEADDR`)](https://github.com/asterinas/asterinas/pull/2277)