Back in D after some absence, some perspective

deadalnix deadalnix at gmail.com
Tue Mar 2 21:05:14 UTC 2021


Hi all,

As you might know, I was very active a couple of years ago and 
then got driven away, mostly by work, family and so on. But I've 
been back for a couple of month now and I thought I'd write a 
little about what changed on larger time scale. It is not always 
easy to see this when being in D on a day to day basis, so I 
thought this would be valuable feedback for everybody.

The bad:
I ran into many bugs still, mostly in phobos. This might indicate 
that code was merged in before it was really ready and that we 
are paying back that debt, or that the language has accumulated 
too much complexity and that it is hard target these things right.

In any case, a common pattern across several of these bugs was a 
poor handling of the "empty" case. For instance 
https://github.com/dlang/phobos/pull/7788 was due to a problem 
where std.csv did not handle empty csv files and would report at 
least one row.

That should probably be added to the checklist of test case to 
have for something to be considered mergeable. Not sure it is 
automatable, but human can use their judgement to get it sorted 
out.

Another major pain point was dub. It is wonderful to get 
something up and running quickly, but then turn into a nightmare 
when it come to packaging and distribution. The root cause seems 
to be that dub tries to be too many things at once, such as a 
dependency manager and a build system.

The good:
No more ICE! At least I haven't run into any so far.

The awesome:
The support I got through all of this was first class. I don't 
know if this is because it's me and people know me or if this is 
general, but it is way better than a couple of years ago and bugs 
gets fixed way faster.

If that pace can be sustained without introducing too many 
regressions, then I doubt I'll be running into bugs on a regular 
basis.

One word of advice:
I see that new features are being added still, such as the recent 
addition of noreturn. While this is a good addition, such a case 
can be made for a bazillion other features too. I think it is 
hard too argue that D doesn't have enough feature at this time. 
In my experience, running into bugs and difficulty to integrate 
into existing systems, workflows, dependency management, and so 
on is whee it's at.

D has reached a point where it needs to heavily focus on its 
toolchain, as well as ensuring the soundness of what's there, 
nailing small inconsistencies, etc...


More information about the Digitalmars-d mailing list