www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - The progress of D since 2013

reply Maxim Fomin <mxfm protonmail.com> writes:
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!
Jul 31
next sibling parent rikki cattermole <rikki cattermole.co.nz> writes:
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!
Jul 31
prev sibling next sibling parent Eugene Wissner <belka caraus.de> writes:
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.
Jul 31
prev sibling next sibling parent kinke <kinke gmx.net> writes:
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.
Jul 31
prev sibling next sibling parent Guillaume Piolat <contact spam.com> writes:
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/
Jul 31
prev sibling next sibling parent inevzxui <inevzxui inevzxui.ui> writes:
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
Jul 31
prev sibling next sibling parent Mike <none none.com> writes:
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_s fety_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
Jul 31
prev sibling next sibling parent Jacob Carlborg <doob me.com> writes:
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
Aug 01
prev sibling parent Maksim Fomin <mxfm protonmail.com> writes:
OK. Thanks everybody for information!
Aug 01