Is the following well defined and allowed?

Steven Schveighoffer schveiguy at yahoo.com
Fri Mar 2 19:06:59 UTC 2018


On 3/2/18 1:21 PM, Jonathan M Davis wrote:
> On Friday, March 02, 2018 11:25:00 Steven Schveighoffer via Digitalmars-d
> wrote:
>> Yes, I think assertions should be kept in @safe code. It's weird to have
>> array bounds checks kept, but not assertions (which is how you would do
>> equivalent bounds checks in a custom type).
> 
> Then just don't compile with -release. I'd be a _lot_ less likely to use
> assertions if I knew that the compiler was going to leave them in in release
> mode. Assertions help find bugs, but they aren't doing anything to make the
> code any more @safe unless some aspect of the compiler assuming that the
> assertion is true when it's compiled out allows for the compiler to then
> function in a manner that isn't @safe, which I doubt, but if it does, then
> that needs to be fixed, not leaving in a bunch of extra checks intended for
> catching bugs in development.

As ag says, @safe code is supposed to be free of undefined behavior. If 
-release means it has undefined behavior, that is a problem. I'd much 
rather have assertions in release mode than undefined behavior in 
release mode.

The other option is to make sure the compiler cannot make any 
assumptions about the asserts when they are compiled out in @safe code.

-Steve


More information about the Digitalmars-d mailing list