On Tuesday, 12 April 2016 at 07:03:44 UTC, Russel Winder wrote:
[...]
If the Debian ldc2 compiler is crashing on the same source that
gdc compiles that sounds like a packaging problem. Or use of
outdated D? ldc is generally much more up to date that gdc so
shouldn't the order be ldc | gdc | d-compiler?
I didn't get it to compile properly with LDC, which might of
course have been due to the outdated LDC version in Debian and
Ubuntu at that time.
Also, GDC is available for more architectures and wasn't stuck in
unstable at the time dub was packaged.
On Debian Sid ldc2 is 2.068.2 and gdc doesn't advertise which
version of D it is.
Should be D2, there doesn't seem to be much D1 code around
anymore...
I assume that the DMD package from dlang, or better d-apt, sets
the d- compiler property. Should dmd be prefered if it is
present?
I think so, since when installing it from non-free 3rd-party
sources, the user made an explicit choice for DMD.
In terms of packaging, the packaging doesn't really care, any D
compiler will satisfy the requirements of the dub package.
> And has dub's config been tweaked accordingly in terms of
> which compiler it prefers to use ... ?
I didn't touch that, since dub seems to automatically find the
right compiler. The preference seems to be dmd >> gdc >> ldc2,
which looks sane to me.
Sane, yes, but dmd → ldc2 → gdc is probably a better choice
simply because ldc tends to be more up to date than gdc – this
is not a maintainer problem just a release flow problem.
I can't comment on that... In any case, users and packagers can
choose whatever D compiler they prefer, there is no "enforcement"
of any kind happening (just default choices).
It's really bad that GDC isn't part of the official GCC yet,
and the standard libraries differ so much between the
compilers (mainly due to phobos progressing very quickly).
GDC is definitely ipart of the GCC thanks to Iain's ongoing
efforts, with support from others. GDC would not be in the
Debian repository if it wasn't part of GCC.
That's unfortunately not the case. If you download
gcc-5_5.3.1.orig.tar.gz from
https://packages.debian.org/source/sid/gcc-5 , you can see that
GDC was manually inserted. I think the problem might lie in the
GDC frontend code not being subjected to the FSF CLA, but that's
just a guess - Iain likely knows more :)
The problem here is that the Fedora GCC packagers package
GCC-Go but do not package GDC. This means GDC is not present in
any of Fedora, CentOS, RHEL, Scientific Linux.
The last on this list is more important than you might think.
Coming from a scientific background, I am with you on this...
Problem again is that gccgo is part of GCC, so you just need to
enable it, while gdc is out-of-tree.
Also the ldc package in Rawhide is only 0.16.1 which is really
rather ancient.
Jup - to be honest, I think the state of the free compilers in
Linux distributions is really something which is limiting D the
most at time.
New programming languages like Rust have it much easier in that
regard.
For Debian Stretch I assume the situation will be much better
though :-) (given the state of the LDC and GDC Git repos).
I think the policy simply has to be to make sure that LDC and
GDC are as up to date as possible in Sid – which already
happens
Jup - ideally, the Debian D team would give some advice on
default compilers and versions. But that team seems to be dead.
– and in Fedora Rawhide – which no-one but me seems to think is
important.
Ideally find a Fedora developer (who ideally also works on RHEL)
and convince him. The easiest way to get the compiler in would be
a killer application written in D which requires an up-to-date
toolchain. E.g. Docker is written in Go, many people want Docker,
so Go is up-to-date (that's over-simplified, but it generally
works that way...).
Cheers,
Matthias