On Fri, 11 Apr 2014 08:37:59 -0400, Tommi <tommitiss...@hotmail.com> wrote:

On Friday, 11 April 2014 at 12:00:32 UTC, Steven Schveighoffer wrote:
On Fri, 11 Apr 2014 00:01:17 -0400, Tommi <tommitiss...@hotmail.com> wrote:

On Friday, 11 April 2014 at 00:52:25 UTC, Steven Schveighoffer wrote:
If @safe is just a convention, then I don't see the point of having it at all. If it can't be a guarantee, then it's pretty much another tech buzzword with no teeth.

In order to have @safe be a guarantee of memory-safety, we need to prevent @safe code from calling any @trusted code.

Or manually guarantee the safety of @trusted code.

I should be able to write an application with only @safe functions, and trust that phobos has implemented @trusted functions properly.

I was talking about @safe in general sense, not only as it pertains to phobos.

@trusted code needs to be severely scrutinized, since you are turning off safety checks, no matter where the code is. My point was that if I want to ONLY write @safe code, I should be able to without fear that the @trusted functions in Phobos are susceptible to memory bugs.

The idea is that the number of functions that are @trusted is very small, so we can be extra cautious and focused with them. Then the number of @safe functions can be quite large and useful. Kind of like casts -- you should really scrutinize and focus on casts to make sure nothing untoward is happening, since the compiler is deferring to you.

One thing that kind of sucks about this, is that @safe vs. @trusted is a large bag of safety checks. If all you want is to disable array bounds checking, for maybe one or two array indexes in a large function, it's a large price to pay to mark the entire function @trusted. Inner functions help with this a bit, but maybe one should be able to mark an expression as @trusted inside a @safe function. Give the developer a scalpel instead of a saws-all.

-Steve

Reply via email to