The Asterinas community is happy to announce a new version of Asterinas, 0.16.0!
This version marks a significant leap forward with initial support for the LoongArch CPU architecture. We’ve also greatly expanded our Linux ABI compatibility by adding nine new system calls, including memfd_create
and pidfd_open
.
Key enhancements in this release include broadened functionality for UNIX sockets (now supporting file descriptor passing and the SOCK_SEQPACKET
socket type), partial support for netlink sockets of the NETLINK_KOBJECT_UEVENT
type, and the foundational implementation of CgroupFS. Our testing infrastructure has also seen a significant upgrade with the integration of system call tests from the Linux Test Project (LTP). Plus, we’ve adopted Nix for building the initramfs, which streamlines our cross-compilation and testing workflows.
We’d also like to extend a huge congratulations to members of the Asterinas community whose groundbreaking research papers about Asterinas were recently accepted by prestigious academic conferences:
- “Asterinas: A Linux ABI-Compatible, Rust-Based Framekernel OS with a Small and Sound TCB” published at USENIX ATC’25
- “Converos: Practical Model Checking for Verifying Rust OS Kernel Concurrency” published at USENIX ATC’25
- “CortenMM: Efficient Memory Management with Strong Correctness Guarantees” to be published at SOSP’25
Demo: Booting on a Lenovo Laptop
While our early development has primarily focused on improving Asterinas for cloud environments and VMs, the enhancements in version 0.16.0 have allowed us to achieve a significant new feat: successfully booting Asterinas on a Lenovo laptop and even running a snake game!
A special shout-out to Ruihan Li for his excellent work in making this happen and capturing the demo video!
Asterinas Kernel
We have made the following key changes to the Asterinas kernel:
- New system calls or features:
- Memory:
- Processes and IPC:
- File systems and I/O in general:
- Enhanced system calls or features:
- Processes:
- File systems and I/O in general:
- Sockets and network:
- Enable UNIX sockets to send and receive file descriptors
- Support
SO_PASSCRED
&SCM_CREDENTIALS
&SOCK_SEQPACKET
for UNIX sockets - Add
NETLINK_KOBJECT_UEVENT
support for netlink sockets (a partial implementation) - Support some missing socket options for UNIX stream sockets
- Truncate netlink messages when the user-space buffer is full
- Fix the networking address reusing behavior (
SO_REUSEADDR
)
- Security:
- New device support:
- Enhanced device support:
- Test infrastructure:
OSTD & OSDK
We have made the following key changes to OSTD:
- CPU architectures:
- x86-64:
- RISC-V:
- LoongArch:
- CPU:
- Memory management:
- Trap handling:
- Task and scheduling:
- Test infrastructure:
We have made the following key changes to OSDK:
Contributors
This release was made possible by contributions from 21 individuals. Thank you for your amazing work!
- Ruihan Li (81 commits)
- Qingsong Chen (31 commits)
- jiangjianfeng (29 commits)
- 王英泰 (28 commits)
- Chen Chengjun (24 commits)
- Zhang Junyang (24 commits)
- Wang Siyuan (16 commits)
- Marsman1996 (13 commits)
- Cautreoxit (8 commits)
- Hsy-Intel (6 commits)
- Zejun Zhao (5 commits)
- Yang Zhichao (4 commits)
- Hongliang Tian (3 commits)
- js2xxx (3 commits)
- Wei Zhang (2 commits)
- Yuke Peng (2 commits)
- Philipp Schuster (1 commit)
- Ruize Tang (1 commit)
- YanWQ-monad (1 commit)
- stuuupidcat (1 commit)
- yuankunzhang (1 commit)
We’re incredibly proud of the progress made in Asterinas 0.16.0 and are excited about the new possibilities these changes unlock. We encourage you to explore the new features and contribute to the ongoing development!