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