Rust 外语公共 abi ffi

问题描述 投票:0回答:1

我正在编写一种语言,希望它与 Rust、C++ 和其他一些语言二进制兼容。问题是我找不到有关 rusts abi 的信息(名称修改、结构布局、调用约定等)。

我听说某个地方 Rust 还没有稳定的公共 abi。但我找不到该说法的来源。如果可能的话,我想严格避免 c abi。

rust ffi abi
1个回答
0
投票

Rust 确实没有稳定的 ABI,所以你无法兼容它。

来源:

https://doc.rust-lang.org/stable/reference/type-layout.html#the-rust-representation,关于类型布局:

Rust
代表

...

此表示对数据布局没有其他保证。

https://github.com/rust-lang/rfcs/issues/600#issuecomment-526033825

目前没有计划为某些新的

repr(v1)
repr(Rust)
引入类似于大规模稳定 ABI 的任何内容,并且语言团队内部对此持积极反对态度。因此,我将结束这个超级广泛的愿望清单问题。

Name mangling 实际上是定义的,虽然不是针对旧的、当前默认使用的版本,而是针对v0

(可以与
-C symbol-mangling-version=v0
一起使用)。 
请参阅此处

人们正在努力实现“稳定,但比 C ABI 更高级别”的 ABI,目前称为

crabi

,其他语言也可能将其集成。然而,到目前为止,它甚至还没有在 Rust 中进行实验性实现,所以即使这个实验成功,前面的路还很长。
    

© www.soinside.com 2019 - 2024. All rights reserved.