Re: [STANDARDS] Integer operations are implementation-defined

[email protected] (Andrea Faulds)
Newsgroups php.standards
Message-ID <[email protected]>
On 3 Sep 2014, at 20:35, Stas Malyshev <[email protected]> wrote:

> Hi!
> 
>>> Because they don't fit well together with the rest of the language,
>>> and code right now almost certainly assumes integers are
>>> fixed-size. To implement arbitrary-precision ints, something I'm
>>> trying to do, you need to change the rest of the language, and
>>> they'd break assumptions code currently makes.
>> 
>> Basically, I don’t think they’d work well with how integers are dealt
>> with generally in the language as it stands, and I suspect it would
>> break existing code.
> 
> You mean, there's code out there that depends on the fact that integer
> is converted to float on overflow? That would be pretty strange code,
> could you give an example what such code would be used for?
> It just seems strange to me to explicitly ban arbitrary precision ints,
> especially as we don't put any actual limit on it, so you can not rely
> on any specific limit even if you needed it.

I’m not sure if code depends on it, but I wouldn’t be surprised. The problem is we do different things if you hit limits. If integers are arbitrary-precision, then the limits claimed by things like PHP_INT_MAX aren’t actually correct. Also, for things like bitwise shifts, they are supposed to do different things when they hit the limit (<< shifts off bits and shifts on zeroes, for example). How would you do that sanely with arbitrary-precision integers? You’d have to pretend they’re not arbitrary-precision for that specific case.

I’m all for bigints, but I don’t think we should permit implementations to do them in 5.6. If integers are to be arbitrary-precision, the rest of the language spec would need some alterations first, and that’s what my draft bigint RFC would do.
--
Andrea Faulds
http://ajf.me/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.