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/ewdoqmvslcnypzyrb...@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/inhkfqctiyuapubkl...@forum.dlang.org
[5] https://github.com/dlang/DIPs

--
/Jacob Carlborg

Reply via email to