D has become unbearable and it needs to stop

FeepingCreature feepingcreature at gmail.com
Mon Jun 19 07:23:59 UTC 2023


On Sunday, 18 June 2023 at 13:59:07 UTC, Dany12L wrote:
> On Saturday, 17 June 2023 at 06:25:26 UTC, Walter Bright wrote:
>> Frankly, anyone who wants to can step up and pick a version of 
>> D, declare it to be LTS, and pull only bug fixes to it, can do 
>> so.
>
> After all this talk another unnecessary change that will break 
> the code in the user has been accepted
>
> https://github.com/dlang/dmd/pull/15319
>
> Please Walter Bright check this...

I'm not sure about that one myself, even though I did it. (See my 
comment.) Right now, I'm mostly just hoping that nobody is 
calling private methods in that way. As I said, I could split it 
out into a separate deprecation but that would require undoing 
the error unification in the fix PR. And the whole this error 
happened like three separate times is because this check is split 
over a bunch of separate codepaths, so I'd hate to contribute to 
making it worse.

That said, the language working as specified and documented is 
not an "unnecessary change".

I think we're running the risk of falling into a hole of "code is 
fragile and unmaintainable, so don't change anything ever." 
Longstanding bugs going unfixed is a major contributor to code 
that is fragile and unmaintainable, because you cannot trust what 
it says! Not to mention this makes D a hellhole for new people to 
learn.

Years ago, I noted that learning D is not primarily a matter of 
learning the language. The language is intuitive and 
straightforward. Instead, learning D is primarily a matter of 
memorizing all the diverse places where the language is *not* 
intuitive and in fact is broken and you just have to avoid them. 
I think cutting down on that is more important than preserving 
the very specific ways in which you are sometimes permitted to 
call a private method if you have placed an unrelated public 
method in the right location in your code.

That said, honestly, look at the bug. They're calling a private 
method! That means they, or at least somebody, intended it to 
*not* be called! Even on its own merits, I really think this is a 
case where an error is just more valuable to the developer than 
no error.



More information about the Digitalmars-d mailing list