awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
mozilla avatar

mozilla/uniffi-rs

0
View on GitHub↗
4,326 stars·300 forks·Rust·mpl-2.0·15 viewsmozilla.github.io/uniffi-rs↗

Uniffi Rs

uniffi-rs is a Rust FFI binding generator and multi-language binding tool. It functions as an automated binding scaffolder that creates type-safe foreign function interfaces and native wrappers for Rust libraries in languages such as Swift, Kotlin, and Python.

The project provides a system for cross-language interface definition, allowing functions and data structures to be specified in a shared format to ensure consistent API signatures across platforms. It further serves as an FFI memory management layer, handling object lifetimes and thread safety when sharing state between Rust and foreign language runtimes.

The tool covers broad capability areas including API integration for mapping internal data structures to foreign classes and the automation of binding generation during the build process. It supports the development of multi-platform SDKs by managing the transfer of data, the mapping of errors to native exceptions, and the execution of asynchronous functions across language boundaries.

Features

  • FFI Export Macros - Annotates functions and traits with export macros to expose them across FFI without a separate definition file.
  • Binding Scaffolding Generators - Automates creation of boilerplate FFI code and native wrappers to expose Rust functions to foreign languages.
  • Rust Language Binding Generators - Generates type-safe FFI bindings from Rust code to Swift, Kotlin, and Python for cross-platform library use.
  • Multi-Platform SDK Development - Builds multi-platform SDKs by defining Rust interfaces once and producing native wrappers for iOS, Android, and desktop.
  • FFI Memory Management Bridges - Manages Rust object lifetimes and thread safety across the FFI boundary with reference counting.
  • Foreign Function Bindings - Produces type-safe native wrappers in Swift, Kotlin, Python, and Ruby that translate idiomatic calls into FFI invocations.
  • FFI Export Proc Macros - Exports Rust functions and types to FFI using derive and attribute macros that produce C-compatible entry points.
  • Interface Definition Languages - Defines cross-language APIs in a shared UDL file for consistent type signatures across targets.
  • Unified Definition Language Files - Declares functions and types in a UDL file to expose them to foreign-language bindings.
  • FFI Enum Exposures - Derives enum traits to make variants and associated data available across FFI.
  • Cross-Language Data Records - Derives record traits on structs to make fields accessible as cross-language data types.
  • Kotlin Binding Generators - Creates type-safe Kotlin bindings from Rust interface definitions for Android and JVM use.
  • Swift Binding Generators - Creates type-safe Swift bindings from Rust interface definitions for iOS and macOS use.
  • Rust Mobile Library Integrations - Integrates Rust libraries into iOS and Android apps with automatic memory management and thread safety.
  • FFI Thread-Safety Enforcement - Handles object lifetimes and thread safety when sharing Rust state with foreign language runtimes.
  • Error-to-Exception Mappings - Maps Rust errors to native exceptions and executes async functions from foreign language runtimes.
  • Rust-C++ Async Bridges - Bridges Rust async functions to foreign language concurrency primitives like coroutines or callbacks.
  • Pluggable Codegen Architectures - Provides a pluggable codegen architecture that supports custom binding generators for additional languages.
  • Cross-Language Callbacks - Exports traits so foreign code can pass callback implementations into Rust functions.
  • FFI Object Exposures - Derives object traits on structs to expose them across FFI with mixed proc-macro and definition methods.
  • Custom FFI Type Mappings - Maps Rust types to FFI-compatible representations for automatic cross-language conversion.
  • Rust-to-Python Binding Generators - Creates type-safe Python bindings from Rust interface definitions for cross-platform scripting.
  • Cross-Language Error Enums - Derives error enums that become native exceptions in foreign code across the FFI boundary.
  • Result-to-Exception Adapters - Converts Rust Result types and error enums into native exceptions in each foreign language.

Star history

Star history chart for mozilla/uniffi-rsStar history chart for mozilla/uniffi-rs

How this analysis was created: This summary and feature list were written by an AI model that read the project's README and public documentation pages. Each feature links to the documentation it came from; stars, license and language come straight from the GitHub API. The model does not read the source code, and the analysis is refreshed when the project is re-analysed. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Frequently asked questions

