Hi,
I'm writing in the first place to give an update on the patch status. Just
to remind - it's a matter of implementing size_t for string sizes and
getting rid of 'long' in favour of platform dependent 64 bit integer. The
patch is now close to finish the first big porting step. ZE and other very
core parts are revamped in multiple circles and do now work well in the
patch. Also the most important and wide used core extensions and SAPIs are
ported. The progress page is reachable under
https://wiki.php.net/rfc/string-size_t/progress , the RFC draft is linked
from there. The work is of course still in progress.
Regarding to my observations, there are some half dead or unsupported
SAPIs and extensions currently in the core. Just to name some for SAPIs -
phttpd, aolserver.
Another observation is - there are 64 bit issues regarding dependency
libraries. Though that was an open secret right at the start, many of
those regarding 64 vs 32 bit integers do already persist in the 64 bit
Linux/Unix PHP builds.
Some steps are necessary to reach the next stage
- strong code reviews
- more testing
- helping hands on porting
In the light of the above, I would sincerely invite the community to
participate on reviews, testing and further fixes. From the side of core
devs, it would rock to have fixes for SAPIs and extensions rarely
supported, especially the sapi/fpm wasn't ported yet. As well the ported
stuff possibly (or better to say surely) has something overseen. Any
improvement ideas are appreciated of course.
On the part of people without C knowledge - testing with some real PHP
apps would be already a great help. The usage is anyway interesting for
needs like large strings/uploads, LFS, etc. Particular on Windows 64 bit
integers/array indexes and big memory limit are enjoyable. Even running
just the PHPTs on your machine were great. To compile yourself, no
additional configure options are needed anymore. Even testing just one
extension would help to chase down possible side effects and bugs. Not to
forget, that the 32 bit builds of that branch should be tested, too.
Thanks
Anatol
Hi,
Hi,
I'm writing in the first place to give an update on the patch status.
Just
to remind - it's a matter of implementing size_t for string sizes and
getting rid of 'long' in favour of platform dependent 64 bit integer. The
patch is now close to finish the first big porting step. ZE and other
very core parts are revamped in multiple circles and do now work well in
the patch. Also the most important and wide used core extensions and SAPIs
are ported. The progress page is reachable under
https://wiki.php.net/rfc/string-size_t/progress , the RFC draft is linked
from there. The work is of course still in progress.Regarding to my observations, there are some half dead or unsupported
SAPIs and extensions currently in the core. Just to name some for SAPIs -
phttpd, aolserver.Another observation is - there are 64 bit issues regarding dependency
libraries. Though that was an open secret right at the start, many of those
regarding 64 vs 32 bit integers do already persist in the 64 bit
Linux/Unix PHP builds.Some steps are necessary to reach the next stage
- strong code reviews
- more testing
- helping hands on porting
In the light of the above, I would sincerely invite the community to
participate on reviews, testing and further fixes. From the side of core
devs, it would rock to have fixes for SAPIs and extensions rarely
supported, especially the sapi/fpm wasn't ported yet. As well the ported
stuff possibly (or better to say surely) has something overseen. Any
improvement ideas are appreciated of course.On the part of people without C knowledge - testing with some real PHP
apps would be already a great help. The usage is anyway interesting for
needs like large strings/uploads, LFS, etc. Particular on Windows 64 bit
integers/array indexes and big memory limit are enjoyable. Even running
just the PHPTs on your machine were great. To compile yourself, no
additional configure options are needed anymore. Even testing just one
extension would help to chase down possible side effects and bugs. Not to
forget, that the 32 bit builds of that branch should be tested, too.
automated Windows builds for this branch are now back and running, please
fetch the latest under
http://windows.php.net/downloads/snaps/str_size_and_int64/
Cheers
Anatol
Hi,
I'm writing in the first place to give an update on the patch status. Just
to remind - it's a matter of implementing size_t for string sizes and
getting rid of 'long' in favour of platform dependent 64 bit integer. The
patch is now close to finish the first big porting step. ZE and other very
core parts are revamped in multiple circles and do now work well in the
patch. Also the most important and wide used core extensions and SAPIs are
ported. The progress page is reachable under
https://wiki.php.net/rfc/string-size_t/progress , the RFC draft is linked
from there. The work is of course still in progress.
Is there a porting guide for extension maintainers? Especially also
extensions that need to be maintained with older PHP versions (ie, the
ones in PECL)?
cheers,
Derick
--
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
Posted with an email client that doesn't mangle email: alpine
Hi Derick,
Hi,
I'm writing in the first place to give an update on the patch status.
Just
to remind - it's a matter of implementing size_t for string sizes and
getting rid of 'long' in favour of platform dependent 64 bit integer.
The
patch is now close to finish the first big porting step. ZE and other
very core parts are revamped in multiple circles and do now work well in
the patch. Also the most important and wide used core extensions and
SAPIs are
ported. The progress page is reachable under
https://wiki.php.net/rfc/string-size_t/progress , the RFC draft is
linked from there. The work is of course still in progress.Is there a porting guide for extension maintainers? Especially also
extensions that need to be maintained with older PHP versions (ie, the ones
in PECL)?
till now the accent was to give the core a leg-up. The guide is for sure
on the TODO, but not only - I plan to invent a tool to ease the porting
process and probably a compat header.
For now the simplest way to try out is using the RFC draft. There are
tables with new vs. old types/macros to replace, like IS_LONG vs. IS_INT,
Z_STRLEN vs. Z_STRSIZE, etc. Some of those are just semantic sugar, the
others cannot be automated (like long vs. php_int_t, int vs php_size_t for
string sizes ...) . From the experience many extensions will need some
minimal replacements to be ported, especially those without library
dependencies.
The only thing I lack on an idea right now is zend_parse_parameters
formats migration, I think it'll need some special way or tool to be
handled.
Cheers
Anatol