如何在编程语言之间传递数据?

How to communicate data between programming languages?

我正在考虑开始一个新项目(桌面应用程序)。 性能是必须的,我需要像 Rust 这样快速可靠的语言。另一方面,我想使用 OS 提供的原生 UI 工具包,例如 SwiftUI.

我对此做了一些研究,但没有找到任何具体的东西。

综上所述,我想使用 SwiftUI 作为前端,Rust 作为后端,数据通信速度最快,延迟最低。最好的方法是什么?

注意:也许上面的一些解决方案没有意义。有不对的请指正。

我不知道 Swift 因为我过去用 C++/C# 做过一些 IPC。

如果你想要“最高速度的数据通信和最低的延迟”,除了 C FFI 别无选择。这是非常快的,因为所有代码都在一个进程中,并且您可以非常轻松地共享内存而无需任何复制。

我不知道 Swift 但 Rust 代码可以提供 C API 允许从任何其他支持 C FFI 的语言调用。 您可以 link 动态地(通过将箱子类型设置为 cdylib 构建 DLL/.so)或静态地(通过将箱子类型设置为 staticlib)编写 Rust 代码。 您可以在此处阅读有关 FFI 的更多信息:https://doc.rust-lang.org/nomicon/ffi.html

如果你真的不需要“最高速度的数据通信和最低的延迟”(你可能因为你曾经考虑过文件作为选项),你可以考虑使用 2 个不同的进程,它们使用 OS 级机制进行互操作. 最常见的方法是使用管道:

您可以尝试使用这个 crate:https://crates.io/crates/os_pipe

此外,在 Unix 上您可以使用 unix domain sockets。这与网络套接字非常相似,但速度更快。