<div dir="ltr"><div><div class="gmail_extra"><div class="gmail_quote">On Sun, Jun 22, 2014 at 2:31 PM, Daniel Micay <span dir="ltr"><<a href="mailto:danielmicay@gmail.com" target="_blank">danielmicay@gmail.com</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>On 22/06/14 05:09 PM, Rick Richardson wrote:<br>
> Apologies if this has been suggested, but would it be possible to have a<br>
> compiler switch that can add runtime checks and abort on<br>
> overflow/underflow/carry for debugging purposes, but the default<br>
> behavior is no check?  IMO this would be the best of both worlds,<br>
> because I would assume that one would really only care about checked<br>
> math during testing and dev.<br>
<br>
</div>You would need to build an entirely separate set of standard libraries<br>
with checked overflow. Adding new dialects of the language via compiler<br>
switches is never the right answer. It seems that every time an issue<br>
like this comes up, people propose making a compiler switch as the option.<br></blockquote><div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">


<br>
If we had compiler switches for abort vs. unwinding, no tracing gc<br>
support vs. tracing gc support, no integer overflow checks vs. integer<br>
overflow checks and more, we would have a truly ridiculous number of<br>
language dialects. I think even 2 dialects is too much...<br></blockquote><div><br></div><div>I am very skeptical about the idea having a single set of standard libraries that are good for everyone.  If Rust ever gains any degree of mainstream adoption, I predict that there *will* be switches to disable bounds checks, stack overflow checks, etc, because different applications have different needs.<br>
<br></div><div>Modern C++ compilers often have a bunch of runtime checks (stack overflow protectors, iterator invalidation detectors, and so on) that may be enabled or disabled, and nobody bats an eye at that.<br></div><div>
<br></div></div></div></div></div>