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

WebFreak001 d.forum at webfreak.org
Thu Jan 2 10:39:48 UTC 2020

On Thursday, 2 January 2020 at 09:47:48 UTC, 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.

This is a simple but really powerful change. I think most issues 
you would have with @safe right now would simply be gone as it's 
very often libraries which are not marked @safe causing trouble, 
rather than actually using unsafe code.

In my experience most code is written as safe code and only very 
rarely are the unsafe code features actually needed. Having aid 
by the compiler not accidentally using unsafe code will 
definitely help most users. Users writing a lot of @system code 
like for example those writing OS drivers (very niche) will have 
issues that relatively easily can be fixed by placing @system in 
the affected functions or add a @system: on top of the file 
(which will not work that well with the other code though)

As with all such changes there will be a lot of pain and silent 
breakage for those using __traits(compiles, {}) with something 
related with @safe/@system. I don't think deprecations are shown 
in it so the transition period will also not help with that. I 
think having a system to mitigate this issue is really important, 
but that's rather part of another DIP and shouldn't interfere so 
much with this DIP. With these 'compiles' checks for 
@safe/@system you most often call the function anyway, which will 
trigger the deprecation warnings so this is not that big of an 
issue in 98% of the cases.

To fix code it will be minimal changes, which could probably even 
be automated by suggestions from the IDE. :)

Overall I think the DIP is good as-is and will bring more 
positives than negatives to D.

More information about the Digitalmars-d mailing list