[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5817":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},5817,"uniffi-rs","mozilla\u002Funiffi-rs","mozilla","a multi-language bindings generator for rust","https:\u002F\u002Fmozilla.github.io\u002Funiffi-rs\u002F",null,"Rust",4662,314,41,263,0,1,9,90,3,74.99,"Mozilla Public License 2.0",false,"main",true,[27,28],"ffi-layer","rust-crate","2026-06-12 04:00:27","# UniFFI - a multi-language bindings generator for Rust\n\nUniFFI is a toolkit for building cross-platform software components in Rust.\n\nFor the impatient, see [**the UniFFI user guide**](https:\u002F\u002Fmozilla.github.io\u002Funiffi-rs\u002F)\nor [**the UniFFI examples**](https:\u002F\u002Fgithub.com\u002Fmozilla\u002Funiffi-rs\u002Ftree\u002Fmain\u002Fexamples#example-uniffi-components).\n\nBy writing your core business logic in Rust and describing its interface in an \"object model\",\nyou can use UniFFI to help you:\n\n* Compile your Rust code into a shared library for use on different target platforms.\n* Generate bindings to load and use the library from different target languages.\n\nYou can describe your object model in an [interface definition file](https:\u002F\u002Fmozilla.github.io\u002Funiffi-rs\u002Fudl_file_spec.html)\nor [by using proc-macros](https:\u002F\u002Fmozilla.github.io\u002Funiffi-rs\u002Fproc_macro\u002Findex.html).\n\nUniFFI is currently used extensively by Mozilla in Firefox mobile and desktop browsers;\nwritten once in Rust, auto-generated bindings allow that functionality to be called\nfrom both Kotlin (for Android apps) and Swift (for iOS apps).\nIt also has a growing community of users shipping various cool things to many users.\n\nUniFFI comes with support for **Kotlin**, **Swift**, **Python** and **Ruby** with 3rd party bindings available for **C#** and **Golang**.\nAdditional foreign language bindings can be developed externally and we welcome contributions to list them here.\nSee [Third-party foreign language bindings](#third-party-foreign-language-bindings).\n\n## User Guide\n\nYou can read more about using the tool in [**the UniFFI user guide**](https:\u002F\u002Fmozilla.github.io\u002Funiffi-rs\u002F).\n\nWe consider it ready for production use, but UniFFI is a long way from a 1.0 release with lots of internal work still going on.\nWe try hard to avoid breaking simple consumers, but more advanced things might break as you upgrade over time.\n\n### Etymology and Pronunciation\n\nˈjuːnɪfaɪ. Pronounced to rhyme with \"unify\".\n\nA portmanteau word that also puns with \"unify\", to signify the joining of one codebase accessed from many languages.\n\nuni - [Latin ūni-, from ūnus, one]\nFFI - [Abbreviation, Foreign Function Interface]\n\n## Alternative tools\n\nOther tools we know of which try and solve a similarly shaped problem are:\n\n* [Diplomat](https:\u002F\u002Fgithub.com\u002Frust-diplomat\u002Fdiplomat\u002F), which is focused more on C\u002FC++ interop.\n* [Interoptopus](https:\u002F\u002Fgithub.com\u002Fralfbiedert\u002Finteroptopus\u002F)\n\n(Please open a PR if you think other tools should be listed!)\n\n## Third-party foreign language bindings\n\n* [Javascript bindings](https:\u002F\u002Fgithub.com\u002Fjhugman\u002Funiffi-bindgen-react-native): running in a web page, targeting WASM; and React Native targeting Android, iOS. The repository contains tooling to generate bindings for [Hermes](https:\u002F\u002Fgithub.com\u002Ffacebook\u002Fhermes), [creating Turbo Modules](https:\u002F\u002Freactnative.dev\u002Fblog\u002F2024\u002F10\u002F23\u002Fthe-new-architecture-is-here#new-native-modules), and for creating a [`wasm-bindgen` bindings crate](https:\u002F\u002Frustwasm.github.io\u002Fwasm-bindgen).\n* [Kotlin Multiplatform support (Gobley)](https:\u002F\u002Fgithub.com\u002Fgobley\u002Fgobley). The repository contains Kotlin Multiplatform bindings generation for UniFFI, letting you target both JVM and Native.\n* [Go bindings](https:\u002F\u002Fgithub.com\u002FNordSecurity\u002Funiffi-bindgen-go)\n* [C# bindings](https:\u002F\u002Fgithub.com\u002FNordSecurity\u002Funiffi-bindgen-cs)\n* [Dart bindings](https:\u002F\u002Fgithub.com\u002FNiallBunting\u002Funiffi-rs-dart)\n* [Java bindings](https:\u002F\u002Fgithub.com\u002FIronCoreLabs\u002Funiffi-bindgen-java)\n* [Node bindings](https:\u002F\u002Fgithub.com\u002Flivekit\u002Funiffi-bindgen-node) (early development)\n* [Node bindings](https:\u002F\u002Fgithub.com\u002Fcriccomini\u002Funiffi-bindgen-node-js)\n\n### External resources\n\nThere are a few third-party resources that make it easier to work with UniFFI:\n\n* [Plugin support for `.udl` files](https:\u002F\u002Fgithub.com\u002FLonami\u002Funiffi-dl) for the IDEA platform ([*uniffi-dl* in the JetBrains marketplace](https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F20527-uniffi-dl)). It provides syntax highlighting, code folding, code completion, reference resolution and navigation (among others features) for the [UniFFI Definition Language (UDL)](https:\u002F\u002Fmozilla.github.io\u002Funiffi-rs\u002F).\n* [cargo swift](https:\u002F\u002Fgithub.com\u002Fantoniusnaumann\u002Fcargo-swift), a cargo plugin to build a Swift Package from Rust code. It provides an init command for setting up a UniFFI crate and a package command for building a Swift package from Rust code - without the need for additional configuration or build scripts.\n* [Cargo NDK Gradle Plugin](https:\u002F\u002Fgithub.com\u002Fwillir\u002Fcargo-ndk-android-gradle) allows you to build Rust code using [`cargo-ndk`](https:\u002F\u002Fgithub.com\u002Fbbqsrc\u002Fcargo-ndk), which generally makes Android library builds less painful.\n* [`uniffi-starter`](https:\u002F\u002Fgithub.com\u002Fianthetechie\u002Funiffi-starter) is a minimal project demonstrates a wide range of UniFFI in a complete project in a compact manner. It includes a full Android library build process, an XCFramework generation script, and example Swift package structure. \n\n(Please open a PR if you think other resources should be listed!)\n\n## Contributing\n\nIf this tool sounds interesting to you, please help us develop it! You can:\n\n* View the [contributor guidelines](.\u002Fdocs\u002Fcontributing.md).\n* File or work on [issues](https:\u002F\u002Fgithub.com\u002Fmozilla\u002Funiffi-rs\u002Fissues) here in GitHub.\n* Join discussions in the [#uniffi:mozilla.org](https:\u002F\u002Fmatrix.to\u002F#\u002F#uniffi:mozilla.org)\n  room on Matrix.\n\n## Code of Conduct\n\nThis project is governed by Mozilla's [Community Participation Guidelines](.\u002FCODE_OF_CONDUCT.md).\n","UniFFI 是一个用于生成 Rust 代码多语言绑定的工具包。它允许开发者通过编写 Rust 核心业务逻辑并定义其接口，自动生成跨平台共享库及多种目标语言（如 Kotlin、Swift、Python 和 Ruby）的绑定代码。此外，社区还提供了 C# 和 Golang 的第三方绑定支持。此项目特别适用于需要在不同编程环境中复用 Rust 代码的情景，比如 Mozilla 在 Firefox 移动和桌面浏览器中就广泛使用了 UniFFI 来实现 Android 和 iOS 应用的功能调用。尽管尚未达到 1.0 版本，但 UniFFI 已被认为适合生产环境使用。",2,"2026-06-11 03:05:06","top_language"]