DIP1028 - Rationale for accepting as is

Johannes T isrvoid at gmail.com
Tue May 26 12:20:31 UTC 2020


On Tuesday, 26 May 2020 at 03:37:29 UTC, Walter Bright wrote:
> [..]

Thank you very much for your patience with all the negative 
feedback. I get your decision to not annotate extern C with 
@system by default. The biggest issue with extern @system is that 
@trusted would become less useful when dealing with declarations 
and bindings. @trusted would appear more frequently. We wouldn't 
be able to assume that the author put in effort in assessing the 
trustworthiness of a declaration. More greenwashing, less safety. 
Those are severe drawbacks, I agree.
However, as Andrei pointed out, PR is a huge problem. We need to 
be able to sell it with a straight face.
I think this might be done by formally redefining the meaning of 
safety attributes when applied to extern:
The safety of extern can't be assessed by the compiler. Implicit 
"@safe" extern within @safe code is accepted for the convenience 
of the average user. Explicit @system or @trusted can be added 
for desired behavior.
I think this can be explained.
It's not an acceptable solution for people who require 
correctness. ZombineDev can't tell an auditor that he relies on 
D-Scanner to find the problematic spots. I believe it's 
unavoidable to provide an option to change the default. It could 
make extern @system or refuse to compile safe code calling @safe 
extern.





More information about the Digitalmars-d-announce mailing list