[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Building and using shared libraries using gccgo


Am Dienstag, den 05.02.2013, 10:53 +0000 schrieb Steve McIntyre:
> Paul Wise wrote:
> >On Tue, Feb 5, 2013 at 7:14 AM, Michael Stapelberg wrote:
> >
> >> Assuming we ship Go libraries compiled as shared libraries, where do we
> >> get the SONAME from? There is no mechanism for Go libraries to declare
> >> an ABI break. Inventing one and asking all upstream projects to adopt it
> >> seems unlikely to succeed. Ignoring SONAMEs altogether could make
> >> software break on the user’s installation. Then again, the same could
> >> happen to every interpreted language, e.g. Perl.
> FFS, yet another new language where the implementors have refused to
> think ahead and consider ABI handling? Idiots. :-(
> >Could it be automatically created based on some sort of hash of the
> >exported symbols and their argument lists?
> >
> >If not, based on your discussions with upstream I would say that the
> >culture of the Go development community is incompatible with shared
> >libraries. So your choices are:
> >
> >Convince Go upstream to add an officially-supported and encouraged
> >shared library mechanism that includes ABI mechanisms.
> >
> >Invent some automatic, Debian-specific method for ABI stuff. Like
> >Provides: go-foo-abi-<hash> and put that info in shlibs.
> >
> >Use static libraries, Built-Using and frequent binNMUs.
> Considering the mess that we already have with (for example) Haskell
> in this respect, I would vote strongly against accepting or pretending
> to support any more languages in this vein.

At least to me my work on Haskell in Debian feels more than pretending,
and from personal experience with the creators of the language, I have
strong doubts that they are Idiots.

In fact I don’t see how you can have modern features like
cross-module-inlining without having to potentially recompile depending

And it is clearly not (anymore) the case that ABIs are not handled in
Haskell. In fact they are handled in a very precise way that allows us
to guarantee on the package level that user’s installations won’t get
broken. I think our priorities should be the user’s experience, and we
should be willing to accept a little infrastructural complications on
our side for that goal.

Also, I’d like to point out that the challenges provided by languages
like OcaML and Haskell have motivated improvements to our infrastructure
that benefit the project in general, such as the BD-Uninstallable
support in wanna-build that has prevented a lot of failed builds (and
hence manual intervention).


Joachim "nomeata" Breitner
Debian Developer
  nomeata@debian.org | ICQ# 74513189 | GPG-Keyid: 4743206C
  JID: nomeata@joachim-breitner.de | http://people.debian.org/~nomeata

Attachment: signature.asc
Description: This is a digitally signed message part

Reply to: