Spritely on Genode - Can it use the kernel's capabilities?

This is something I’ve been thinking about for some time, I think it would be really interesting to build. It seems to me that creating a zero-copy shared-memory based IPC transport for OCapN opens up so many doors towards building a malleable personal computing environment. On Genode this would probably mean using it’s shared memory IPC primitives discussed here: Shared Memory, GPU access in Genode, a capability-based OS framework and combining this with something like Preserve’s zero copy binary encoding.

Once you have a transport like this, and get OCapN working over it, you would have an incredible computing environment to build out a coherent personal computing stack on top of. GUI applications would be actors that would render their UI to an internal buffer, then send their rendered frame as an OCapN message to the “window manager actor”. Actors could pass around audio buffers using the same transport to give you a capability version of Pipewire.

On Linux there is a project that implements a shared memory IPC system: GitHub - eclipse-iceoryx/iceoryx2: Eclipse iceoryx2™ - true zero-copy inter-process-communication in pure Rust and it’s really neat what you can do with something like this, but it unfortunately uses an “ambient authority” security system. Though on linux, I don’t think there’s a non-hacky way of implementing something like this while using things like mmap() under the hood. :confused:

To more directly answer your question: From my understanding of OCapN, it should definitely be possible to use Genode’s IPC systems as OCapN Netlayers and I would love to potentially help implement something like this in the future.

2 Likes