Why is D unpopular?

Dukc ajieskola at gmail.com
Thu May 19 20:17:36 UTC 2022


On Thursday, 19 May 2022 at 18:39:51 UTC, Walter Bright wrote:
> On 5/19/2022 12:30 AM, Dukc wrote:
>> One hole that remains: 
>> https://forum.dlang.org/thread/kazglmjwsihfewhscioe@forum.dlang.org
>> 
>> According to a reply, the current langauge implementation does 
>> not cause anything special to happen, but it is still 
>> undefined behaviour in `@safe` code if we go by the spec.
>
> I'm aware of that, but if the user selects "ignore the asserts" 
> then he assumes the risk of what happens if the assert would 
> have otherwise tripped.

Agreed. But asserts are often used without regard for 
performance, because it's assumed they are removed from release 
code. Which puts pressure to disable them from a release build

>
> Just like if the user turns off array bounds checking.

We can do a bit better. If an assert trips, the program will go 
to unknown state, and there's no telling what it will do. But 
that's still not quite the same as undefined behaviour. If the 
program trips an assert in `@safe` code, it probably won't cause 
a buffer overflow vulnerability, because `@safe` would almost 
certainly have detected a vulnerability if one existed. But if 
the spec says "undefined behaviour", the compiler is allowed to 
optimise so that it creates such a vulnerability - see the linked 
thread for an example. I know the current compilers do not do 
that, but the spec allows doing so in the future.




More information about the Digitalmars-d mailing list