Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:62928 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 90688 invoked from network); 10 Sep 2012 18:23:41 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 Sep 2012 18:23:41 -0000 Authentication-Results: pb1.pair.com header.from=ircmaxell@gmail.com; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=ircmaxell@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.215.42 as permitted sender) X-PHP-List-Original-Sender: ircmaxell@gmail.com X-Host-Fingerprint: 209.85.215.42 mail-lpp01m010-f42.google.com Received: from [209.85.215.42] ([209.85.215.42:52404] helo=mail-lpp01m010-f42.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 3F/D8-35669-C203E405 for ; Mon, 10 Sep 2012 14:23:41 -0400 Received: by lahl5 with SMTP id l5so1377105lah.29 for ; Mon, 10 Sep 2012 11:23:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=gU86rpYsuZ3+IVzFqcSrWm9Bx7xVVz1oP3YiDRhvv8I=; b=tquBdvyerRgLACUfuhx81T0ZXhRkpHdVwBihhstFa6H2IEzgIufqSec4yB6XaaN/bv SNIVlnM2lCS2ffsfIDW4nwOkr5j2Kx/Of9XQueJOsO5Kh+ADUx6oRTR1czrX817AkWlx wL7+ONMvfeCQFnIps9lqqwmx2bmge4R2QldhnBeqyi7BRibDYcP2siHxyUWSgQ653r5e nOihubgz6zUfxglrzEzbz2+yGZoZmx0KhVNBHbfCvU1lcPEOTQbe0hdQmdX+IIsEP40L KYmD8RTIqYqlHHIIVAusJpSuuN/pmzkybsIVfBpiqQ2KsrwyV6qcK2QKmHj+1fpK++Dd pWig== MIME-Version: 1.0 Received: by 10.152.124.18 with SMTP id me18mr5837074lab.6.1347301416814; Mon, 10 Sep 2012 11:23:36 -0700 (PDT) Received: by 10.114.22.1 with HTTP; Mon, 10 Sep 2012 11:23:36 -0700 (PDT) In-Reply-To: References: Date: Mon, 10 Sep 2012 14:23:36 -0400 Message-ID: To: Pierre Joye Cc: jpauli , PHP Internals Content-Type: multipart/alternative; boundary=f46d043745215ac8b804c95d0e41 Subject: Re: [PHP-DEV] What is our definition of a "Backward Compatibility Break" From: ircmaxell@gmail.com (Anthony Ferrara) --f46d043745215ac8b804c95d0e41 Content-Type: text/plain; charset=ISO-8859-1 Pierre, On Mon, Sep 10, 2012 at 1:54 PM, Pierre Joye wrote: > hi, > > On Mon, Sep 10, 2012 at 6:28 PM, jpauli wrote: > > Based on our recent discussion on #pecl , I'd like we clarify what we > > think is a "BCB" (Backward Compatibility Break) as well as what "only > > minor BC breaks" could mean. > > Change in phpinfo related stuff are minor. Adding a notice or warning > is minor or irrelevant. Changing return values (like suddenly > returning array instead of integer, f.e.), behaviors or similar things > are not allowed in x.y+1. I'm not so sure about that. Adding a warning or notice may actually cause a lot of headaches. See what happened with call-time-pass-by-reference in 5.3... All of a sudden a lot of code that worked fine is flooding logs with new warnings... I guess my point is that the line between a BCB and a minor BCB is a lot finer and a lot more subjective that it seems on the surface. Is adding a new language feature with a new keyword a BCB (since existing functionality using that keyword is now a parse error), or is it a minor BCB since it doesn't change any existing built-in behavior (only adds new behaviors)? I think that's what we need to expand upon. My take on it is this: If you can solve the "break" using nothing but static analysis and a static conversion "script", then it's a minor break. So new keywords would be fine (you could find/replace function yield() with function yield2() really easily). But changing the semantics of code (returning an array instead of an int, changing how references are passed, etc) would require developer interaction to fix, and as such would not be minor. And one point on what classifies as a BC break: Everything. Any change will break BC in some way. Even adding a function is a BC break since existing code may use the same function names. Fixing a segfault is a BC break as well, as it's changing the way it works. The difference comes in if it's a minor BC break, or a major one. And that's not trivial... My $0.02 at least... Anthony --f46d043745215ac8b804c95d0e41--