Re: Integer operations are implementation-defined
| From: | Andrea Faulds | Date: | Fri, 08 Aug 2014 21:57:13 +0000 |
| Subject: | Re: Integer operations are implementation-defined | ||
| References: | 1 | Groups: | php.standards |
| Request: | Send a blank email to standards-+get-373@lists.php.net to get a copy of this message | ||
On 8 Aug 2014, at 23:33, Drew Paroski <drewparoski@gmail.com> wrote:
> Thanks for taking the time to further elaborate your position. If I'm hearing
> you correctly, the main points you're putting forth seem to be (1) int->float
> promotion is not as crappy as int wraparound for users, (2) there are a good
> number of use cases where the int->float promotion is what users want or what
> causes the least surprise for users, (3) the performance hit of having to
> support int->float promotion is minor, (4) this behavior has been around for a
> long time and while most apps don't depend on it, there are a small percentage
> that do, (5) the bigint RFC might never land, or it might not land for a while,
> and so in the meantime the spec should specify the existing php.net behavior
> that some apps in the wild currently rely on, and (6) given all the points
> above, it seems like a win to avoid making integer overflow an issue where
> users have to worry about different implementations doing different things.
Yep. That’s actually a much better and more succinct summary of my own argument than I could have
possibly written. :)
> I think your argument makes a lot of sense. Thinking about the issue more, it
> seems like requiring int->float promotion on integer overflow is not
> unreasonable. My main concern was avoiding the slippery slope of arguing that
> the spec should always require the exact behavior of php.net PHP down to the
> last detail. It sounds like there are some good reasons for requiring
> int->float promotion aside from "this is how php.net PHP does it" :)
>
> Thanks again for entertaining my feedback and questions.
Ah, I see. While I do have a certain bias towards what php.net PHP does, I wouldn’t say I’m
necessarily in favour of always doing what php.net does, I just feel that way on this specific
issue. Generally I want us to standardise on just one way to do most things unless there’s a
particularly good reason. For example, float to int conversion is an unfortunate one as php.net PHP
doesn’t consistently cast things like NaN and Infinity to the same integer values. :/
Thanks!
--
Andrea Faulds
http://ajf.me/