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