DIP1028 - Rationale for accepting as is

Paul Backus snarwin at gmail.com
Mon May 25 17:31:29 UTC 2020


On Monday, 25 May 2020 at 17:09:50 UTC, Clarice wrote:
> On Monday, 25 May 2020 at 16:47:50 UTC, Paul Backus wrote:
>> the compiler must warn D programmers that their declarations 
>> need to be reviewed for compatibility with @safe-by-default. 
>> Whether they were reviewed before that or not makes no 
>> difference.
>
> I'm not an engineer; I'm not learned in CS. So some 
> clarification on this would be nice: if you're pulling in C 
> code, or any code written in an unsafe language, wouldn't the 
> developers doing such a thing already be aware they need to do 
> their due diligence? Foreign code isn't just going to magically 
> appear in your codebase, right? Maybe through dependencies, but 
> one should check those too, eh? (And if the dependency tree is 
> needlessly large, then the language has another, maybe bigger, 
> problem à la the NPM ecosystem.)

Even if you did review your code *and* all of your dependencies, 
if you did it before DIP 1028 was accepted (i.e., any time in the 
last 10 years or so), you may have deliberately left external 
@system functions un-annotated, because @system was the default.

In fact, I *know* that people have done this, because I've been 
running my patched version of the compiler [1] against the dmd, 
druntime, and phobos codebases, and I have found an enormous 
number of such un-annotated declarations. Here are just a few of 
them in druntime:

https://github.com/dlang/druntime/pull/3117

Lots and lots of projects in the D ecosystem are going to need 
similar patches to be compatible with DIP 1028. And I don't think 
it's realistic to expect people to make these changes without 
some kind of help from the tooling.

[1] https://github.com/dlang/dmd/pull/11176


More information about the Digitalmars-d-announce mailing list