What work is being done on Rust's ABI?


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?


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


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


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?


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


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


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.