This RFC describes the decisions reached regarding improved 64bit support, following the discussion of the previous size_t_and_int64_next RFC.
The 64bit changes described in the following will be added to the phpng branch once it is more stable.
The following changes will be made:
long will be replaced with a type like zend_long which is 64bit large on all 64bit platforms.size_t will be used for string lengths in zend_string. This means that string sizes will be 64bit on 64bit platforms.memory_limit should support 64bit numbers.The following changes will not be made:
size_t for all lengths. In particular hashtables will always use 32bit lengths. Line numbers will be stored in a 32bit type. Special names (like argument or class names) will also use 32bit lengths, where possible.The expected memory impact of these changes is around 1%. We are okay with that.
Unclear as of now: Will we be performing renames like IS_LONG to IS_INT along the way? I prefer not (Nikita).
Do you agree that 64bit platform improvements as described above should be implemented?