@trusted attribute should be replaced with @trusted blocks

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Thu Jan 16 18:08:20 UTC 2020


On Thursday, 16 January 2020 at 15:45:46 UTC, Steven 
Schveighoffer wrote:
> In fact, because of how the system works, @safe code is LESS 
> likely to mean what you think.

I'm not quite sure I follow what you mean here, can you 
clarify/explain?

> If you see a @safe function, it just means "some of this is 
> mechanically checked". It doesn't mean that the function is so 
> much more solid than a @trusted function that you can skip the 
> review. It can have trusted escapes that force the whole 
> function into the realm of needing review.

Yes, agreed.  And hence why your proposal for how to improve 
@trusted really makes sense.

> If we moved to a scheme more like I was writing about in the 
> post you quoted, then they actually do start to take on a more 
> solid meaning. It's still not fool-proof -- @safe functions can 
> call @trusted functions, which can call @system functions. BUT 
> if everyone does the job they should be doing, then you 
> shouldn't be able to call @trusted functions and corrupt 
> memory, and you should not have to necessarily review @safe 
> functions.

Yes, this was exactly how I interpreted your proposal.

> There are still cases where you still have to review functions 
> that are @safe which do not have inner functions that are 
> trusted. These are cases where data that is usually accessible 
> to safe functions can cause memory problems in conjunction with 
> trusted functions. When you need to break the rules, it's very 
> hard to contain where the rule breaking stops.

For example, in a class or struct implementation where a private 
variable can be accessed by both @safe and @trusted methods ... ?


More information about the Digitalmars-d mailing list