Rationale for accepting DIP 1028 as is
Claude
claudemr at live.fr
Wed May 27 13:30:32 UTC 2020
On Wednesday, 27 May 2020 at 10:51:54 UTC, Walter Bright wrote:
> On 5/27/2020 3:01 AM, Timon Gehr wrote:
> I've addressed exactly this a dozen times or more, to you and
> others. Repeating myself has become pointless.
>
> It's fine to disagree with me. Argue that point. But don't say
> I didn't address it.
I'm trying to understand the logic of "@safe by default for
extern declaration".
So I setup a simplified real-life example that I had in my mind...
Let's say we have a project consisting of:
- an ASM file containing several function definitions (assembly
language scares people away, so it's a good example).
- a .di file containing the extern(C) declarations of the former
ASM functions.
- and a .d file using those functions with @safe code.
No function is annotated.
Before DIP-1028, it compiles and link without annotations.
If extern(C) decl are @system by default, it will not compile
anymore, and a careless programmer will slap a "@trusted:" at the
top of the ".di" file (greenwashing), and it'll stay there.
On the other hand, a careful programmer will need to annotate
@trusted ONLY on functions that he actually trusts AND make the
project compile anyway (because he cannot afford to leave his
project broken). So what does he do to make it compile ? Should
he slap a "@trusted:" at the beginning of the file just like the
careless programmer and maybe explicitly annotate individually
declarations that are actually trusted ? It's weird...
However, if extern(C) decl are @safe by default, he does not need
to slap a "@trusted" at the top of the ".di" file, he just needs
to annotate individual declarations with @trusted to advertise
(to the QA, or his colleague or future self) that he reviewed
successfully the function implementation, AND it will still
compile.
So that example would go in favor of Walter's point. So is it a
good example? Does pinpoint the point?
Because again, as the others said, it's still controversial, it's
hard to sell, it's convoluted... I dunno...
More information about the Digitalmars-d-announce
mailing list