2 ms·
API breakage and ABI breakage are two different things.
by mgaunard 3y ago
API breakage and ABI breakage are two different things.
- nrabulinski 3y agoRust has no stable ABI (simplification for the sake of discussing crates) and instead sources of all dependencies are fetched and compiled along with your program hence we’re talking about crate’s API and not a library’s ABI And yes, I’d say that if a program did not error at runtime but after upgrading your library it started to - that’s still a breaking change (even worse than one that you can detect at build time)
- mgaunard 3y agoThe build system needs to know what source files it needs to rebuild and for which ones it can just reuse previously-generated build artifacts, typically by detecting what changed in the source. What changed in the source outside of your project is driven by whether the semver changed. Semver not changing means that the source didn't change and you can link existing binaries as-is. Then there is the whole business of dynamic linking.