On Saturday, March 09, 2013 20:47:10 Mark T wrote: > Thanks for the input - but where is SafeD defined? Is there a > compiler switch?
No. It's simply code that's @safe. If you mark your functions as @safe, then they can only can @safe and @trusted functions and can't do any operations that the language considers to be @system (e.g. pointer arithmetic). So, what it comes down to is that you have certain safety guarantees about any code that's marked @safe. It's not really a separate language. It's just that you can only use a subset of the language within @safe code, because you can only use stuff that's guaranteed to be safe (though when calling @trusted code, you _do_ still rely on the programmer who wrote it having verified that it was actually safe, and they could screw that up). Certain language constructs and core library components are not yet @safe like they should be, and attribute inferrence for templates still needs a lot of work (templated functions infer whether they're @safe, nothrow, and/or pure), so there's a lot of templated stuff that's perfectly safe but doesn't get treated that way yet. So, you're probably going to have to use @trusted more than would be desirable (and certainly more than you'll have to in the future), but on the whole, @safe itself works just fine. But it's part of the language, not something triggered by a compiler switch. - Jonathan M Davis