@trust is an encapsulation method, not an escape

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sat Feb 7 06:53:18 PST 2015


On 2/7/15 4:40 AM, David Nadlinger wrote:
> On Friday, 6 February 2015 at 18:52:45 UTC, Andrei Alexandrescu wrote:
>> I think the problem is overstated. -- Andrei
>
> I think there could hardly be a more persuasive argument that this
> belief is wrong than Walter himself just having made the mistake several
> times, and not even immediately realizing what is wrong:
> https://github.com/D-Programming-Language/phobos/pull/2966 [1]
>
> Sorry for singling out this one example here. While it is particularly
> demonstrative, I am certainly not intending to put Walter in a bad
> light. It's simply hard to get that stuff right, as templates can make
> it hard to accurately determine the complete public interface of a
> function. As pointed out in the PR, here are some more examples for this
> class of bugs from Phobos code, also written and reviewed by top D coders:
>
> https://issues.dlang.org/show_bug.cgi?id=14135
> https://issues.dlang.org/show_bug.cgi?id=14136
> https://issues.dlang.org/show_bug.cgi?id=14137
> https://issues.dlang.org/show_bug.cgi?id=14138
>
> Neither of those issues would have been prevented by your new
> guidelines; the code in question is already written in that way. Quite
> to the contrary, consequent application of minimal @trusted blocks or
> even the workaround you reject so strongly would have prevented all of
> the bugs except for 14138.
>
> David
>
>
> [1] The diff in question, for when the PR is fixed:
> https://github.com/klickverbot/phobos/commit/db647f62cb5279ae42ad98665cd60cdcdb9b3dd5

Nice, thanks for this work. One good guideline here is to almost always 
let generic code rely on deduction instead of ascribing safety 
attributes to it.

Andrei



More information about the Digitalmars-d mailing list