Am Thu, 14 Apr 2016 16:29:31 +0000
schrieb Matthias Klumpp <matth...@tenstral.net>:
> On Thursday, 14 April 2016 at 16:05:04 UTC, Matthias Klumpp wrote:
> > On Tuesday, 12 April 2016 at 16:57:41 UTC, Joseph Rushton
> > Wakeling wrote:
> >> On Tuesday, 12 April 2016 at 01:58:13 UTC, Matthias Klumpp
> >> wrote:
> >>> On Monday, 11 April 2016 at 21:58:55 UTC, Joseph Rushton [...]
> >>> I can ask, but given that the Xenial final freeze is on 24.
> >>> April (release on 26.) and changing compiler versions that
> >>> late in the cycle is potentially dangerous, I guess there is
> >>> only a slim chance of success... On the pro-side is that
> >>> having a beta compiler in the LTS release is undesirable, but
> >>> even then I need to find an Ubuntu developer who does have
> >>> time to do the sync and get the feature-freeze-exception. LDC
> >>> FTBFSing on armel in Debian (and not entering testing due to
> >>> that at time) is also an issue :-/
> >> Ouch :-( Well, if you are happy to look into it, that would
> >> be great -- no pressure, though. :-)
> FTR, I filed
> https://bugs.launchpad.net/ubuntu/+source/ldc/+bug/1570006 - if
> we are lucky, this still has a chance to go in.
> As for further dub stuff, it is important that
> https://github.com/D-Programming-Language/dub/issues/811 is
> addressed, so we can build software using dub without downloading
> stuff from the internet.
> Btw, since D doesn't know traditional headers like C/C++, how
> would I link against a library without having the full sourcecode
> present somewhere?
(1) Interface files
We have .di interface files as a replacement for C/C++ headers (although
the .di extension is only a convention, you can also use the .d
extension). These files do not contain function bodies, but they still
need the complete source code for templates. The compilers can generate
interface files from normal source code.
OSS projects do not use interface files though: It prevents inlining of
functions and there's no real benefit for OSS projects. Interface files
are (theoretically) useful for closed source libraries if you don't
want to ship the source code.
(2) Linking against installed libraries
The compilers can of course link against pre-compiled D libraries. IIRC
dub does not have integrated support for this. The real problem is the
D compilers are not ABI compatible. If you built a library with GDC you
can't use it with LDC or DMD. This is one reason why dub compiles
everything from source. (Even different frontend versions can sometimes
break ABI compatibility).