Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:116138 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 70660 invoked from network); 22 Sep 2021 16:09:16 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 22 Sep 2021 16:09:16 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 12EF91804BA for ; Wed, 22 Sep 2021 09:50:32 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS15169 209.85.128.0/17 X-Spam-Virus: No X-Envelope-From: Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 22 Sep 2021 09:50:31 -0700 (PDT) Received: by mail-wr1-f49.google.com with SMTP id d21so8683491wra.12 for ; Wed, 22 Sep 2021 09:50:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=cEtiDNs3cNW8y9iilhO23GhFAm8w5mrgli38mU22hEc=; b=fu495nGlx84IuDZo2JQZ8+Ia7/Tk7Kywj8LTZj1dMr/3ehWEJhe3s8QteX0kamyZOn 8UO5cyHgRM1XnaZhgGEHU4KFhtGvr/6ztjZQbYzdSqqp3MFEGpUFXDFW5PM+ncI6jH9F 5UKXtFEAPjtEL5SM/kMvC4RusqyR15Z1Vsli9YHU0BWhNhhzDrP3JXoMSh5TH+8pLLaV ifm4RBkK1JLsc4Q2+t6+UW4JAQ8yB9LRf04VQyzaYo2x3XZVM9rCv9PLn8TUdj3Zsn20 NcId91MDfkmJoDCQhGMBvG8x2JJxZ+BXDQr8Ub9QBS4v6yxIgaiak67h/exk2z3To7uh pM8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=cEtiDNs3cNW8y9iilhO23GhFAm8w5mrgli38mU22hEc=; b=egXv9zg7Wbf8puSsnk8bf/AsjN2yU8ekQoOZP2jLaThMmXnxLuEMPE0OgubkOnkwrM CGgroOt3iMC6QXmI9sn5pmlfHXL35M3M9cKTkv2gt6LKA6+/N/A5r7g6kyzKNtq6E8se oP3CSCQDc/B/g3Vp5atgfCSLwNVAbb5/hFgfLVlzcwklkBrrZuAT0DjAaDTSHYsL+/89 ZlHpw0m+NU3FH9jb87Hb1hhqgmKlilRIHUJvYggjEk7FPCtv0CwGeIO+hy7If0kj/5cA Ttf3tOpmIabaRTdrAp3yYFYNOw66F4BtLHmvUWAE0u3qy3iReJ0Wy5zGH4Lg8bH8ArEx g3/w== X-Gm-Message-State: AOAM532xd6ASU3702xyIJkg2wQDqqat4JwuDriLoF2BvSKjMECs37Y6n ZdLcKWtQdU3d1SNp/kDYu/TkcT7ONrw= X-Google-Smtp-Source: ABdhPJy3EnrI8vBl48mb/+O7KoDx6YBO/JHNct982aw5sGJrzLECFsog5+6EF/gwQlO1q97afJ2tjA== X-Received: by 2002:a1c:1b10:: with SMTP id b16mr21762wmb.194.1632329429009; Wed, 22 Sep 2021 09:50:29 -0700 (PDT) Received: from [192.168.0.22] (cpc104104-brig22-2-0-cust548.3-3.cable.virginm.net. [82.10.58.37]) by smtp.googlemail.com with ESMTPSA id z6sm2736449wmp.1.2021.09.22.09.50.28 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Sep 2021 09:50:28 -0700 (PDT) To: internals@lists.php.net References: <20A7B84B-3AEE-4E85-94BE-F2C6DFDA928F@cmpct.info> Message-ID: <828f3da7-174e-2128-d18e-8ad925305a7c@gmail.com> Date: Wed, 22 Sep 2021 17:50:27 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Subject: Re: [PHP-DEV] BC breaking changes in PHP 8.1 From: rowan.collins@gmail.com (Rowan Tommins) On 22/09/2021 15:02, Kamil Tekiela wrote: > I just want to point out that PHP does not follow semantic versioning. It > never did and there are no plans to start following it now. This statement is true. > Breaking changes were made in all previous versions, both major and minor. This statement may be true, depending on how you define "breaking", which is always tricky. > The only time when we try to avoid breaking changes is in patch releases. > These are extremely uncommon. This statement, however, is false. (As are similar statements made by other people in this thread.) There is an explicit policy to avoid breaking changes in minor releases here: https://wiki.php.net/rfc/releaseprocess Under heading "x.y.z to x.y+1.z", there are bullets for "Backward compatibility must be kept" and "API compatibility must be kept (userland)". So, while it may be reasonable to claim that we frequently fail to do so, we always *try* to avoid breaking changes in minor releases such as 8.1. Whether *this particular* compatibility break is acceptable is a subject for wider debate. I do sympathise with Matthew's position that it would be easier for users if the "resource" type was simply removed all in one go in 9.0. I also sympathise with the position that it's easier for *maintainers* to work through this as a longer-term project, with multiple deliverables. I also share the concern that there wasn't an RFC introducing this policy, which in hindsight could have led to a more careful migration strategy. For instance, should we have implemented a way for is_resource() and/or get_resource_type() to return expected values for the new objects? I have much less sympathy for some of the more extreme responses in this thread with ridiculous hyperbole like "shooting ourselves in the face". There is no perfect answer, and we should be able to have a rational discussion about the pros and cons of different strategies. Regards, -- Rowan Tommins [IMSoP]