{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreigqljxshpcrcmzkssqaqlfrf5qkzj53thllef3yizcpdzq4s67uni",
    "uri": "at://did:plc:ivbknywyskln22er3nkssdhl/app.bsky.feed.post/3mig44x7yhpr2"
  },
  "path": "/t/stable-type-identifiers-a-missing-piece-for-crabi-and-export/24093?page=2#post_23",
  "publishedAt": "2026-03-31T15:35:26.000Z",
  "site": "https://internals.rust-lang.org",
  "textContent": "The v0 scheme resolves symbol mangling for the linker, but it remains a compiler implementation detail; it is not unique to the language. It can change between versions of rustc without being considered a breaking change.\n\nWhat I propose is different: elevating that information to an explicit identifier guaranteed by the language, one that does not change between compiler versions. Not something that depends on the compiler, but on the language.\n\nThe problem with the 64-bit hash is a consequence of this; if the identifier isn’t stable across compilers, it doesn’t matter whether you use 64 or 128 bits. First you need stability, then collision resistance.\n\nv0 is an excellent basis for deriving those identifiers, but it doesn’t address the need for a permanent, guaranteed TypeId.",
  "title": "Stable type identifiers: a missing piece for crABI and export"
}