HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mozilla
uniffi-rs
Rust2021–2025
mozilla / uniffi-rs

uniffi-rs

a multi-language bindings generator for rust

12Distinct people
14Mentions
0Explicit recommenders
5.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

a multi-language bindings generator for rust

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year14 dated mentions

Observed mentions: 2021-10-27 18:22:54 UTC to 2025-05-18 07:10:34 UTC.

012342021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC303
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC413
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC312

What Hacker News says

14 sources
salgorithm·Apr 6, 2025Submission

Show HN: Gobley – Call Rust from Kotlin Multiplatform

Hi Hacker News, we've just released Gobley v0.2.0! Gobley provides Gradle build integration between Kotlin Multiplatform (KMP) and Cargo for Android, iOS, and JVM. Kotlin/JS and Kotlin/WASM support is planned, so stay tuned! We also have some documentation for newcomers: - Hands-on tutorial: https://gobley.dev/docs/tutorial - Cross-compilation tips to integrate Kotlin, Rust, and C++: https://gobley.dev/docs/cross-compilation-tips - Cross-platform example app (Android, iOS, Windows API, & Linux GTK): https://github.com/gobley/gobley/tree/main/examples/app/src - GitHub discussions: https://github.com/gobley/gobley/discussions Gobley is a fork of the (now archived) uniffi-kotlin-multiplatform-bindings (https://gitlab.com/trixnity/uniffi-kotlin-multiplatform-bind...) which is built on Mozilla’s excellent (still active) UniFFI (https://github.
Read the rest
com/mozilla/uniffi-rs) project. Please try it out and let us know what you think!
1 points · Open discussion
Limited for now, Koto's main role as an embedded language has meant that I haven't had a need, but I would like to provide bindings for other languages at some point, and to enable dynamically loaded Rust libraries. I'd start by trying UniFFI [1] which looks much simpler than the approach of manually writing a C API and using that as a foundation for higher-level language bindings. This would also likely be the starting point for a package management system (if there ends up being demand for one). Rust doesn't have a stable ABI so to make sure that dynamically loaded Rust packages are compatible, either Koto would need to be in the business of Rust toolchain management so that packages can be recompiled when needed, or an API layer would be needed. There are some projects that provide ABI-compatibility shims but I don't like the idea of h
Read the rest
aving two separate approaches to FFI, so I'd want to try to build on the foreign-FFI layer once it's in place. I'm half hoping that by the time I'm interested in working on this Rust will have decided to pursue ABI stability. And there's also something in the back of my mind that's yelling 'Wasm!' at me but I would need someone wiser to convince me that it would be the right direction. [1] https://github.com/mozilla/uniffi-rs
In Koto Programming Language
Javascript calling back and forth to Rust which calls in to Kotlin & Swift you say? There are few pieces to put in place here, but it's something we've discussed. The current task is teaching uniffi to support multiple foreign languages at the same time: <https://github.com/mozilla/uniffi-rs/issues/2295>. But, yeah, what we're launching today takes you closer to your dream than it was yesterday. The rest, work is progressing. What we're launching today is
In Uniffi for React Native: Rust-Powered Turbo Modules
The article provides a very detailed exploration of all of the fun challenges you can face designing FFIs with Rust, but there's a good chance you can "get away" with simpler approaches if you think ahead a bit. In our case, we call into Rust from Kotlin using JNI [0] and Swift using swift-bridge [1]. Thankfully our use case for the FFI [2] is for non-performance-critical calls and the data structures are fairly simple, so we just serialize objects with JSON. No major issues so far. One thing I am surprised hasn't been mentioned so far is Mozilla's UniFFI [3] which seems to solve some of the issues brought up in the article. We plan to switch to that once our FFI requirements become more complex. [0] https://docs.rs/jni/latest/jni/ [1] https://github.com/chinedufn/swift-bridge [2] https://www.firezone.dev/kb/architecture/tech-stack#client
Read the rest
In Crossing the impossible FFI boundary, and my gradual descent into madness
Kinda. Did a dummy project in a few languages to see what I wanted to use for the big project. Looked at Go, Swift, Kotlin MP, and Rust. I liked Kotlin tools, and small binary size. If I knew I wasn't going to need more libraries in the future I might pick it. Go is great, although binaries a bit large with the runtime packed in, and TinyGo too limiting. Rust: I couldn't find a good multi-language binding package so I skipped it... then later found https://github.com/mozilla/uniffi-rs It could be a top contender.
In Ask HN: How's your experience with Compose/Kotlin multiplatform?
You can, though. From a random Cargo package I have downloaded to my computer: [dependencies] uniffi = { git = "https://github.com/mozilla/uniffi-rs" } You can also specify revision/branch/etc. Alternatively, you can do: [registries] maven = { index = "https://rust.maven.org/git/index" } [dependencies] some-package = { index = "maven", version = "1.1" } Obviously Maven doesn't host any Rust crates (yet?), this is just a theoretical example. Very few projects bother to host their own registry, partially because crates.io doesn't allow packages that load dependencies from other indices (for obvious security reasons). The registry definition can also be done globally through environment variables: CARGO_REGISTRIES_MAVEN="https://rust.maven.org/git/index". Furthermore, the default registry can be set in a g
Read the rest
lobal config file. In theory, all you need to do is publish a crate is to `git push upstream master`, and your package will become available on https://github.com/username/crate-name (or example.com/your-package if you choose to host your git repo on there). Personally, I don't like using other people's URL packages, because your website can disappear any moment for any reason. Maybe you decide to call it quits, maybe you get hit by a car, whatever the reason, my build is broken all of the sudden. The probability of crates.io going down is a lot lower than the probability of packages-of-some-random-guy-in-nebraska.ddns.net disappearing
In Was Rust Worth It?
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 g
Read the rest
ood 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.
In Integrating a Rust module into an Android app
I think they should give up on Flutter for Web and just focus on mobile and desktop (and maybe extend use on Smart Watches, Smart TV, embedded instead). Too many people still remember Java Applets, google's GWT, Flash/Flex and how it ended. They are out of focus trying to support Web as well. I had also higher expectation regarding Dart FFI - I think with their ffigen we are still only in ctypes like python bindings territory. Nowhere near something like pybind11 [0] for c++ bindings yet. [0] https://github.com/pybind/pybind11 [1] https://github.com/mozilla/uniffi-rs
In All you should know about Flutter development

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.