Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:118774 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 68445 invoked from network); 6 Oct 2022 21:40:57 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 6 Oct 2022 21:40:57 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 4A1D3180504 for ; Thu, 6 Oct 2022 14:40:56 -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.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE 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-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Thu, 6 Oct 2022 14:40:55 -0700 (PDT) Received: by mail-lj1-f182.google.com with SMTP id f9so3675383ljk.12 for ; Thu, 06 Oct 2022 14:40:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=WByD8iv9sA5SXtClw9MTIfzjyHCpfrVFkqm0pSKTWCI=; b=HfYBCv6moOIOsZ/88b83PleCZj5fUhp8asWQdM3citr7Yyl1tcxYSIUyDqdo/NuY0h ez9V2gSbQ0vOSq5o9xpc1Gg1LXq28CC6zwggpM4l8Az6xd9OE9ei2ys/fKu6g/S482nk +caIONDNvoQXAz7pYLaGzxVW7nj92Qbbf7UCJmvaIgeJZhX1NYifmbHM3yum0GV4inBQ /LZ8+l78FZYOUwVX9+My+tqNAXWoQcT9akQ6HOepOFkdOJDFmIASMf0ToidgTqCpzLGX KFO3r8fMBT0d1QxbkpafCx86Efub0A0JODNdebb2ol0ILjVreBOv/2Q1EHzlO/djyQ3B 5PnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=WByD8iv9sA5SXtClw9MTIfzjyHCpfrVFkqm0pSKTWCI=; b=wnz/mzYgxNIYCRf5aVBTUVSZhzYw5vRdOPT+eRnQV6HVuln8cf2L7b6BCSjTI2uAvR ZRmirRf+mz2PcA5kMtPlIlXRK6q81Xv8gwgcooJdOGnp7AYWcJz2rAYj1dv+mqc89uas 5rOV01np5Jp8tpWfovl9wIE+1mmSfpbVWJSxMEgoiaoFzWQPsEBN5/i0BN8V6+DvrSDR h3UJe44eXnvJD8cyFSJwy6bClOHfKn0BIu29vh98IzZnm3FrN03b1cJGMzIhW2cCHi3K gBVp6iPi4qCapsOsHxmDS6kc1zaRDMCe8YfVf5LsC7EMKX7z53GZGJ9xIPyMhoL9QZH0 imyg== X-Gm-Message-State: ACrzQf2o6fQbKNWWzgt130xgmzf8CiPvQq22uXj/R/x/cJf78symBWmK UkbnI3VvzTdHQaGt74gwZFQhbXliEvQV5jph6Aiqi/wLc/8= X-Google-Smtp-Source: AMsMyM72n5gT5Mq2IOGTzuw+cA9YwhfcXkylsKmQgE9B40ZbadizaVhV/X8qfv8qXMt4JZlCpS15KFXmWx4ZgT5Y5r8= X-Received: by 2002:a05:651c:128d:b0:26c:37f9:c8d8 with SMTP id 13-20020a05651c128d00b0026c37f9c8d8mr568902ljc.97.1665092454161; Thu, 06 Oct 2022 14:40:54 -0700 (PDT) MIME-Version: 1.0 References: <1aa20877-3365-0ace-25d2-1cb1be8f3bcc@gmail.com> <55686BD4-4C67-4A4F-8BE4-BDF0149296FB@gmail.com> In-Reply-To: Date: Thu, 6 Oct 2022 18:40:42 -0300 Message-ID: To: Rowan Tommins Cc: PHP Internals Content-Type: multipart/alternative; boundary="0000000000003fa20605ea648c3f" Subject: Re: [PHP-DEV] Experimental features From: david.proweb@gmail.com (David Rodrigues) --0000000000003fa20605ea648c3f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > If I start coding an application that relies on these new types, is there a chance that they'll be removed completely, and I have to rewrite it all? Imagine that there are users, like me, who would like to test features in development (mainly in order to provide feedback to the development team). It shouldn't be something a user should use for big productions, but maybe for smaller personal projects. This is an opportunity to make improvements to the feature for the next release, without the risk of having to do so during it. But keep in mind that these features are already intended for PHP, and it is not a "feature test" or suggestion. The voting process is mandatory and the feature must already be set to "accepted". However, we need to separate an experimental feature into stages, much like Node does, so these are my suggestions: 1. Closed experimental: the feature has successfully passed the approval phase, including an available PR. However, the feature will only be available through additional configuration in php.ini, as it can still undergo BC changes, including its complete removal. 2. Open experimental: the feature has already been state internally by "adventurous users" and can already be used without php.ini configurations, however, its use in code still needs experimental markers (eg. experimental_json_validate() or declare(experimental_*)). BC is unlikely to happen unless the feature has issues that need to be resolved before an official release. Removing the feature is suggested not to happen, with the exception of very serious and irreparable issues. 3. Stable: the feature proves stable enough to be used "as is" in an official version, but is still kept as an experimental marker until a new official version is released. At this point, imagine that it is as if the resource were indeed official, so it would no longer be possible to remove it or make BC changes. 4. Available: the feature is now an official part of the language and can be used in a major/minor version without the experimental markers. Markers will continue to work until the next major update as an alias. Also, if a user tries to use experimental features without being aware of it (eg. did not activate it in php.ini or did not use declare()), an error message should be displayed. It also makes me rethink the time it takes for a feature to be ready to be officially delivered. My suggestion would be at least 3 months for the 1st and another 3 months for the 2nd stage. While the "stable" stage would last as long as needed for the next major/minor release. This generates less risk for new features and earlier feedback from users willing to test it. Atenciosamente, David Rodrigues Em qui., 6 de out. de 2022 =C3=A0s 17:12, Rowan Tommins escreveu: > On 06/10/2022 17:41, Alex Wells wrote: > > For example, Kotlin has recently introduced a new feature - unsigned > integer types. > > > I'm still struggling to understand what I, as a user, would do about this= . > > If I start coding an application that relies on these new types, is > there a chance that they'll be removed completely, and I have to rewrite > it all? Is there a chance that every minor version I upgrade might > introduce subtle changes in the behaviour of my code? Or is there just a > chance that someone will decide the bikeshed's the wrong colour and I > have to regex replace all my "123u" to say "u123" instead? > > > Regards, > > -- > Rowan Tommins > [IMSoP] > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: https://www.php.net/unsub.php > > --0000000000003fa20605ea648c3f--