Abstract
Rust provides a seamless way to consume and provide a C-compatible ABI.
We’ll explore the tools available and the best practices to integrate rust-components in a larger C projects, C/assembly components in a Rust projects and expose a Rust crate as a normal C library.
Having a C-compatible optional ABI is a boon when you want to integrate a rust component in a larger C project or leverage well tested high speed assembly in your rust project.
In this talk we’ll see which are the best tools for the purpose and see how far we can go in making rust code integrate seamlessly in a larger system.
We’ll talk about build system integration, bindings auto-generation, known pitfalls and easy and not so easy way around them while exploring actual solutions adopted by librsvg, rav1e, crav1e and relibc.