assume, assert, enforce, @safe
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 31 12:37:28 PDT 2014
On Thursday, 31 July 2014 at 18:43:49 UTC, Ary Borenszweig wrote:
> On 7/31/14, 4:37 AM, Walter Bright wrote:
>> On 7/30/2014 4:05 PM, Ary Borenszweig wrote:
>>> On 7/30/14, 7:01 PM, Walter Bright wrote:
>>>> I'd like to sum up my position and intent on all this.
>>>>
>>>> 7. using enforce() to check for program bugs is utterly
>>>> wrong. enforce()
>>>> is a library creation, the core language does not recognize
>>>> it.
>>>
>>> What do you suggest to use to check program bugs?
>>
>> assert()
>
> Then you are potentially releasing programs with bugs that are
> of undefined behavior, instead of halting the program
> immediately.
Then don't build with -release. You can even build with
-boundscheck=safe if you want to turn off bounds checking in
@system code like -release does. IIRC, the only things that
-release does are disable assertions, disable contracts, turn
assert(0) into a halt instruction, and disable bounds checking in
@system and @trusted code. So, if you want to keep the assertions
and contracts and whatnot in, just don't use -release and use
-boundscheck=safe to get the bounds checking changes that
-release does.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list