Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:74442 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 53273 invoked from network); 23 May 2014 08:25:49 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 23 May 2014 08:25:49 -0000 Authentication-Results: pb1.pair.com header.from=john@bafford.com; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=john@bafford.com; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain bafford.com from 96.241.205.2 cause and error) X-PHP-List-Original-Sender: john@bafford.com X-Host-Fingerprint: 96.241.205.2 nova.zort.net Received: from [96.241.205.2] ([96.241.205.2:58613] helo=nova.zort.net) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id B3/4B-63132-9060F735 for ; Fri, 23 May 2014 04:25:46 -0400 Received: from [IPv6:::1] (nova.zort.net [96.241.205.2]) (authenticated bits=0) by nova.zort.net (8.14.5/8.14.5) with ESMTP id s4N8Pbsc006902 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Fri, 23 May 2014 04:25:37 -0400 Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.2\)) In-Reply-To: Date: Fri, 23 May 2014 03:25:35 -0500 Cc: Rasmus Lerdorf , PHP internals Content-Transfer-Encoding: quoted-printable Message-ID: <503FCE95-DEAD-4497-A099-D671E6DD07C9@bafford.com> References: <2DC459EE-AE98-4CAE-977A-6FB918FDEF54@bafford.com> <537EA42B.4000000@lerdorf.com> To: Pierre Joye X-Mailer: Apple Mail (2.1878.2) Subject: Re: [PHP-DEV] Bison 3 support for PHP 5.5 From: john@bafford.com (John Bafford) Pierre, On May 23, 2014, at 01:40, Pierre Joye wrote: > Hi John, >=20 > On Fri, May 23, 2014 at 3:44 AM, John Bafford = wrote: >> Hi Rasmus, >>=20 >> On May 22, 2014, at 20:28, Rasmus Lerdorf wrote: >>=20 >>> On 5/22/14, 6:01 PM, John Bafford wrote: >>>> Hi, >>>>=20 >>>> I=92ve submitted a PR (https://github.com/php/php-src/pull/683) to = add support for Bison 3.0 to PHP 5.5. >>>>=20 >>>> I=92ve 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. >>>=20 >>> 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. >>>=20 >>> -Rasmus >>=20 >> I replaced %pure-parser (which was deprecated) with %pure_parser (its = replacement). (Also, YYERROR_VERBOSE, which also was deprecated, with = %error-verbose.) >>=20 >> 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 } >>=20 >> 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. >>=20 >> 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. >=20 > Thanks for your work, always good to support less archaic version of = bison. >=20 > Some comments: >=20 > - 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) I did test this with PHP 5.4 using bison 2.3, and it worked, but I = elected to not base the patch on PHP 5.4 on Derick=92s advice, as it = could potentially remove compatibility with some or all Bison 1.x = versions, which PHP 5.4 explicitly supports and which I did not really = want to spend time testing. PHP 5.5 and master already require bison >=3D = 2.4, so that was the earliest version I tested on those branches. For = master and 5.5, I specifically tested 2.4, 2.7.12, and 3.0.2, and all = three worked (tests passed) on both zts and non-zts builds. So, this PR, = for 5.5 and (appropriately updated for) 5.6, only expands the supported = versions of bison. >=20 > Cheers, > --=20 > Pierre -John=