On Wed, Sep 22, 2021 at 6:08 AM Alan Somers <asom...@freebsd.org> wrote:
> tldr; should the Rust ecosystem ditch FreeBSD 10 compat for new code? > > Rust uses FFI to talk to the OS's C library. That makes cross-compiling a > breeze. Unfortunately, it also fossilizes the ABI. FreeBSD's libc makes > careful use of ELF symbol versioning. That's how we were able to change > ino_t to 64-bits while maintaining backwards-compatibility with old > binaries, for example. But the Rust toolchain isn't able to take > advantage. Right now, the toolchain uses a FreeBSD 10 ABI, and the libc > crate (which virtually all crates depend on) uses a FreeBSD 11 ABI. > How exactly is the ABI fossilized? If Rust's FFI uses run-time dynamic linking, it should be able to use dlvsym() to access the correct version of libc symbols. Damjan