Productive. Performant. Robust.

Interoptopus 🐙

Focus on the business logic, get Rust interop (almost) for free.

Bindings better than hand-written.

Writing good interop code is hard. Writing interop code that's fast and robust and nice to use is extra hard ... or it has been.

#[ffi(service)]
pub struct Hello {}

#[ffi]
impl Hello {
    pub fn world() -> Result<Self, Error> { Ok(Self {}) }
}
try
{
    var service = Hello.World();
    service.Dispose();
} 
catch(Exception) { }
# Only on Interoptopus <= 0.14 for now, the Python and C backends 
# haven't been ported to 0.16 yet. Help wanted!
service = my_lib.Hello.world()
del service

More than just performance.

Made to support real-world interop and rich APIs.

Zero Cost

Simple calls add nanosecond overhead. For complex patterns, the generated marshaling is as fast as anything you would have written yourself (and usually nicer and safer).

Works Both Ways

Need to expose your Rust library to other languages? Or load legacy code too big to vibe-code into Rust as a plugin? Doesn't matter, it does both.

Expressive

Go beyond structs and ints. Use services, data enums, callbacks, idiomatic error handling, and transparent async calls from Rust, and in any language that supports it.

Ready to deliver Rust?

Read the Docs