Florian Weimer wrote:
* Kevin Kofler via devel:
> (And for the record, I also think that Go and Rust should not work
> that way either! It is possible to build shared libraries of Go code,
> at least one Go toolchain supports it.)
There is no stable Go ABI. Even minor updates change ABI because type
sizes and struct offsets change and are inlined across shared object
boundaries. You have to rebuild all reverse dependencies to avoid ABI
mismatches. Go's compatibility guarantees only apply at the source
level and do not preclude the addition of new struct fields, for
example.
The same goes for OCaml and yet we still manage to ship almost everything in
OCaml dynamically linked. IMHO, that is the way a binary distribution should
work, not the way Go and Rust are currently packaged. Source code does not
belong into binary packages.
Kevin Kofler