Distributor's whishlist and questions for D

Johannes Pfau via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 21 14:25:32 PDT 2016


Am Thu, 21 Apr 2016 15:34:35 +0000
schrieb Matthias Klumpp <matthias at tenstral.net>:

> Hi, and thanks for your detailed explanations!

You're welcome :-)

> On Thursday, 21 April 2016 at 11:49:13 UTC, Johannes Pfau wrote:
> > On Thursday, 21 April 2016 at 01:01:01 UTC, Matthias Klumpp 
> > wrote:  
> >> [...]  
> >
> > You currently can't install druntime or phobos headers in this 
> > directory, as each compiler will have slightly modified 
> > versions and then you end up with /usr/include/d/(dmd|gdc|ldc).  
> 
> That doesn't seem to be the case for LDC on Debian... It installs 
> Phobos into /usr/include/d/std, which makes GDC go crazy as soon 
> as LDC is installed too.
> I suspect this is a packaging bug, if so, I'll report a bug 
> against LDC.
> 

IIRC GDC makes sure to install in some lib/gcc directory to avoid such
problems. But it's possible ldc defaults to the include directory. As
an example, Arch Linux configures all compilers to
use /usr/include/dlang&(ldc|gdc|dmd):
https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/ldc#n37
https://projects.archlinux.org/svntogit/community.git/tree/trunk/folders.diff?h=packages/gdc
https://projects.archlinux.org/svntogit/community.git/tree/trunk/PKGBUILD?h=packages/dmd#n54

> > But all other library headers should be shareable between 
> > compilers and can be placed in /usr/include/d. (This might even 
> > work for phobos, I don't think we have many compiler specific 
> > changes there. But then you need to use the same frontend 
> > version for all compilers.)  
> 
> This is probably a very naive question, but: Isn't the D 
> specification finished? If the language is done, why would there 
> be a dependence of Phobos on a specific compiler?
> Or is this because the new code in Phobos might expose bugs in 
> the compiler itself, which causes these incompatibilities?

We only introduce backwards compatible changes, but it's still possible
that a new feature will be used in a new phobos version. Most of the
time it's some obscure template bug fix which will require a new
frontend version. And phobos is often one of the first libraries to use
bug fixes or new compiler features.

> [...]
> > See above. The main question is: Do you want to have a C style 
> > install of one version of a library and have gdc find the 
> > includes and library when running gdc main.a -libfoo  
> 
> For plain gdc/ldc, I'd say: yes
> 
> > or do you want dub-style support for multiple library versions 
> > which means you need to compile everything through dub.  
> 
> For stuff using dub, I'd say yes to that too ;-)

Where do ruby / python package managers install their packages? I guess
they're special as they use arch-independent sources?

Anyway, for a one-version system wide install standard /usr/include/d
and /usr/lib is probably best.
I don't know a reasonable location for a dub 'repository' though.

> >> ## Shared library support in all compilers  
> >
> > This is mainly a GDC issue. DMD and LDC support shared libs, 
> > although I don't think these libraries are ABI compatible.  
> 
> Sounds more and more like LDC is - at time - the better choice 
> over GDC...

GDC is indeed lagging behind a little bit. We're working on it ;-)


More information about the Digitalmars-d mailing list