What does mozilla/uniffi-rs do?

uniffi-rs is a Rust FFI binding generator and multi-language binding tool. It functions as an automated binding scaffolder that creates type-safe foreign function interfaces and native wrappers for Rust libraries in languages such as Swift, Kotlin, and Python.

What are the main features of mozilla/uniffi-rs?

The main features of mozilla/uniffi-rs are: FFI Export Macros, Binding Scaffolding Generators, Rust Language Binding Generators, Multi-Platform SDK Development, FFI Memory Management Bridges, Foreign Function Bindings, FFI Export Proc Macros, Interface Definition Languages.

What are some open-source alternatives to mozilla/uniffi-rs?

Open-source alternatives to mozilla/uniffi-rs include: rustwasm/wasm-bindgen — wasm-bindgen is a bindings generator and interop layer designed to map data types and functions across the boundary… dtolnay/cxx — CXX is a code generator that produces a safe, zero-overhead FFI bridge between Rust and C++. It lets functions and… alipay/fury — Fury is a multi-language binary serialization framework designed for encoding domain objects and complex graphs to… grpc/grpc — gRPC is a language-agnostic remote procedure call framework designed for high-performance communication between… dop251/goja — Goja is a JavaScript engine and ECMAScript compliant interpreter implemented entirely in Go. It serves as an embedded… apache/thrift — Thrift is a cross-language remote procedure call framework and data serialization protocol. It provides an interface…

Open-source alternatives to Uniffi Rs

Similar open-source projects, ranked by how many features they share with Uniffi Rs.
  • rustwasm/wasm-bindgenrustwasm avatar

    rustwasm/wasm-bindgen

    9,057View on GitHub↗

    wasm-bindgen is a bindings generator and interop layer designed to map data types and functions across the boundary between WebAssembly and JavaScript. It functions as a foreign function interface that synthesizes the necessary boilerplate to enable bidirectional communication between Rust and the browser runtime. The project generates glue code and wrappers that automate the conversion of complex types, allowing Rust functions to be exported as JavaScript modules and browser APIs to be imported into Rust. It uses procedural macros to define these interfaces and synthesizes bindings based on

    Rust
    View on GitHub↗9,057
  • dtolnay/cxxdtolnay avatar

    dtolnay/cxx

    6,664View on GitHub↗

    CXX is a code generator that produces a safe, zero-overhead FFI bridge between Rust and C++. It lets functions and data types from either language be used directly in the other, with static type safety enforced at compile time and no copying, serialization, or runtime checks across the boundary. The bridge supports the full range of cross-language interactions: Rust can call C++ functions and use C++ types, and C++ can call Rust functions and use Rust types. Standard library types like strings, vectors, and smart pointers are mapped automatically between the two languages, while opaque types

    Rust
    View on GitHub↗6,664
  • alipay/furyalipay avatar

    alipay/fury

    4,412View on GitHub↗

    Fury is a multi-language binary serialization framework designed for encoding domain objects and complex graphs to facilitate cross-language data exchange. It includes an interface definition language compiler that translates schema definitions into idiomatic native types and serialization boilerplate across multiple languages. The project distinguishes itself through a zero-copy binary reader that allows specific fields to be accessed without deserializing the entire object, as well as an object graph serializer that preserves circular references and referential integrity. It also features a

    Java
    View on GitHub↗4,412
  • grpc/grpcgrpc avatar

    grpc/grpc

    44,891View on GitHub↗

    gRPC is a language-agnostic remote procedure call framework designed for high-performance communication between distributed services. It utilizes a structured interface definition language to generate consistent client stubs and server skeletons, enabling applications to invoke methods on remote servers as if they were local objects. By leveraging the HTTP/2 transport layer, the framework supports efficient binary serialization and multiplexed data exchange across diverse programming environments. The framework distinguishes itself through its support for flexible communication patterns, incl

    C++
    View on GitHub↗44,891
  • See all 27 alternatives to Uniffi Rs→