Re: Bison 3 support for PHP 5.5
| From: | Ferenc Kovacs | Date: | Fri, 23 May 2014 17:28:54 +0000 |
| Subject: | Re: Bison 3 support for PHP 5.5 | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-74466@lists.php.net to get a copy of this message | ||
2014.05.23. 13:59, "Julien Pauli" <jpauli@php.net> ezt írta:
>
> On Fri, May 23, 2014 at 8:40 AM, Pierre Joye <pierre.php@gmail.com> wrote:
> > Hi John,
> >
> > On Fri, May 23, 2014 at 3:44 AM, John Bafford <john@bafford.com> wrote:
> >> Hi Rasmus,
> >>
> >> On May 22, 2014, at 20:28, Rasmus Lerdorf <rasmus@lerdorf.com> wrote:
> >>
> >>> On 5/22/14, 6:01 PM, John Bafford wrote:
> >>>> Hi,
> >>>>
> >>>> I’ve submitted a PR (https://github.com/php/php-src/pull/683) to add
support for Bison 3.0 to PHP 5.5.
> >>>>
> >>>> I’ve run the tests on this patch, with no unexpected errors, with
Bison 2.4 (minimum version for PHP 5.5 and 5.6), 2.7, and 3.0, with and
without --enable-maintainer-zts against the current PHP-5.5 and (with minor
changes) master branches.
> >>>
> >>> Could you explain your changes a bit? You removed %pure-parser, for
> >>> example, and you shuffled globals around. This looks like more than
just
> >>> adding support for Bison 3.
> >>>
> >>> -Rasmus
> >>
> >> I replaced %pure-parser (which was deprecated) with %pure_parser (its
replacement). (Also, YYERROR_VERBOSE, which also was deprecated, with
%error-verbose.)
> >>
> >> Most of the changes in the PR revolve around this change in
Zend/zend_language_parser.y:
> >> -%code requires {
> >> -#ifdef ZTS
> >> -# define YYPARSE_PARAM tsrm_ls
> >> -# define YYLEX_PARAM tsrm_ls
> >> -#endif
> >> -}
> >> +%parse-param { void *tsrm_ls }
> >> +%lex-param { void *tsrm_ls }
> >>
> >> YYPARSE_PARAM and YYLEX_PARAM were deprecated, and then removed, and
replaced with %parse-param and %lex-param. However, you cannot (or I did
not see a way to) conditionally define parameters, as PHP was previously
doing here.
> >>
> >> So instead, I created the TSRMLS_DN and TSRMLS_CN macros which, in the
ZTS case, work like TSRMLS_D/TSRMLS_C, but when ZTS is off, still resolve
to a parameter (that must always be present), which is passed NULL.
> >
> > Thanks for your work, always good to support less archaic version of
bison.
> >
> > Some comments:
> >
> > - does it still work with previous versions? If yes, do you know which
> > or which minimum version we should then require?
> > - 5.5 is stable, I am not sure it is a good idea to do these changes
> > there. 5.6 may be a good candidate (but has to be done quickly, RMs
> > can confirm if it is still possible)
>
> That's a no-go for 5.5.
> 5.5 is stable, 1year old (at this email date), and we should not
> change such a thing into this stable branch.
>
> For 5.6, we are actually in RC stage (with first RC to come soon).
> Seeing the comments saying that it's all compatible and tests have
> passed, I'm not against requiring bison 3.x for PHP 5.6.
> Waiting for Ferenc's answer ;-)
>
> Thank you for your patch and your support to make PHP better.
>
> Julien Pauli
I would be fine with this change, even it happens after the first RC, given
that it could only affect people, who are building php from source and not
using the official release tarballs.