12个不稳定版本 (3个破坏性更新)

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.25.2 2023年11月20日

#115FFI

Download history 18580/week @ 2024-04-27 18694/week @ 2024-05-04 25859/week @ 2024-05-11 24132/week @ 2024-05-18 20305/week @ 2024-05-25 21474/week @ 2024-06-01 23411/week @ 2024-06-08 20112/week @ 2024-06-15 18252/week @ 2024-06-22 16247/week @ 2024-06-29 18921/week @ 2024-07-06 17002/week @ 2024-07-13 21555/week @ 2024-07-20 19807/week @ 2024-07-27 21066/week @ 2024-08-03 17320/week @ 2024-08-10

82,659 每月下载量
26 个crate中使用(通过 uniffi_bindgen

MPL-2.0 许可证

290KB
6.5K SLoC

UniFFI - Rust的多语言绑定生成器

UniFFI是一个用于在Rust中构建跨平台软件组件的工具包。

对于急于了解的,请参阅UniFFI用户指南UniFFI示例

通过在Rust中编写您的核心业务逻辑并在“对象模型”中描述其接口,您可以使用UniFFI帮助您

  • 将您的Rust代码编译成适用于不同目标平台的共享库。
  • 生成绑定,以便从不同的目标语言中加载和使用库。

您可以使用接口定义文件或通过使用proc-macros来描述您的对象模型。

UniFFI目前被Mozilla在Firefox移动和桌面浏览器中广泛使用;在Rust中编写一次,自动生成的绑定允许从Kotlin(用于Android应用程序)和Swift(用于iOS应用程序)中调用该功能。它还有不断壮大的用户社区,为许多用户提供了各种酷炫的东西。

UniFFI 支持使用 KotlinSwiftPythonRuby,并为 C#Golang 提供第三方绑定。外部还可以开发其他语言的绑定,我们欢迎您贡献这些绑定。请参阅 第三方外语绑定

用户指南

您可以在 UniFFI 用户指南 中了解更多关于使用此工具的信息。

我们认为它已准备好投入生产使用,但 UniFFI 距离 1.0 版本还有很长的路要走,内部还有很多工作正在进行。我们尽力避免破坏简单的消费者,但随着时间的推移,更高级的功能可能会在升级过程中出现问题。

词源和发音

ˈjuːnɪfaɪ. 发音与 "unify" 相似。

一个合成词,也玩文字游戏 "unify",以表示从许多语言访问一个代码库的连接。

uni - [拉丁语 ūni-, 来自 ūnus, one] FFI - [缩写,Foreign Function Interface]

其他工具

我们还了解一些试图解决类似问题的其他工具

(如果您认为其他工具应该被列出,请打开一个 PR!)

第三方外语绑定

外部资源

以下是一些第三方资源,它们使使用 UniFFI 更容易

(如果您认为其他资源应该被列出,请打开一个 PR!)

贡献

如果您对这个工具感兴趣,请帮助我们开发它!您可以

行为准则

本项目遵循Mozilla的社区参与指南

依赖项

约2.3–3.5MB
约66K SLoC