Hello everyone!
Reflections of 2023
For me, 2023 was dominated by virtualization-related topics and getting Rust to work on Genode.
The first few months of the year I was busy wrapping up support for SVM in base-hw and still wrapping my head around bits and pieces of the Genode OS Framework. Preliminary SVM support got merged as part of the 23.05 release and the same release saw a proof of concept port of the Rust toolchain to Genode.
Through collaboration with my colleagues, notably Sebastian Sumpf, by release 23.08 we refined our Rust support to the point where we managed to use an unmodified FreeBSD toolchain, which greatly lowered the effort for adoption or maintenance.
Meanwhile, I ported a first complex Rust package, which thanks to the ever improving Goa tool went very smoothly. Building on the great work and advice by Alexander Böttcher and Christian Helmuth, I built a new-paradigm virtualization interface across all kernels and architectures supported by Genode. Tackling corner cases on all platform proved to be a bigger challenge than expected, but the new interface got released with Sculpt OS 23.10, and has proven itself in daily use for Genode release 23.11.
Testing my implementation of Intel's VMX virtualization in base-hw revealed a few shortcomings that still need to be addressed before we can take it for a spin with Sculpt OS, which brings me to my plans for this year:
Plans for 2024
First of all, I want to wrap up my virtualization work and adapt base-hw for more dynamic workloads to get it ready for use in Sculpt OS on x86. After that, I would like to look into worthwhile optimizations of its virtualization support.
Chiming in on the theme of usability, I would like to explore how we can refine resource allocation for Sculpt OS Components to scale from the Pinephone to a (potentially multi-monitor) 4k setup.
Last but not least, I'm still pondering in which direction to take our Rust support. I would love to explore how an idiomatic Rust component would interact with our framework, but as I have written previously[1], we currently don't have a strong enough use case to craft a Genode ABI for use with a no_std Rust component. That being said, I hope to contribute a little rusty streak to the colorful exploration of (GUI) usability for next year to widen our current scope of Rust- and multi-language support. Maybe a little helper application that combines our libc interface with a 3rd-party (graphical) library and a few select direct calls to Genode? I have to admit that I don't yet have a specific project in mind though.
I can only agree with Norman that it was a pleasure to see Genode mature in everyday use on our development devices, and I'm excited what the next developments in the GUI stack, (ACPI) platform discovery and input device, multi-monitor and suspend to RAM support will bring.
Best wishes,
Ben
[1] https://lists.genode.org/pipermail/users/2023-October/008825.html