What does HackerNews think of uniffi-rs?

a multi-language bindings generator for rust

Language: Rust

check out uniffi for a complete workflow for FFI in many languages: https://github.com/mozilla/uniffi-rs
Mozilla's uniffi-rs is really good. You write a common IDL and the bindings are generated automatically. It supports Swift, Kotlin, Python, Ruby and JavaScript (not in the official repo).

https://github.com/mozilla/uniffi-rs

Did a brief search on the rust ffi, seems that mozilla has something interesting shared on the topic https://github.com/mozilla/uniffi-rs and https://blog.mozilla.org/data/2022/01/31/this-week-in-glean-...
I've worked on some projects (private and commercial) where embedding Rust into one of those targets was required: iOS, Android, Flutter, macOS, Web. I've played around with a variety of approaches because there exist multiple solutions depending on the platform. Apart from Web/Wasm, where Rust really shines, the next best solution is uniffi by Mozilla, which has quite solid iOS/Android support:

https://github.com/mozilla/uniffi-rs

While this works, the bigger pain (at least on iOS) is that the Rust-Compiler LLVM and Xcode LLVM are not always in sync leading to strange bugs. Also, packaging Rust libraries into a nice XCFramework (or even SPM Module) works, but usually involves hacky shell scripts.

The reason why you'd still want to do this is if there's a Rust library that has no equivalent on the Kotlin or Swift side. There're a lot of good crates / libraries for Rust would require an expensive re-implementation in Swift or Kotlin. Also, because Rust doesn't have a garbage collector, it is easier to embed in garbage collected languages like Kotlin without running into situations where the two garbage collectors don't agree.