Rust 引擎的实现方式¶
用 Rust 实现的引擎主要包含两个组件
桥接引擎¶
由于 Rust 引擎仍然需要与现有的同步基础设施协同工作,因此引入了 桥接引擎 的概念。简而言之,它只是现有 同步服务 和 Rust 代码之间的垫片。
桥接¶
“Golden Gate” 是一个用于帮助任何用 Rust 实现的同步引擎与桌面进行桥接的实用程序。换句话说,它是一个“生锈的桥梁”——明白了吗?明白了吗?这是 Lina 的双关语之一,它一直流传至今!
将 Rust 同步组件与桌面集成面临的主要挑战之一是不同的线程模型。Rust 代码倾向于同步 - 大多数函数都会阻塞调用线程以执行磁盘或网络 IO 操作 - 它假设使用者会将此委托给其他线程。
因此,golden_gate 为 Rust 同步引擎提供了后台线程委托 - gecko 在主线程上调用 golden-gate,它将调用封送到工作线程,结果会封送回主线程。
值得注意的是,golden_gate 仅用于同步引擎部分 - 组件的其他部分(即提供与同步无关的功能的部分)将有其自己的机制。例如,webext-storage 桥接 使用类似的技术 它有一些深入的文档。