{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreify4firnevzdwmdur5nplnn5uqsedipz27d42nghvpegqhpq6nrpy",
"uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3misiunbyvdo2"
},
"path": "/t/pre-pre-rfc-dynamic-library-proposal/24135#post_4",
"publishedAt": "2026-04-05T19:45:07.000Z",
"site": "https://internals.rust-lang.org",
"textContent": "> Good news: these files already exist. They are called metadata files, with extension `.rmeta`. They contain _exactly_ the information that the compiler of some dependent code needs in order to compile against the library.\n\nHey that's cool to know. I assume that maybe some additional information would be needed. But in either case having these files in place is a good start\n\n> This doesn't work very well the moment you have some kind of indirection. If your function accepts a `&Foo` then the ABI of the function cannot dictacte how to pass the `Foo` behind the reference. This in turns means that either the caller's `Foo` is the same as the dynamic library's or they are different `Foo`s.\n\nNot sure I follow, if the compiler has the ABI of Foo in the `.rimport` file and it also has the ABI of the struct at the callsite then surely it could compare the two and error out if they don't match? Isn't this how Stabby does it's compatability checks between libraries?",
"title": "[Pre-Pre-RFC] Dynamic library proposal"
}