What work is being done on Rust's ABI?


#1

We’re getting snagged up quite badly implementing a plugin system in Rust.

What is the status of formalizing Rust’s ABI?

I hope this post encourages the Rust community to try to set out resolving this issue, my fears are this’ll become a C++'s ABI which drags on forever. Not something that bodes well at all. Especially since Rust is such a modular language.

I understand this is a huge task, and Rust is still in flux. What can be done?


#2

I don’t think there are any plans whatsoever in the near future to have a stable ABI.


#3

yes, this is far future work. https://github.com/rust-lang/rfcs/issues/600 is the tracking issue.


#4

The idea now is to use LLVM IR as a way to communicate these Agents that’ll be plugged into remote systems. IR is more portable than binaries but it could have issues as LLVM IR is a moving target. So as a stopgap till Rust’s ABI comes in, i’d imagine distributing as LLVM IR is the best possible alternative. It totally flies in the face of http://hintjens.com/blog:85, does anyone have opinions on this?


#5

LLVM IR is not portable, so it might work kinda, but with problems.


#6

I suppose pnacl might be an alternate option in the nearer future ( https://github.com/rust-lang/rust/pull/28355 ) ?


#7

Using LLVM IR instead of binary code will do nothing to address the fact that libstd might have totally different symbols every time a new version is compiled.