通过 flutter_rust_bridge 使用 Flutter
近日 Flutter 发布了 3.0 版本,如何同时享受 Flutter 和 Rust 的双重优势呢?答案是 flutter_rust_bridge
。
该项目将 Flutter 和 Rust 之间进行了高级绑定,带来了以下好处:
- 内存安全:永远不需要考虑 malloc/free。
- 功能丰富:针对特定平台优化的 Vec、可递归的 struct、零拷贝大数组、Stream(迭代器)抽象、错误(Result)处理、可取消任务、并发控制等。
- 异步编程:Rust 代码永远不会阻塞 Flutter。
- 轻量级:这不是一个包含所有内容的庞大框架,因此您可以自由使用您最喜欢的 Flutter 和 Rust 库。例如,可以优雅而简单地使用 Flutter 库(例如 MobX)的状态管理;在 Rust 中实现快速且安全的照片处理算法。
- 跨平台:Android、iOS、Windows、Linux、MacOS(Web即将推出)
- 易于代码审查:这个包只是模拟人类如何编写样板代码。没有任何魔法!
- 快速:它只是一个精简(尽管功能丰富)的包装器,没有诸如 protobuf 序列化之类的开销,因此具有高性能。(稍后进行更多基准测试)(丢弃线程池等组件以使其更快)
- 兼容 Pure-Dart:该项目与 Pure-Dart 100% 兼容。
github 地址: https://github.com/fzyzcjy/flutter_rust_bridge
blaze:Apache Spark 的矢量化查询加速器
作为 Apache Spark 的加速器,blaze 利用矢量化执行来加速查询处理。它从 Spark 获取一个完全优化的物理计划,将其映射到 DataFusion 的执行计划中,并在 Spark 执行器中执行本机计划计算,同时结合了DataFusion 库的强大功能和 Spark 分布式计算框架的可扩展性。
github 地址: https://github.com/blaze-init/blaze
OneSignal 是如何解决 Rust 内存泄露问题的
在 OneSignal 公司,大家都喜欢 Rust,并且将很多核心业务功能转换成了 Rust 技术栈开发,Journeys 就是其中一个项目。其由几个 gRPC 服务和一个用 Rust 编写的 Kafka 消费者组成,允许客户使用无代码 UI 轻松构建复杂的消息传递工作流。随着 Journeys 的采用率开始增加,以及其开始处理更多事件,他们开始注意到,其内存使用情况令人不安,并不断导致 JourneyX 进程被 OOM Killer 杀死、重启。
事实上,与很多人的第一印象相反,根据 Rust 的规则,内存泄漏是完全安全的,例如我们可以使用 std::mem::forget
故意泄漏尽可能多的内存,尽管最终会导致程序被内核杀死。
OneSignal 最终排查到,导致内存泄露的是对于 tracing 库和析构特性的不当使用,如果你尚未遇到这个问题,不妨来借鉴一下他们的经验教训,也许以后就能避免这类错误。
原文链接: https://onesignal.com/blog/solving-memory-leaks-in-rust/
-- From 日报小组 RustPlumber