Walter Bright wrote:
Steven Schveighoffer wrote:
If unsafe means you cannot pass pointers to local variables, then half of tango (and other performance oriented libs which use stack allocation as much as possible) will fail to compile.

My vote is for unsafe as the default. It's the least intrusive option, to ensure that current projects still compile. Then let the project authors ensure their projects are safe one module/function at a time.

I agree. Also, dealing with safeness is something that comes later on as a project scales to a larger size. As such, it's more of a nuisance on a small program than a help.

Also keep in mind that @safe annotations for a mostly safe project will be once at the top of each module. They won't be "everywhere".

Right. Adding:

   @safe:

at the top will do it.

But that forces a library writer to *always* think about safety. I can imagine you implementing this and then 100 bugzilla tickets saying "I can't call phobos' function foo in my safe function because it is not marked as safe". Then they have to wait for the next release. And the same will happen with library writers. I don't want to think about safety all the time, just let me code! If something is unsafe I'll mark it for you, compiler, no problem, but do you think I'm just some crazy unsafe maniac? I program safely.

Reply via email to