DIP 1028---Make @safe the Default---Community Review Round 1

Steven Schveighoffer schveiguy at gmail.com
Fri Jan 3 18:41:48 UTC 2020


On 1/2/20 4:47 AM, Mike Parker wrote:
> This is the feedback thread for the first round of Community Review for 
> DIP 1028, "Make @safe the Default":
> 
> https://github.com/dlang/DIPs/blob/1b705f8d4faa095d6d9e3a1b81d6cfa6d688554b/DIPs/DIP1028.md 
> 
> 
> All review-related feedback on and discussion of the DIP should occur in 
> this thread. The review period will end at 11:59 PM ET on January 16, or 
> when I make a post declaring it complete.
> 
> At the end of Round 1, if further review is deemed necessary, the DIP 
> will be scheduled for another round of Community Review. Otherwise, it 
> will be queued for the Final Review and Formal Assessment.
> 
> Anyone intending to post feedback in this thread is expected to be 
> familiar with the reviewer guidelines:
> 
> https://github.com/dlang/DIPs/blob/master/docs/guidelines-reviewers.md
> 
> *Please stay on topic!*
> 
> Thanks in advance to all who participate.

Add to rationale:

The vast majority of non-template code written is @safe, but not marked 
as such. This means many projects cannot enable safe because their 
dependencies were not marked that way. This will correct that for all 
those dependencies.

e.g.: I made most of diet-ng safe so I could enable runtime diet 
templates (see PR here: 
https://github.com/rejectedsoftware/diet-ng/pull/70). Many of my changes 
were to enable @safe at runtime (most things were not marked safe 
because CTFE doesn't require @safe, and most of diet is using CTFE).

For the safety changes, most of what I did was simply to slap @safe: at 
the top, or inside types which were not templates. The one exception was 
object.opEquals, which I had to write a trusted wrapper for.

But in any case, it's a good rationale. I write non-template code ALL 
the time that is safe, but don't think to mark it. Same can be said 
about pure and nothrow.

-Steve


More information about the Digitalmars-d mailing list