On 14 Oct 2014, at 20:46, Rowan Collins <rowan.coll...@gmail.com> wrote:

> Just to break this down a bit:
> 
> 1) The RFC should probably aim to make array keys consistent across 
> platforms. This is currently left as an unanswered question in the RFC, but 
> it seems natural to include it if the stated aim is to eliminate 
> inconsistencies.

It’s something I do have an answer for, but it’ll be a separate RFC which I 
need to write a patch for and have pass before this one.

> 2) By using an unlimited type, we open the door to constructing 
> "integer"-keyed arrays from 128-bit or larger sources. We also eliminate 
> weirdness encountered at the boundaries, such as $foo[PHP_MAX_INT] = 'hello'; 
> $foo[] = 'world'; - see http://3v4l.org/69mif

That’s something which I would handle in the aforementioned not-yet-existant 
RFC.

> 3) On the other hand, an implementation might be possible that allowed 64-bit 
> integers on 32-bit systems, but nothing more; this would potentially be both 
> simpler and more efficient.

More efficient, as in faster? Sure, that’d be faster. Simpler? Not really. The 
main difficulty in this patch is updating thousands of tests and functions. The 
basics of it (the new type, changes to operators) are very easy.

> Implementing both is probably a bad idea, as some core code would then need 
> to handle 3 different types of integer (native, emulated 64-bit, and GMP), 
> but it could be looked at as an alternative if the current RFC is rejected on 
> complexity or licensing grounds.

As all bigint ops are abstracted, you could modify the patch to implement 
64-bit integers if you wanted. Granted, they’d be unnecessarily allocated their 
own memory, but it’d be doable.

--
Andrea Faulds
http://ajf.me/





--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to