DIP 1028---Make @safe the Default---Community Review Round 1
Manu
turkeyman at gmail.com
Thu Jan 9 02:01:39 UTC 2020
On Thu, Jan 9, 2020 at 10:49 AM H. S. Teoh via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
>
> On Thu, Jan 09, 2020 at 10:12:23AM +1000, Manu via Digitalmars-d wrote:
> [...]
> > unsafe blocks is distinctly preferable to me. Functions are usually >1
> > line, and I hate that we can only mark this at the function level.
> > Unsafely statements are never at the function level, it's usually just
> > one line among a larger function. An unsafe scope would be immensely
> > preferable to me, because I can make it as narrow as the code i'm
> > suspicious of, and the surrounding code doesn't lose its safe checking
> > just by being a bystander.
>
> There is this current idiom that essentially serves as a @trusted block:
>
> auto myFunc() @safe {
> ... // mundane stuff
> () @trusted {
> // dangerous stuff goes here
> }();
> ... // more mundane stuff
> }
>
> But it's quite the eyesore, I'll admit.
>
> OTOH, that may be its redeeming quality: it looks so ugly, and is so
> icky to write, that it discourages people from overusing it. You're
> inclined to do it only when you absolutely have to.
Lambdas are usually suggested, but it's a completely unacceptable hack.
* additional function call overhead
* influences the inliner heuristics unfavourably
* may allocate a closure if you're not careful
* additional callstack pollutes stack trace with redundant frames
with stupid names, which is particularly annoying while debugging!
This is a tired and unacceptable suggestion.
More information about the Digitalmars-d
mailing list