@Дмитрий Полунин The only supported way to link to a Rust dylib is through rustc, i.e., referencing it as an extern crate. When loading a dylib in this way, rustc will look at the dylib's metadata to see what rustc version produced the dylib and report an error if that's a different version from its own. In this usage scenario, there is no problems of the sort you expect, it's exactly like using an rlib except that the resulting executable refers to the dylib instead of containing all the code from the library directly (although it will generally contain some code originating from that library, other code does not need to be duplicated in each executable).
In a typical plugin scenario, where you want to be able to discover load dynamic libraries at runtime, this crate type is inappropriate. Not only is the ABI unstable, "dylib" libraries necessarily contain the full machine code that you might expect to exist in them. The proper crate type to use for plugins is cdylib, which use a "C ABI" interface (exporting unmangled function symbols using the extern "C" ABI and types which have a stable ABI because they correspond to C types). This is less convenient but side-steps all ABI instability problems, at least as long as you listen to the improper_ctypes lint.