Re: [RFC] 64 bit platform improvements for string length and integer

From: Date: Fri, 24 Jan 2014 02:42:47 +0000
Subject: Re: [RFC] 64 bit platform improvements for string length and integer
References: 1 2 3 4 5 6 7 8 9  Groups: php.internals 
Request: Send a blank email to internals+get-71471@lists.php.net to get a copy of this message
Hi Hannes,

On Thu, January 23, 2014 19:38, Hannes Magnusson wrote:
> On Thu, Jan 23, 2014 at 9:52 AM, Anatol Belski <ab@php.net> wrote:
>
>
>>> If this patch is included in PHP 5.6 I think it is very likely that
>>> many extensions will not be updated or take a long while in updating.
>>> It's one
>>> thing to add two or three new ifdefs to support a new PHP release and
>>> something entirely else to change virtually all types in your code
>>> and verify that it is still safe with the new sizes.
>> I think it depends on how active an extension is supported and
>> developed. For instance on PECL are still some extensions not even been
>> ported to PHP5. From the todays experience, a port to the current patch
>> might take from 3 hours to 3 days, depending on complexity. Say 3 days
>> vs 5 months until final, together with the porting docs and tools, most
>> of the really active and being in demand extensions will be so far or
>> users will tear the devs apart :)
>>
>
>
> If zpp/error_docref/*printf compatibility is not kept it will take a
> long time to update pecl extensions, and risk epic failure in the future
> when continuing the work on the extensions
>
> zpp (COMPAT ? "zyx" : "xyz", &foo, &bar, &baz) will in 1year
> turn into zpp
> (COMPAT ? "zyx|xz" : "xyz|z", &foo, &bar, &baz, &meh) and
> work
> just fine.. until you hit the perfect storm
>
it's up to vote now, RFC updated (multiple votes in the same RFC). I've
prepared a change to zpp for any case http://pastie.org/8662202 .

The spprinf and derivatives - keeping %d working with real int and %ld
with real long looks unavoidable, as those will need to be used at some
places. Here the portable way would be still using ZEND_INT_FMT instead of
%pd and co. But this is actually primitive, like in vim

:%s,%ld," ZEND_INT_FMT ",g

Maybe some place will need to be cleaned after that, still it will do the
job.

>
> Its easy to migrate php-src exts since they don't have to care about
> compatibility with multiple php versions, but needing to support 5.3, 5.4,
> 5.5, 5.6, 5.7, 6.0 in a pecl extension will be nightmare
>
>
> Also, keep in mind most developers priority is not to work on
> supporting unreleased versions of PHP, but to keep maintaining the ext and
> adding features - so even though the guesstimate 5months "until final" is
> true, the extensions won't be updated until 5months _after_ 5.6.0 is out.
>
The compat issues between 5.4 and 5.5 are less than now. Even the amout of
breakage between 5.3 and 5.5 is less than now. However I'd really suggest
you to try the porting guide, if you couldn't get an average extension
compile in 1 hour or even less - too bad. Clear, some tricky places may
come after that, that's where one would need to spend more time than on
the routine "replace" task. Of course not talking about the calibre of
exts like ext\intl and similar, that's not an average case. From what I
saw now, the routine replacement task to just get an extension compiling
with older codebase might be 10-20% of the whole porting time. In some
cases it'll be everything one needs.

The routine is always annoying, that's true :) But it might be not the
worst issue one need to fix, if ever. I believe to have appropriately
reflected the current concerns with the voting options. So then the
direction of the porting process can be affected by everyone.


Regards

Anatol



Thread (80 messages)

« previous php.internals (#71471) next »