Re: Using modern APIs in Rust on FreeBSD

From: Damjan Jovanovic <damjan.jov_at_gmail.com>
Date: Wed, 22 Sep 2021 04:27:09 UTC
On Wed, Sep 22, 2021 at 6:08 AM Alan Somers <asomers@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