On 2016-04-21 03:01, Matthias Klumpp wrote:

## How complete are the free compilers?
This is an important question, because we would need to know whether we
can expect D code to be compiled by any compiler, or whether there are
tradeoffs that must be made.
This question is asking manly how complete LDC and GDC are compared to
each other, but also whether both are implementing the D2 specification
completely.

GDC does not completely implement the D2 specification. Not sure about LDC. GDC is several versions behind DMD. LDC are much closer to DMD these days. Perhaps only one version behind.

The question here is also, which compiler should be the default (which
IMHO would be the most complete, most bug-free actively maintained one ^^).

I would suggest LDC because it more up to date with DMD.

## Why is every D compiler shipping an own version of Phobos?
If one assumes that the D2 language specification is stable, and D
compilers implement it completely,

No. It tries to avoid breaking changes on purpose (there will always be bug fixes that breaks code and introduction of new bugs). But new additions are added almost for each new release.

the question is why every compiler is shipping an own copy of Phobos.

I'm guessing because Phobos might depend on bugs that was fixed in the latest release and new features are used early. A language feature might also have been added because it was needed for a larger Phobos addition.

## Where should D source-code / D interfaces be put?
If I install a D library or source-only module as a distribution
package, where should the sources be put? So far, I have seen:
  * /usr/include/d
  * /usr/include/dlang/
  * /usr/include/d/(dmd|gdc|ldc)
  * /usr/share/dlang
Having one canonical path would be awesome ;-)

Personally I would say that all libraries should be used through Dub, making this a non issue.

## dub: Where should dub modules be installed?
DUB currently only searches online for it's packages, but if we install
them as distributor, we want dub to also look locally in some path where
the packages can be found, and - if possible - use a prebuilt
shared/static library.
(reported as https://github.com/dlang/dub/issues/811 )

## dub: How to install modules?
Ideally, dub would also have a "dub install" command, to install the
binary, "headers (.di)"/sources and data into standard directories on
Linux.
(reported as https://github.com/dlang/dub/issues/811 )

For libraries, as I above, use Dub. For tools/applications they can hopefully be packaged completely separately.

++++++
Aside from these things, there are also some other things which would be
very useful:

## Shared library support in all compilers
In distributions, we hate duplicating binary code copies. At time, D
links everything statically, which means that when a bug is discovered
in a library used by many other tools (worst case: the standard
library), we will need to recompile all depending software.
This is really annoying for the security team, while not being as bad as
having actual duplicate source-code copies which need to be patched
individually.

Most D applications are linked statically because dynamic libraries have not been supported at all until recently. In addition to that most computers will not have the D runtime and standard library installed.

## Stable ABI among compilers
Simple: Compile your library with GDC, have it used by code compiled
with LDC. Otherwise, shared libraries would be of very limited use.

Yeah, that would be nice :). Currently there's no guarantee about ABI compatibility at all.

--
/Jacob Carlborg

Reply via email to