介绍Uniffi for React Native:基于Rust的Turbo模块
今天,Mozilla和Filament发布了Uniffi for React Native——一个我们一直在使用的新工具,用于以开源许可方式在Rust中构建React Native Turbo模块。这使得数百万编写跨平台React Native应用的开发者能够使用Rust(一种以安全性和性能优势著称的现代编程语言)来构建应用核心逻辑的单一实现,从而在iOS和Android上无缝工作。
这对我们和与Mozilla共同开发该库的Filament来说是一个重大胜利。我们认为这对许多其他开发者也会非常棒。更少的代码是好事。内存安全是好事。性能是好事。我们三者兼得,再加上在我们喜爱的更多地方使用我们热爱的语言的乐趣。
对于熟悉React Native的人来说,它是一个创建跨平台应用的优秀框架,但也存在挑战。React Native应用依赖单个JavaScript线程,这在处理复杂任务时可能会拖慢速度。开发者传统上通过两次编写代码(一次为iOS,一次为Android)或使用难以管理的C++来解决这个问题。Uniffi for React Native通过使开发者能够将繁重任务卸载到Rust来提供更好的解决方案,现在Rust可以轻松与React Native集成。因此,您将获得更快、更流畅的应用和简化的开发流程。
Uniffi for React Native的工作原理
Uniffi for React Native是一个uniFFI绑定生成器,用于通过Turbo模块从React Native使用Rust。它让我们在足够高的抽象级别上工作,专注于应用需求,而不是迷失在定制原生跨平台开发的繁琐技术细节中。它提供工具来生成:
- 用于从TypeScript调用Rust并返回的TypeScript和JSI C++
- 将绑定安装到运行中的React Native库的Turbo模块
我们对这项工作的持续感到兴奋。2020年,我们开始将Uniffi作为Rust的现代“一次编写,随处运行”工具集。自从我们将该技术开发为一种技巧,以获得Firefox Sync核心(用Rust编写)的单一实现,然后部署到我们的Android和iOS应用中以来,Uniffi已经走了很长的路!自那时起,Mozilla已使用uniffi-rs成功在数亿用户使用的移动和桌面产品中部署Rust。这段Rust代码运行重要的子系统,如书签和历史同步、Firefox Suggest、遥测和实验。除了Mozilla,Uniffi还在Android(在AOSP中)、知名安全产品和一些社区熟悉的复杂库中使用。
目前,Uniffi for React Native项目是一个早期版本。我们还没有酷炫的登陆页面或仓库中的示例(即将到来!),但开源贡献者Johannes Marbach已经受到Unomed的赞助,使用Uniffi for React Native为Matrix SDK创建一个React Native库。
需要了解如何尝试它吗?我有两个我们非常兴奋的用途:
- 使用Rust将计算密集型代码卸载到多线程/内存安全的子系统中,以逃避React Native中单线程JS的性能瓶颈。如果您了解,您就懂。
- 在您的React Native应用中利用令人惊叹的Rust crate库。Filament的一位开发者最近展示了这有多强大。凭借对Rust的初步了解,他们能够在crates.io上找到一个快速的模糊哈希库,以替换缓慢的TypeScript实现,并在同一天使其运行。我们希望我们能够真正进一步改进工具,使这种优化尽可能容易。
Uniffi代表了跨平台开发向前迈出的一步,结合了Rust的力量和React Native的灵活性,为应用开发者解锁了新的可能性。
我们很高兴让社区探索可能的事物。请在Github上查看该库,并加入Matrix上的对话。
披露:除了这次合作,Mozilla Ventures是Filament的投资者。
关于 Mark Mayo Mozilla Innovations的技术专家 更多Mark Mayo的文章…
关于 Tony Haile Filament的CEO 更多Tony Haile的文章…