0.4.0 #
You can find the tag and associated downloads on GitHub.
Release notes #
General #
- Update to Microkit 2.3.0, which includes seL4 16.0.0.
- Update to sDDF 0.7.0, libvmm 0.2.0 and MicroPython 1.26.1.
- Example systems now inherit their toolchain setup from sDDF’s
tools/makesnippets, so they can be built with GCC by settingTOOLCHAIN=gcc. Clang remains the default, and thevmmexample still requires it. - The Nix flake follows the stable
nixos-25.05channel instead ofnixos-unstable. - Add
MAINTAINERS.mdto document component ownership and maintainers across the repository.
Breaking changes #
- The required
sdfgenversion is now 0.35.0. - The minimum Python version is now 3.12.
- Components link against a musl-based libc instead of the minimal libc that sDDF provides.
- The POSIX, socket and file system helper libraries have moved out of the NFS
client and the MicroPython component into
lib/.
POSIX support #
Running unmodified POSIX code on LionsOS previously required linking against a
minimal shim inside the NFS client (originally written just to build libnfs).
We have extracted and expanded that shim into a standalone library any
component can use, adding broader file and socket support (client and server,
blocking and non-blocking), memory allocation, and time. File system
protocol status codes are now mapped directly to standard POSIX error numbers.
The libc documentation describes what is and is not supported.
Firewall Example #
- Add a firewall example to LionsOS.
- The firewall supports traffic filtering and routing on platforms with 2 or more interfaces.
- It is configurable at build time via the firewall metaprogram, and at run time using the webserver component.
- The example includes a docker environment for running the firewall on QEMU, as well as an automated testing script that sends traffic across each pair of interfaces.
WebAssembly #
- Add an example system that runs the WebAssembly Micro Runtime on top of the POSIX library, with access to both a file system and the network.
- The
wasi-sdktoolchain is provided by the Nix flake.
File systems #
- The file system protocol has more precise error cases, so clients can determine why a command failed.
- The NFS component builds against upstream
libnfsrather than a patched fork. - Various minor fixes to the FAT and NFS components.
MicroPython #
- Rework I²C support to use the new sDDF I²C protocol through the non-blocking
libi2cAPI. - Use sDDF’s
lib_sddf_lwipfor networking instead of the component’s own lwIP port. - Improve the keyboard interrupt implementation.
- Fix RISC-V builds.
Examples #
- Add POSIX and WebAssembly test systems that exercise file and socket functionality, and run them in CI along with the other examples.
- Kitty: use MMIO rather than PCI for the virtIO GPU on QEMU, simplifying passthrough configuration for the framebuffer VM.
- Example metaprograms use sDDF’s shared board definitions instead of carrying their own copies.
- On QEMU, lwIP no longer performs address conflict detection, which noticeably shortens the time an example takes to get a DHCP lease.