On Mon, Jul 21, 2014 at 9:31 AM, Zeev Suraski <z...@zend.com> wrote:

> All,
>
> As we’re getting closer to release 5.6.0, and given the very high level of
> interest in phpng, I think it’s time for us to provide some clarity
> regarding what happens post 5.6.0.
>
> Dmitry and I wrote an RFC proposing that we merge phpng into master and
> turn it into the basis of the next major version of PHP (name TBD).
>
> The RFC is available at https://wiki.php.net/rfc/phpng
>

There are actually two questions here:
1. Do we want to base the next major version on phpng?
2. Do we want to merge phpng into master?

The latter is tied to the question whether or not we want to have a PHP 5.7
release in the meantime. I'm not really sure whether or not that would be
good, I would recommend opening a separate thread about that question.

Regarding the first question, I fully support basing the next major on
phpng. Several people in this thread have raised concerns regarding the
quality of phpng's API. As someone who has ported a number of extensions to
be compatible with phpng and is currently in the process of writing a
>10kloc patch based on phpng, I can without any doubt say that the new APIs
are a good bit more friendly to internals developers. Some of the reasons
why that is so:

 * The removal of one level of zval indirection in many places, as well as
the need to allocate zvals.
 * Changing the zend_hash APIs to directly return zvals/pointers and
generally integrate better with zvals.
 * Changing the zend_hash APIs to handle lengths like everything else does.
 * The introduction of zend_string.

>From my perspective phpng's APIs are an improvement over the current state,
however there is still a lot of room for improvement. E.g. there is still a
huge number of macros, which should probably be moved to inline functions,
etc. I don't think anyone has a problem with doing these kinds of
improvements, but I don't think they are really relevant to the question at
hand (as these cleanups can happen regardless of which branch is used as
the basis). I'd also love it if we could drop TSRMLS_* - iirc joe has a
partial patch for better TLS handling, which couldn't be used previously
due to concerns over internal API breaks. For a new majors those concerns
shouldn't be a problem anymore :)

Regarding the stability of the phpng branch: phpng definitely still
contains bugs (which is quite obvious given the amount of code it changes)
and I'm aware that it currently fails with many large testsuites. Obviously
this will have to be resolved by the time we get anywhere close to a
release.

However we cannot wait until all bugs have been fixed before continuing
other development for php next. We need a basis for php next and we need it
now, so people know what they should develop against. This way
stabilization of phpng will happen in parallel to other changes.

Nikita

Reply via email to