D has become unbearable and it needs to stop

Johan j at j.nl
Thu Jun 8 17:20:25 UTC 2023


On Thursday, 8 June 2023 at 13:54:53 UTC, FeepingCreature wrote:
> On Thursday, 8 June 2023 at 13:38:20 UTC, GrimMaple wrote:
>> I usually try to stay more silent (on the form at least), but 
>> I think I reached my boiling point. I've been a (self 
>> employed) full time D developer for almost 2 years now, 
>> developing quite a large codebase of personal closed source 
>> projects, as well as adopting some 3rdparty code like dlangui. 
>> And my life has become particularly miserable in the last half 
>> a year or so.
>>
>> I wish I was exaggerating, but __every__ new DMD version 
>> breaks some of my code, to a smaller or bigger extent.
>
> Can't confirm. Can you give some examples, please? In my 
> experience (and we maintain a lot of D code), serious *new* 
> breakage (not an existing bug) is pretty rare.

Can 100% confirm (Weka), and I share the frustration. Breakage 
happens upon every release, with significant effort involved to 
find and fix the breakage (i.e. you hire a compiler dev for it = 
me).
Breakage is due to:
- Intentional change of behaviour, sometimes without clear 
solution path or with buggy solutions. 
https://issues.dlang.org/show_bug.cgi?id=23966 and 23977 for 
recent examples.
- New bugs due to some improvement or new functionality.

I'm not sure, but I think this is mostly due to a severe lack of 
rigorous test cases, and unstructured compiler implementation (no 
splitting of certain analyses into well-defined functions 
(copying around of complex analysis) and too many special cases 
all around the semantic analysis for example). A change made in 
part X, has high likelihood to change behaviour of a seemingly 
unrelated part Y, and the lack of test cases means it will go 
undetected.

The breakneck pace of releases means that the releases themselves 
do not get sufficient community testing (who tests betas?? lol, 
I'm still working on fixing the code for the release from last 
year). So every release is maintaining the level of immaturity 
(note: .0 releases I don't even consider, .1 or .2 (what LDC 
uses) is slightly better).

-Johan



More information about the Digitalmars-d mailing list