On Thu, Sep 4, 2014 at 5:32 PM, Derick Rethans <der...@php.net> wrote:

> On Thu, 4 Sep 2014, Bob Weinand wrote:
>
> > After a long time… back to our fast_zpp RFC.
> >
> > Initially Dmitry proposed to have two different APIs, one for the fast
> version, one for current version:
> > #if FAST_ZPP
> >     /* new API */
> > #else
> >     /* old style zend_parse_parameters API */
> > #endif
> >
> > I don't really like the idea of having two different APIs, so I'd
> > rather propose to use one same public API for both. That API should,
> > depending on some compile-time flag (per file or globally in
> > zend_API.h), either convert to the usual variadic style function, or
> > expand to the new fast variant of API parsing (with directly inlining
> > parameter type specific functions).
>
> I am going to need an ifdef anyway, once for < PHP 7 and once for >= PHP
> 7...
>
> > What do you think about having one unified API for both, instead of
> > the current (like it's in some places in master branch currently)?
> > (p.s.: The rewrite of the current API can be done safely via some PHP
> > script I wrote)
>
> I think it makes perfect sense to have two styles. Keep the current zpp
> that we have, and only optimise it with the much less readable versions
> for functions (think strlen()) that are called a lot.
>
> > Also, there is the question about how to structure the API; we (I and
> > Dmitry) basically have now two different proposals:
> >
> >
> > ZEND_PARSE_PARAMETERS_START(3, 5)
> >     Z_PARAM_ZVAL(regex)
> >     Z_PARAM_ZVAL(replace)
> >     Z_PARAM_ZVAL(subject)
> >     Z_PARAM_OPTIONAL
> >     Z_PARAM_LONG(limit)
> >     Z_PARAM_ZVAL_EX(zcount, 0, 1)
> > ZEND_PARSE_PARAMETERS_END_EX(return);
> >
> > OR
> >
> > zend_parse_parameters(ZPP_ZVAL(regex) ZPP_ZVAL(replace)
> ZPP_ZVAL(subject) ZPP_OPTIONAL ZPP_LONG(limit) ZPP_ZVAL_EX(zcount,
> ZPP_BY_REF), {
> >     return;
> > })
>
> Both of them very much suck as API compared to:
>
> if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ|lZ", &regex,
> &replace, &subject, &limit, &zcount) == FAILURE) {
>

scanf() is suck as well, but I agree, that it makes no sense to switch from
one bad but working solution to another one.


> As I mentioned before, keep the current zpp working, and add a special
> one for the functions where a faster one really matters.
>

This was an original proposal, that is already in php-master, but I
promised that we will discuss it in some point.

Thanks. Dmitry.


>
> 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

Reply via email to