Thread overview
The progress of D since 2013
Jul 31, 2017
Maxim Fomin
Jul 31, 2017
rikki cattermole
Jul 31, 2017
Eugene Wissner
Jul 31, 2017
kinke
Jul 31, 2017
Guillaume Piolat
Jul 31, 2017
inevzxui
Aug 01, 2017
Mike
Aug 01, 2017
Jacob Carlborg
Aug 02, 2017
Maksim Fomin
July 31, 2017
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.
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.
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.
4) What is the state of GDC/LDC? GDC team was actively working on including gdc in gcc project. 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? 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?
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?
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 :)? Is dlang spec fully and frequently updated or is it sparse as in the past? Is TDPL book still relevant?
7) Is UDA still compile-time? Are there plans to make it also runtime?
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'.
9) Does D gains popularity?
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...

Thanks!

July 31, 2017
On 31/07/2017 8:22 AM, 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.

Optlink is still the default. MSVC link can be used for both 32bit and 64bit.

> 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.
> 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.
> 4) What is the state of GDC/LDC? GDC team was actively working on including gdc in gcc project. 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? 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?
> 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?

New implementation by Stefan for the purposes of making it faster and cheaper.

> 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 :)? Is dlang spec fully and frequently updated or is it sparse as in the past? Is TDPL book still relevant?
> 7) Is UDA still compile-time? Are there plans to make it also runtime?

No runtime reflection has been added during this period (unfortunately).

> 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'.
> 9) Does D gains popularity?

Considerably. Downloads for dmd per day.
http://erdani.com/d/downloads.daily.png

> 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...
> 
> Thanks!

July 31, 2017
On Monday, 31 July 2017 at 07:22:06 UTC, Maxim Fomin wrote:
> 4) What is the state of GDC/LDC? GDC team was actively working on including gdc in gcc project. 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? 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?

It is still similar. LDC/GDC for performance and dmd for the latest version.
GDC is currently being updated to 2.072, but it still doesn't use the new frontend writen in D, but ports the frontend changes to the C++-frontend.
July 31, 2017
Hi,

On Monday, 31 July 2017 at 07:22:06 UTC, Maxim Fomin wrote:
> 1) Support of linking in win64?

LDC: MSVC targets, both 32 and 64 bits, fully supported since a year or so. Requires Visual Studio 2015+.

> 2) What is the support of other platforms? AFAIK there was progress on Android.

LDC: Quite good. All tests pass on Android, see Joakim Noah's work, but currently requires a tiny LLVM patch. That will be taken care of by LDC 1.4. All tests also passing on ARMv6+ on Linux. A guy got a vibe.d app to work successfully on an ARMv5 industrial controller. AArch64 support is underway...

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

And they succeeded, it has recently been accepted.

> 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?

More or less. LDC uses a slightly modified D front-end (yep, that's been officially converted to D in case you missed it), whereas Iain/GDC still uses a C++ one, with backports from newer D versions.
The lag isn't that bad for LDC; LDC 1.3 uses the 2.073.2 front-end, current master the 2.074.1 one, and there's a WIP PR for 2.075.0, which already compiles.
July 31, 2017
On Monday, 31 July 2017 at 07:22:06 UTC, 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.

Welcome back :)

> 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.

"GC" is still the thing that come up as objection from native programmers. Recently the perception shifted a bit thanks to the D blog (and indeed most users have no irredeemable problems with it).

-profile=gc and @nogc makes GC avoidance much simpler than in the past.


> 4) What is the state of GDC/LDC? GDC team was actively working on including gdc in gcc project. 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? 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?

LDC got Win32 and Win64 backends. DMD still compiles faster, but generates slower code (about 2x).

> 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 :)? Is dlang spec fully and frequently updated or is it sparse as in the past? Is TDPL book still relevant?

There are several relevant books to own now.


> 9) Does D gains popularity?

Yes, from all directions. More and more risk-adverse programmers are considering using it, it's not exclusivey early adopters anymore.


> 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...

Use DUB, it makes everyone's life easier.
http://code.dlang.org/


July 31, 2017
On Monday, 31 July 2017 at 07:22:06 UTC, 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.
>
> [...]
>
> 10) Anything else 2013 D user must know? :)

Yes, bug 314 has been fixed !
https://issues.dlang.org/show_bug.cgi?id=314

August 01, 2017
On Monday, 31 July 2017 at 07:22:06 UTC, Maxim Fomin wrote:

> Good to see D is progressing! I was active forum and bugzilla participant in 2011-2013. Since then I have not touched D.

Good to see you back.  I also took a hiatus from D in 2015 and just recently returned after GDC fixed a blocker for me.  I'll comment on what I've observed.

> 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.

Haven't used D on Windows.  Don't know.

> 2) What is the support of other platforms?

I'm currently only using D for bare-metal type projects and some desktop utilities to support that development.  DMD has added some improvements to -betterC (http://forum.dlang.org/post/cwzmbpttbaqqzdetwkkf@forum.dlang.org) but I'm not really interested in that feature as I'd like to use all of D for bare-metal, just in a pay-as-you-go fashion. The compiler is still too tightly coupled to the runtime, but there have been some improvements (https://www.youtube.com/watch?v=endKC3fDxqs)

> 3) What is the state of GC?

From what I can tell, aside from a few improvements to metering the GC, most endeavors have not materialized.

> 4) What is the state of GDC/LDC?

GDC was recently accepted for inclusion in GCC (version 8 I believe): https://gcc.gnu.org/ml/gcc/2017-06/msg00111.html

> 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?

I believe there is an effort to overhaul CTFE, but it is ongoing and not yet committed.

> 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 :)? Is dlang spec fully and frequently updated or is it sparse as in the past?

I haven't seen any improvements to filling holes in the spec.  I believe the semantics of 'shared' are still undefined.

I have seen significant improvements to the website/documentation with runnable examples and such.

> 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'.

AFAIK nothing in that regard has changed.

> 9) Does D gains popularity?

Not sure.  I've seen some talent in the D community depart, some new talent emerge, some talent participating less, and some talent taking on more.

> 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...

* Formal creation of the D Language Foundation
* DMD frontend converted to D
* DMD backend converted to boost license (http://forum.dlang.org/post/oc8acc$1ei9$1@digitalmars.com)
* DIP1000 merged under the -dip1000 feature gate (https://github.com/dlang/DIPs/blob/master/DIPs/DIP1000.md)
* Walter claims memory safety will kill C (https://www.reddit.com/r/cpp/comments/6b4xrc/walter_bright_believes_memory_safety_will_kill_c/), and if you have any faith in the TIOBE index, it may already be happening (https://www.tiobe.com/tiobe-index/)
* Lots of infrastructure improvments (dlang-bot and other CI automation)

Overall, though, I'd say D is just further along on the path it was on in 2013.  If you were hoping for a new direction, you'll probably be disappointed.

Mike

August 01, 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
August 02, 2017
OK. Thanks everybody for information!