51个版本 (27个重大更改)
0.28.1 | 2024年8月13日 |
---|---|
0.28.0 | 2024年6月11日 |
0.27.3 | 2024年6月3日 |
0.27.0 | 2024年3月26日 |
0.5.0 | 2020年11月9日 |
#8 in FFI
84,556 每月下载量
用于 29 个crate(28个直接使用)
385KB
6.5K SLoC
UniFFI - Rust的多语言绑定生成器
UniFFI是一个用于在Rust中构建跨平台软件组件的工具包。
对于急于了解的读者,请参阅 UniFFI用户指南 或 UniFFI示例。
通过在Rust中编写您的核心业务逻辑并使用“对象模型”描述其接口,您可以使用UniFFI来帮助您
- 将您的Rust代码编译成共享库,以便在各个目标平台上使用。
- 生成绑定以从不同的目标语言中加载和使用库。
您可以使用接口定义文件或使用proc-macros来描述您的对象模型。
UniFFI目前被Mozilla广泛用于Firefox移动和桌面浏览器中;一旦用Rust编写,自动生成的绑定就可以从Kotlin(用于Android应用程序)和Swift(用于iOS应用程序)调用该功能。它还拥有一个不断壮大的用户群体,为许多用户带来了各种酷炫的功能。
UniFFI支持Kotlin、Swift、Python和Ruby,并提供第三方绑定为C#和Golang。外部还可以开发其他语言的绑定,我们欢迎为这里列出的绑定做出贡献。请参阅第三方外部语言绑定。
用户指南
您可以在UniFFI 用户指南中了解更多关于使用该工具的信息。
我们认为它已准备好投入生产使用,但UniFFI距离1.0版本还有很长的路要走,内部工作仍在进行中。我们尽力避免破坏简单的消费者,但随着时间的推移,更高级的功能可能会在升级时被破坏。
词源和发音
ˈjuːnɪfaɪ. 发音与“unify”押韵。
一个混合词,也与“unify”双关,表示从许多语言访问的一个代码库的联合。
uni - [拉丁 ūni-, 来自 ūnus, one] FFI - [缩写,外部功能接口]
替代工具
我们知道的试图解决类似问题的其他工具包括
- Diplomat - 请参阅我们关于该工具不同方法的说明
- Interoptopus
(如果认为其他工具应该被列出,请打开一个PR!)
第三方语言绑定
- Kotlin 多平台支持。该存储库包含UniFFI的Kotlin多平台绑定生成,让您可以针对JVM和本地。
- Go绑定
- C#绑定
- Dart绑定
外部资源
有一些第三方资源可以使您更容易地使用UniFFI
- IDEA平台uniffi-dl插件支持
.udl
文件。它提供了语法高亮、代码折叠、代码补全、引用解析和导航(以及其他功能)等功能,用于UniFFI定义语言(UDL)。 - cargo swift,一个Cargo插件,可以从Rust代码构建Swift包。它提供了一个用于设置UniFFI存储库的init命令,以及用于从Rust代码构建Swift包的package命令,无需额外的配置或构建脚本。
- Cargo NDK Gradle插件允许您使用
cargo-ndk
构建Rust代码,这通常会使Android库构建更轻松。 uniffi-starter
是一个最小的项目,以紧凑的方式展示了一个完整的UniFFI项目中的广泛功能。它包括完整的Android库构建过程、XCFramework生成脚本和示例Swift包结构。
(如果认为其他资源应该被列出,请打开一个PR!)
贡献
如果您对这个工具感兴趣,请帮助我们开发它!您可以
- 查看贡献指南。
- 在此GitHub上提交或处理问题。
- 加入#uniffi:mozilla.org房间在Matrix上的讨论。
行为准则
该项目由Mozilla的社区参与指南管理。
依赖关系
~1.4–3.5MB
~72K SLoC