On Monday, 3 September 2018 at 06:26:59 UTC, Jonathan M Davis
wrote:
Well, if that were the intention, then -release could not
remove assertions from @safe code. -release does not remove
bounds checking from @safe code. You have to use
-boundscheck=off to disable assertions in @safe code (which is
of course discouraged, since it makes the code not @safe). So,
if we were to decide that assertions had to be left in for code
to stay @safe, then we would have to start leaving them in in
@safe code when -release is used and only compile them out with
a new flag specifically for compiling out assertions in @safe
code. And that would have pretty far-reaching effects given
that it's very much understood right now that -release removes
assertions. And personally, I'd probably use assertions a lot
less if they were going to be left in with -release. So, while
I think that that's a better approach that allowing @system
optimizations in @safe code when assertions are removed, I
can't say that I think that it's a great idea - though the
folks who pretty much always want assertions enabled would
probably like it (though they can already just skip -release).
- Jonathan M Davis
Yes, the command line interface needs to make it easy and obvious
to do the right thing.