We had a long discussion with Pierre on IRC and probably come to some
agreement.
However, we always talk as a blind with a deaf, so I can't be completely
sure :)
We agreed to make 64-bit IS_LONG and 64-bit string length on all 64-bit
systems, but don't change other core data structures (as Nikita suggested).
The main idea of the changes on top of phpng may be seen at
https://gist.github.com/dstogov/07fcbb60b1b585bcd290
I checked the patch on 64-bit Linux. The memory consumption grows, but no
so dramatic. On wordpress home page without opcache the peak_memory_usage()
showed 11043920 bytes insead of 10959456, that mean ~0.8% that we probably
can afford. Note that the original patch on the same test showed ~8% memory
consumption increase on master.
To integrate the patch into phpng we have to re-check and re-change every
place where zend_long, zend_ulong and string length are involved.
Pierre, if you agree with this proposal just change RFC accordingly, and
most people won't object.
I'm not sure if we need zend_ulong -> zend_int_t, IS_LONG -> IS_INT, size_t
-> zend_size_t renaming in thousand places. In my opinion this work is
useless but I won't object against patch just because of names. I would
suggest just 3 option for voting - "no", "yes with old names", "yes with
new names".
Thanks. Dmitry.