Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:93927 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 84988 invoked from network); 13 Jun 2016 09:35:33 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 13 Jun 2016 09:35:33 -0000 Authentication-Results: pb1.pair.com header.from=pthreads@pthreads.org; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=pthreads@pthreads.org; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain pthreads.org from 209.85.213.45 cause and error) X-PHP-List-Original-Sender: pthreads@pthreads.org X-Host-Fingerprint: 209.85.213.45 mail-vk0-f45.google.com Received: from [209.85.213.45] ([209.85.213.45:36148] helo=mail-vk0-f45.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id E1/48-12403-26E7E575 for ; Mon, 13 Jun 2016 05:35:31 -0400 Received: by mail-vk0-f45.google.com with SMTP id u64so59972792vkf.3 for ; Mon, 13 Jun 2016 02:35:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pthreads-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc; bh=N/Hfb59kxGLzHWlj7cuwuPdIISw3EgzfRUku7/3Ka+U=; b=pt0qpN58k5/M1qCPbutSqndkQE85++NarXWMzSZirui873gEvwj6ohbcShY2v9K/ZY 4sit1XlYQ5ULiQID4JkkcNCqbLMDkWyrtpKNNpb2OGuh+KT3owa0yR6n5NKybsSZ8zcb e7qZEtcg4InEqEqK0C2PfBZUGgKpycX0K20gg+8GdoZJbpugRbF6jYHVtvIilwIXIUUR mJW1RMnX3y2uv+qKaOeK7C6QclIzAT7IipJbQXJHMKdHSM7VmA7iufzEFzaAuH1827HH xLmafwb9Fh7tUgGGMU73lF7AhnLVRJGLLlAwVBrKsm6p9t1yj4KAED/I2eXRk1vAzzy4 AavA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc; bh=N/Hfb59kxGLzHWlj7cuwuPdIISw3EgzfRUku7/3Ka+U=; b=bjeMQYN2RVGaTYBoEpgFR24t6YlH3+fC9oXZB8EfGwv/B0lhGf/xS21kAS5ZV78kHZ 1hn7RI0ZM2+s+BFD3q7mNqaE7ElyYqPlFMVRfoboQsApq6gSQ5lqt0CEC7uEXcSZD7fu CZEps7sgKvKNEoBfUxO6Sx6Awi7RQt79Z/oeu7GaUGlkquiONtNtH2GdsFGD2E3IEM60 RKGfx0WzJ59TifwvuDkRszd4+U8Ktu6aA6iJc1AcgKHeoh/QdT6mfYJ6bK6OA3zlLjZq RpMy0W012uRwDt9FOOm3r3v5Crd87G68CM9VZFAZGJVZhRze1vkBFTMhOKrxY72nNKaA AlpQ== X-Gm-Message-State: ALyK8tLRqvCnq/KLQWgKa8Uy+zj1koDiMxEJUM7kP1rutbDZDXeBYHp0hjqcNxTlerCOVRM39Gxjz1aIgBYgrg== MIME-Version: 1.0 X-Received: by 10.159.35.34 with SMTP id 31mr6328273uae.39.1465810527754; Mon, 13 Jun 2016 02:35:27 -0700 (PDT) Received: by 10.103.47.199 with HTTP; Mon, 13 Jun 2016 02:35:27 -0700 (PDT) X-Originating-IP: [109.157.60.99] In-Reply-To: <020a01d1c501$3d3d9420$b7b8bc60$@php.net> References: <6c03dafd-093a-0087-6312-96fede93c5f0@gmail.com> <020a01d1c501$3d3d9420$b7b8bc60$@php.net> Date: Mon, 13 Jun 2016 10:35:27 +0100 Message-ID: To: Anatol Belski Cc: Ferenc Kovacs , Rowan Collins , Joe Watkins , Davey Shafik , PHP Internals Content-Type: multipart/alternative; boundary=001a1145019ad0b6c60535259b72 Subject: Re: [PHP-DEV] Is the "No BC Breaks in Minor Releases" policy enforceable? From: pthreads@pthreads.org (Joe Watkins) --001a1145019ad0b6c60535259b72 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Morning internals, As already explained, strictly following SemVer is not possible for a project the size of PHP, with a release process such as PHP has. Backward compatibility is important. Also important is the long term goals for PHP, or at least for this major version of PHP: The goal is to make Zend so efficient that generating machine code from user code becomes a deployable solution. I did request that the RFC were expanded with details about the optimizations this "feature" makes impractical, I did get an extended explanation in the discussion thread from Nikita, but the RFC was not updated by Dmitry, as requested. That's not to say that everything that makes an optimization possible should get a green light, there will almost certainly be things I/we vote no on because of BC concerns, but in this case, I see more value in the break than I see in retaining the "feature". I can be wrong, might be ... it doesn't really matter, the majority has spoken. It is only my concern that the change is documented properly. Cheers Joe On Mon, Jun 13, 2016 at 12:22 AM, Anatol Belski wrote: > Hi, > > > -----Original Message----- > > From: Ferenc Kovacs [mailto:tyra3l@gmail.com] > > Sent: Sunday, June 12, 2016 10:48 PM > > To: Rowan Collins ; Anatoliy Belsky >; > > Joe Watkins ; Davey Shafik > > Cc: PHP Internals > > Subject: Re: [PHP-DEV] Is the "No BC Breaks in Minor Releases" policy > > enforceable? > > > > Hi, > > > > my interpretation is that no rfc with BC breaks should target a minor > version. > > Our interpretation(based on past decisions and mailing list discussion) > of BC > > break is changing any userland API except where we excplicitly stated > that the > > previous behavior is undefined (and we also allow extensions to be move= d > to > > pecl, which from user POV can be a BC break but we allow that > explicitly). > > I see a trend with php 7.1 that people try to add everything which we > couldn't > > finish in 7.0 as it would be a complementary php 7.0 release, not a > standard > > minor release which should abide our release > > process( https://wiki.php.net/rfc/releaseprocess ). > > Let me summon Anatol as he was the 7.0 release manager and Joe and Dave= y > as > > they are the RMs for 7.1, let's see what do they think about this. > > > For 7.0 - it was a major version, so a bit more breaches were introduced. > Many of such cases were conditioned by the internal changes so were > unavoidable, but some were accepted intentionally. Still, my interpretati= on > is close to yours, Ferenc, and the release process RFC is what I always > refer to when making a decision. But, even with 7.0, every case was > evaluated individually. > > For example, there was (and is) the case with throwing exceptions in core > functions. While it would make sense for many cases, there was for one no > general green light from the community. For two, there was (and are) > several cases where a fatal error is unavoidable and an exception would b= e > hard to implement. Still some new functionality was accepted with throwin= g > exception in function by an explicit RFC after the feature freeze. Having > that allowed in general were a paradigm change, so several PRs were > rejected in that regard. > > Thus, some cases can be quite controversial. As for me, the most what > matters is - the API should be consistent, existing PHP scripts should > still be functional, as much as possible. Even if something looks like > making sense but would impede the adoption of a new version, it should be > at least thought twice. I would call it a "generic recipe", still it won'= t > be applicable for every single case. As striving to have everything BC fr= ee > is not always possible and would block the actual language development or > leave bugs open. While some cases can be solved by a simple discretion, > others require a broad consent which is reached using the RFC instrument. > > Regards > > Anatol > > > On Sun, Jun 12, 2016 at 6:42 PM, Rowan Collins > > wrote: > > > > > tl;dr: > > > > > > - We have an RFC [too_few_args] about to pass that seems to break our > > > published Release Process. > > > - Is the vote invalid, or do we need to change the Process? > > > - The opinions of those who voted "Yes" are particularly requested. > > > > > > > > > Hi All, > > > > > > The RFC to Replace "Missing argument" warning with "Too few arguments= " > > > exception [too_few_args] looks certain to pass (it currently stands a= t > > > 36:8 in favour), and contains the following: > > > > > > Backward Incompatible Changes: "The BC break in intended." > > >> > > > > Proposed PHP Version(s): "PHP 7.1" > > > > > > This appears to be in direct contradiction with the Release Process > > > RFC [releaseprocess] adopted in 2010, which states: > > > > > > "x.y.z to x.y+1.z ... Backward compatibility must be kept" > > >> > > > > > > There are two interpretations of this: > > > > > > 1) The policy in [releaseprocess] is binding, and the vote on > > > [too_few_args] is invalid. Either the results should be ignored, or > > > silently taken as acceptance of the feature in 8.0, and implementatio= n > > > postponed. However, there is no provision in the RFC for enforcement, > > > and the RMs are explicitly denied such a role: > > > > > > "The roles of the release managers are about being a facilitator ... > > > But > > >> they are not: Decide which features, extension or > > >> > > > SAPI get in a release or not" > > > > > > 2) There is some reason that [releaseprocess] can be ignored in this > case. > > > However, there is no mechanism I can see in [releaseprocess], nor any > > > justification in [too_few_args] or on its associated mailing list > threads. > > > > > > > > > It is often argued that "No BC" is too broad, and thus unenforceable. > > > It is probably impossible to give a water-tight definition of what is > > > acceptable, but we can state some general principles. > > > > > > The Introduction to [releaseprocess] implies the following aim: > > > > > > - To ensure a smooth and predictable upgrade process between minor > > > releases. > > > > > > From this, I would consider the general spirit of the BC rule to be: > > > > > > - Any reasonably written PHP application which runs successfully unde= r > > > PHP x.y.z should run successfully under PHP x.y+1.z without > > > significant modification. > > > > > > For instance, a program which runs fine under 5.3 may need invasive > > > changes to remove call-time pass-by-reference before it runs on 5.4; > > > preventing this seems to be the intent of the rule. > > > > > > > > > Here is where things begin to get subjective, but the following seem > > > reasonable to me, and seem to match most decisions made up until now: > > > > > > - Notices, Warnings, etc, may change severity, but must not become > > > Errors or Exceptions. > > > - An Error may be removed, or downgraded to a Warning, etc, if there > > > is good reason to do so, e.g. new behaviour gracefully handles a > > > previously unhandled case. (Many of the cases below boil down to > > > this.) > > > - The defined behaviour of operators must not change. > > > - New operators, or application of operators to new situations, may b= e > > > added, where such application would previously have been a error. > > > - New keywords, functions, and classes may be reserved in the global > > > namespace, because PHP "owns" this namespace. However, this must be > > > done with care, and following the naming guide. > > > - New arguments or type cases may be added to built-in functions. > > > - Old arguments must not be removed from built-in functions. > > > - Functions must not be removed, except for the special case of movin= g > > > a "bundled" extension to PECL, such that loading the PECL module > > > restores full compatibility. > > > - Accidental and undocumented behaviour ("bugs") may be changed if > > > some effort is made to demonstrate that it is not widely relied on. > > > - The above rules may be broken only with careful justification, e.g. > > > to remove a major security issue. > > > > > > Note that [releaseprocess] already states that justification must be > > > provided for BC breaks, even where it allows them: > > > > > > It is critical to understand the consequences of breaking BC, APIs o= r > > >> ABIs (only internals related). It should not be done for > > >> > > > the sake of doing it. > > > > RFCs explaining the reasoning behind a breakage and the consequence= s > > > along with test cases and patch(es) should help. > > > > > > > > > If the above set of rules were adopted as binding, the vote on > > > [too_few_args] would be invalid, because: > > > > > > - it promotes a warning to an error > > > - the behaviour it is changing is documented and long-standing > > > - it does not justify itself as a necessary exception to the rules > > > > > > I would be very interested to hear from those of you who voted "Yes" > > > on [too_few_args] as to how you would formulate the rules instead. > > > > > > > > > References: > > > [too_few_args] https://wiki.php.net/rfc/too_few_args > > > [releaseprocess] https://wiki.php.net/rfc/releaseprocess > > > > > > Regards, > > > > > > -- > > > Rowan Collins > > > [IMSoP] > > > > > > > > > -- > > > PHP Internals - PHP Runtime Development Mailing List To unsubscribe, > > > visit: http://www.php.net/unsub.php > > > > > > > > > > > > -- > > Ferenc Kov=C3=A1cs > > @Tyr43l - http://tyrael.hu > --001a1145019ad0b6c60535259b72--