Towards userspaceification of POSIX – part I: signal handling and IO
Redox OS has received a NGI Zero grant to improve POSIX signal handling and process management. Enhancements include userspace implementation, increased RedoxFS performance, and a more stable API for better functionality.
Read original articleRedox OS has received a NGI Zero grant to enhance its POSIX signal handling and process management, focusing on userspace implementation. The primary developer, Jacob Lorentzon, has been preparing the kernel for new inter-process communication (IPC) changes and has begun replacing the existing signal implementation with a userspace-based approach. This transition aims to maintain current support levels while improving performance. Recent updates to the Redox kernel have led to a 63% increase in RedoxFS copy performance due to an improved scheme packet format and the introduction of new syscalls, SYS_PREAD2 and SYS_PWRITE2, which allow for more efficient data handling.
The project also addresses limitations in the existing signal handling, which lacked support for several key features. The migration from redox_syscall to libredox is nearly complete, allowing for a more stable API that facilitates userspace functionality. The proposed userspace signal handling will utilize shared atomic memory to optimize signal delivery and management, aiming to reduce syscall overhead. Future work includes implementing additional signal features and a userspace process manager to enhance POSIX compliance and sandboxing capabilities. The project is on track to achieve significant milestones by the end of summer, with ongoing improvements to kernel performance and functionality.
Related
POSIX 2004 Changes
The POSIX 2024 standard is out with enhancements. Sortix OS integrates most new features, excluding some complex or optional functions like posix_close(). Implementation status varies per function for compatibility.
The Linux Kernel Matures to Having a Minimum Rust Toolchain Version
The Linux kernel is advancing to support multiple Rust compiler versions, starting with 1.78.0 and adding 1.79.0. This progress aims to stabilize Rust for Linux, enhancing driver and kernel code development efficiency.
Improving 64-bit RISC-V Linux support in Rust
Ferrous Systems and Codethink collaborate to boost 64-bit RISC-V Linux support in Rust to Tier 1 via the RISE Project. This effort aims to enhance Rust's functionality for diverse platforms, focusing on RISC-V's open instruction set architecture.
Rust for Filesystems
At the 2024 Linux Summit, Wedson Almeida Filho and Kent Overstreet explored Rust for Linux filesystems. Rust's safety features offer benefits for kernel development, despite concerns about compatibility and adoption challenges.
Rust Is Ready with Robust Toolchain Handling for Linux 6.11
Miguel Ojeda's Rust pull request for Linux 6.11 sets a minimum Rust toolchain version, enhancing kernel integration and stability. It includes build-testing and Rust bindings for firmware APIs, aiding driver development.
Normally it’s rare, except shell functionality crucially depends on it[1].
The way to think about this, IMO, is that while a disk file is more or less random-access, when you open it unavoidably turns into strange hybrid of a random-access byte array and a (seekable) byte stream (classically, the “file description”), and that is what the resulting fd and any of its copies point at. Seekable streams made some sense in the age of tape drives, but nowadays it seems to me that random-access files and non-seekable streams have enough of a gulf between them that forcing both to appear like the same kind of object is more confusing than helpful.
(I don’t know what my ideal world would look like, given I still like to direct streams from/to files. I still dislike the “file description” business rather strongly.)
[1] https://utcc.utoronto.ca/~cks/space/blog/unix/DupSharedOffse...
Maybe too much memory safety is bad for creativity?
Related
POSIX 2004 Changes
The POSIX 2024 standard is out with enhancements. Sortix OS integrates most new features, excluding some complex or optional functions like posix_close(). Implementation status varies per function for compatibility.
The Linux Kernel Matures to Having a Minimum Rust Toolchain Version
The Linux kernel is advancing to support multiple Rust compiler versions, starting with 1.78.0 and adding 1.79.0. This progress aims to stabilize Rust for Linux, enhancing driver and kernel code development efficiency.
Improving 64-bit RISC-V Linux support in Rust
Ferrous Systems and Codethink collaborate to boost 64-bit RISC-V Linux support in Rust to Tier 1 via the RISE Project. This effort aims to enhance Rust's functionality for diverse platforms, focusing on RISC-V's open instruction set architecture.
Rust for Filesystems
At the 2024 Linux Summit, Wedson Almeida Filho and Kent Overstreet explored Rust for Linux filesystems. Rust's safety features offer benefits for kernel development, despite concerns about compatibility and adoption challenges.
Rust Is Ready with Robust Toolchain Handling for Linux 6.11
Miguel Ojeda's Rust pull request for Linux 6.11 sets a minimum Rust toolchain version, enhancing kernel integration and stability. It includes build-testing and Rust bindings for firmware APIs, aiding driver development.