On Mon, Feb 19, 2024 at 5:43 AM Benjamin Lamowski
<benjamin.lamow...@genode-labs.com> wrote:
>
> Hi Nathan,
>
> Thanks for your interest in Genode and Rust!
>
> > On the last rust update, it seemed like the Genode team determined one of 
> > the next steps would be to explore rust on top of native Genode framework. 
> > Would there be a project that would be able to help achieve this goal?
>
> We don't have a clear path towards native Genode components in Rust,
> because a native Rust Genode API would depend on a Genode ABI
> (Application Binary Interface), for which we don't have a clear vision
> yet. Right now, the Genode interfaces are defined by their C++
> implementation (supplemented with a Genode C API for the narrow scope of
> porting device drivers). Therefore adding native Rust bindings would
> entail defining a Genode ABI so that the Rust API can be implemented
> independently from the C++ implementation.
>
>
>  > I thought of working with the Gnode api to create a transition layer
> so that components written in rust can directly work with the api. Would
> this be a project be helpful or would something else be more appropriate?
>
> Our road map[1] goal of Rust-based components for an email scenario is
> meant as an opportunity to venture from components that run purely on
> the libc / POSIX ABI towards incorporating native interfaces. In that,
> your suggestion goes in the right direction. However, instead of
> attempting to create a whole transition layer, I would suggest that you
> approach this from building a specific Genode component. Get the
> examples from the Genode Foundations book[2] to work if you haven't
> already, then build a libc-based Rust package with Goa (see [3] for an
> example) and explore creating the necessary bindings for a native Rust
> component from there.
>
> Maybe others from the Genode team can share their perspective on this,
> but from previous discussions within Genode Labs (cf. this mailing list
> post: [4]), my hunch is that if we build an official Genode Rust API, it
> will be implemented from scratch on a future Genode ABI. Rust bindings
> based on Rust's FFI will likely play a role on the path towards this
> goal, so we welcome you experimenting with this. Just be advised that a
> sort of "genode-rs" translation layer that is based on a FFI to the C++
> API is unlikely to be the long term solution that we at Genode Labs will
> endorse.
>
> I hope this clarifies our vision for Rust on Genode a bit. Enjoy
> experimenting!
>
> Best wishes,
> Ben
>
> [1] https://genode.org/about/road-map
> [2] 
> https://genode.org/documentation/genode-foundations/23.05/getting_started/Hello_world.html
> [3] https://genodians.org/atopia/2023-10-26-a-first-complex-rust-package
> [4] 
> https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/message/EQIT63S75WQB6HTNU7I7SU4KWWZ5TYOD/


I must say I was rather pleased and impressed by my initial
impressions of the work that Nick Spinale (CC'd) has done on
rust-native interfaces within the seL4 ecosystem. In particular, he
has illustrated one possible manifestation of what ergonomic APIs
might look like in rust for event-driven, capability-oriented,
component-based systems, and also proven a viable path with
incremental milestones towards an increasingly capable rust-native
runtime environment, with sensible layering of dependencies, etc.
within a system in somewhat similar spirit to Genode. I highly
recommend taking a look for inspiration.

Reasonable entry-points might be:
- https://github.com/seL4/rust-sel4
- https://sel4.github.io/rust-sel4/
- https://www.youtube.com/watch?v=jR2i4Y2Aq3o ("Rust Support in seL4
Userspace: Update and Roadmap" -- seL4 summit 2023)

I have wanted to take a deeper look myself, but alas have yet to
prioritize doing so.

Regards,
Jean-Philippe
_______________________________________________
users mailing list -- users@lists.genode.org
To unsubscribe send an email to users-le...@lists.genode.org
Archived at 
https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/message/MN6KBHE2EGQE57XLXWOTAD3IECU5HR6B/

Reply via email to