The progress of D since 2013

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 1 06:22:00 PDT 2017


On 2017-07-31 09:22, Maxim Fomin wrote:
> Hi!
>
> Good to see D is progressing! I was active forum and bugzilla
> participant in 2011-2013. Since then I have not touched D.
>
> What is the progress of D (2014-2017) in following dimensions:
> 1) Support of linking in win64? AFAIK Walter introduced win64 support in
> circa 2012 which was the big progress. However, support for win64
> linking was limited because dmd defaulted on old dmc linker, and Walter
> didn't plan to do anything with this.

When compiling for Win64 DMD only works with the Microsoft tool chain. 
For Win32 the default is till DMC/Optlink but a flag can be specified to 
use the Microsoft tool chain there as well. LDC also supports Windows.

> 2) What is the support of other platforms? AFAIK there was progress on
> Android. From my memory recollections, the full support of Android was
> expected at that time.

Yes, there's been some great progress in supporting ARM and Andriod, 
which I think is almost ready to be merged upstream into LDC. There's 
also been quite some progress of supporting iOS, but that looks like it 
has stalled now.

> 3) What is the state of GC? AFAIK there were some improvements for GC
> sent as GSOC projects but they were not added in 2013. I see in the
> changelog that there are some improvements in speed and configuration
> support was added.

Dmitry Olshansky has recently announced that he will work on a new GC 
for D [1]. DIP1000 [2] has been accepted and Walter has started to 
implement it. DIP1000 is something similar to Rust's memory management 
system (but not as complicated and complex) that will allow to 
implement, among other things, safe reference counting. For those that 
don't want to use the GC.

> 4) What is the state of GDC/LDC? GDC team was actively working on
> including gdc in gcc project.

It was recently announced that GDC has been accepted for inclusion into 
GCC [3]. The work as started but is not done yet.

> Do gdc and ldc still pull D frontend, so
> there is essentially 1 frontend (where gdc and ldc frontends lag several
> versions behind) + 3 backends?

Yes. DMD and LDC are using the frontend ported to D. GCC is still on the 
frontend written in C++.

> I see in the changelog some dmd backend
> improvements. How the dmd backend is compared with C++/GDC/LDC? AFAIK in
> 2013 there was a tradeoff: either you use dmd with brand-new frontend or
> gdc/ldc where performance is comparable to gcc, but frontend lags
> behind. Is it still true?

The GCC and LLVM backends are still generating better code than DMD in 
some (most?) cases. But LDC are now usually only one version behind DMD. 
GDC is still on an older version of the frontend.

> 5) What is the progress with CTFE? I see a lot of discussions in forum
> archive devoted to the development of CTFE. What is the summary of CTFE
> development in recent years?

Stefan Koch is working on a new CTFE implementation [4]. He's building a 
new proper interpreter which is significantly faster than the existing 
implementation, if I understand correctly.

> 6) I don't see any significant changes in D core from dlang
> documentation (except those mentioned in changelog for 2014-2017). Is is
> true or is the official spec as usual delayed :)?

Yes, it's still delayed.

> Is dlang spec fully and frequently updated or is it sparse as in the past?

It's not always up to date.

> Is TDPL book still relevant?

I think it's mostly up to date. But new features and libraries have been 
added after. Multiple "alias this" are still not implemented.

> 7) Is UDA still compile-time?

Yes.

> Are there plans to make it also runtime?

No. A template exists in druntime that will be instantiated with all 
user defined types. This can be used to extracted UDAs and make 
available at runtime. But this requires you to modify druntime.

> 8) What is the progress with shared and immutable? AFAIK the compiler
> support for shared was not complete and Phobos library itself was not
> 'immutable-' and 'shared-correct'.

Not much progress, as far as I understand.

> 10) Anything else 2013 D user must know? :) I don't ask about Phobos
> because according to the changelog the progress is enormous,
> incremential and targets several directions - I doubt it can be easily
> summarised...

A lot of things have happened. Perhaps take a look at the DIPs [5]. 
Although a lot more has happened as well.

[1] http://forum.dlang.org/post/ewdoqmvslcnypzyrbfwz@forum.dlang.org
[2] https://github.com/dlang/DIPs/blob/master/DIPs/DIP1000.md
[3] https://gcc.gnu.org/ml/gcc/2017-06/msg00111.html
[4] http://forum.dlang.org/post/inhkfqctiyuapubklnwg@forum.dlang.org
[5] https://github.com/dlang/DIPs

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list