On Sep 16, 2015 8:08 AM, "Adam Harvey" <ahar...@php.net> wrote:
>
> On 9 September 2015 at 03:42, Dmitry Stogov <dmi...@php.net> wrote:
> > Commit:    ac83eaef1097552065395872c69b77dcab2919b1
> > Author:    Dmitry Stogov <dmi...@zend.com>         Wed, 9 Sep 2015
13:42:35 +0300
> > Parents:   6d885e395ca33fef28c5b84b7cfd59885aaa6e2d
> > Branches:  master
> >
> > Link:
http://git.php.net/?p=php-src.git;a=commitdiff;h=ac83eaef1097552065395872c69b77dcab2919b1
> >
> > Log:
> > Don't inline "slow" and rarely used functions.
>
> This commit appears to have broken binary compatibility for extensions
> that make persistent memory allocations, since __zend_malloc is now a
> real function and not inlined: such an extension compiled against
> php-src after this commit can no longer be loaded into earlier builds
> due to the missing __zend_malloc symbol.
>
> Most current extensions with PHP 7 compatibility aren't affected, but
> the one relatively common case where a persistent allocation occurs is
> when defining classes: INIT_CLASS_ENTRY() ultimately expands to
> INIT_OVERLOADED_CLASS_ENTRY_EX(), which calls zend_string_init() with
> the persistent flag enabled to create the class name string.
>
> It's awkward, since PHP 7.0 hasn't officially been released yet, but
> it sucks that some extensions won't be binary compatible between RC2
> and RC3 (as things stand today). Options, as I see it:
>
> 1. Revert this commit.
> 2. Bump the extension API number.
> 3. Document that binary compatibility was broken in RC3, and that we
> don't guarantee binary compatibility before a stable release is made.
>
> I personally don't think option 3 is viable (yes, it's not a stable
> release, but it's still crappy — avoiding this kind of thing is _why_
> we have API versioning!). Dmitry, RMs: what are your thoughts?

I have to go with 3. It does not make a lot of sense to add APIs version
for RC.

Reply via email to