<div dir="ltr"><div>> the fact is that everyone is an optimist when it comes to integer 
overflow bugs.  People just do not think they're going to get bitten.<br><br></div>I agree, and I don't think anyone else here is going to try to argue that this doesn't cause real bugs. As so often seems to be the case, language design amounts to deciding which unfortunate tradeoffs you are willing to live with.<br>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 23, 2014 at 8:16 PM, John Regehr <span dir="ltr"><<a href="mailto:regehr@cs.utah.edu" target="_blank">regehr@cs.utah.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I do think Rust should exposed either `checked { }` or operators for<br>
checked arithmetic along with an opt-in lint to deny the unchecked<br>
operators. You can opt-out of a lint for a function/impl/module after<br>
opting into it at a higher scope.<br>
<br>
I'm just making it clear that doing this by default would make Rust<br>
slower than Java by default, and I think that would kill off interest in<br>
the language. I know I wouldn't be interested anymore.<br>
</blockquote>
<br></div>
Sure, I think there are a lot of reasonable options here, and I agree that speed and predictability are super important for Rust.<br>
<br>
One thing I personally think is very important (not for 1.0, but eventually) is to make it possible -- no need for this to be mandatory -- to get overflow checking for the default integer type.  I'm happy to use a special compiler flag or whatever to get this.  The only controversial thing this requires from the core language is a way for me to tell the compiler which integers (a tiny subset, typically) should have wrapping behavior.<br>


<br>
I realize that safe integers are available and that operator overloading goes a lot ways towards making these palatable, but the fact is that everyone is an optimist when it comes to integer overflow bugs.  People just do not think they're going to get bitten.<br>


<br>
Finally, I'll note that certain optimizations such as array bounds check removal and some loop optimziations actually get better then integers cannot wrap.  Clearly we would not expect, in general, for these benefits to make up for the costs of overflow checking.<div class="HOEnZb">

<div class="h5"><br>
<br>
John<br>
______________________________<u></u>_________________<br>
Rust-dev mailing list<br>
<a href="mailto:Rust-dev@mozilla.org" target="_blank">Rust-dev@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/rust-dev" target="_blank">https://mail.mozilla.org/<u></u>listinfo/rust-dev</a><br>
</div></div></blockquote></div><br></div>