Distributor's whishlist and questions for D
Johannes Pfau via Digitalmars-d
digitalmars-d at puremagic.com
Thu Apr 21 04:26:00 PDT 2016
On Thursday, 21 April 2016 at 08:30:59 UTC, John Colvin wrote:
> On Thursday, 21 April 2016 at 01:01:01 UTC, Matthias Klumpp
> wrote:
>> ## How complete are the free compilers?
>> ## Why is every D compiler shipping an own version of Phobos?
> The constraints on shipping a shared phobos between them:
> ABI compatibility: we don't have it, even across compiler
> versions
> It would hold back phobos development (e.g. "you can't do that,
> because GDC doesn't support it yet")
> You would still need to ship a separate runtime for each
> compiler, so you don't really gain anything.
Once we have full ABI compatibility we need to make sure we can
work with a shared druntime: If an application compiled with
compiler A(requiring runtime A) should be able to link with a
shared library compiled by compiler B (requiring runtime B) both
'modules' need to use the same runtime => runtime A==B. This is
because we can't have two GCs running concurrently (and there's
some more low-level stuff).
What we need is a defined ABI for druntime. Then one druntime
implementation is installed system wide. The implementation can
differ (e.g. GDC might use GCC builtins) but the ABI needs to be
fixed to make sure every compiler can use the 'system' druntime.
Think of libc or libc++ for example: You can't reliably link
modules from compilers using different libcs (or you end up with
GC proxies and similar hacks).
Compiler specific extensions (gcc.builtins, etc) then must be
moved to extra libraries (libgdc) (only if they affect the ABI
though. gcc.builtins is actually a bad example as it doesn't
contain non-extern functions).
More information about the Digitalmars-d
mailing list