Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:102405 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 34277 invoked from network); 24 Jun 2018 21:26:41 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 24 Jun 2018 21:26:41 -0000 Authentication-Results: pb1.pair.com smtp.mail=morrison.levi@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=levim@php.net; sender-id=unknown Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.208.174 as permitted sender) X-PHP-List-Original-Sender: morrison.levi@gmail.com X-Host-Fingerprint: 209.85.208.174 mail-lj1-f174.google.com Received: from [209.85.208.174] ([209.85.208.174:37505] helo=mail-lj1-f174.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 32/EE-13077-F8C003B5 for ; Sun, 24 Jun 2018 17:26:40 -0400 Received: by mail-lj1-f174.google.com with SMTP id v25-v6so3152146lji.4 for ; Sun, 24 Jun 2018 14:26:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=doTUCmVxcRsjjXfpRAqxImP36tanCfsvtxFCzRyUMv0=; b=Gi9CDz+bYhhhRpJNgLS0d6APIhhXzwsynZSrAxtqm5vrMiiiFMc8fbqVL8nNe79RXq Hdc/Gj2V41/B1H+LCGI4N4mCca1IOegCiwmHJtmL2kxE5rC0dOcF3u5gZWfWHxik0hIX pQvG1i2uL+sVzQNdCS6U++xt+l0ekF7hJDFOcBDsmUl4AkKW0hwfN6lVgKkteNtAwPrU 3upB/UHMXwhX3cv0q7j8Y6lBOLYesZjVcGrxzbigXN+cJ/1sM26ihhvjOtRtAmP6Q4q2 6sDa+o2oyKxldzO3koQTGk2HDq3sKMsroMTpVNAWzOL1Uxk1QevTMo2JHWQC6ArB5T/K /ViQ== X-Gm-Message-State: APt69E0SfuxuclyOJh/b6HzZgIZXj0CK3O2pRR4CroPbq4zi+qevjl/7 P7NYoF7ApJnqdBvmiCPjlP31pCbxwWlOe3BlN4Y= X-Google-Smtp-Source: ADUXVKImzF2s72kM9wGBHPxngsDieX5hrea5RvS0iqORbtdTkOEVW8WOBphfbXaUImSBGEf/8LI9v8eaXHNpZAH0/sY= X-Received: by 2002:a2e:9809:: with SMTP id a9-v6mr2113045ljj.143.1529875596378; Sun, 24 Jun 2018 14:26:36 -0700 (PDT) MIME-Version: 1.0 References: <4CD11D3A-D799-46CF-9DD0-E34552FB15CD@gmail.com> In-Reply-To: <4CD11D3A-D799-46CF-9DD0-E34552FB15CD@gmail.com> Date: Sun, 24 Jun 2018 15:26:24 -0600 Message-ID: To: Rowan Collins Cc: internals Content-Type: text/plain; charset="UTF-8" Subject: Re: [PHP-DEV] PHP 8 next? From: levim@php.net (Levi Morrison) On Sun, Jun 24, 2018 at 11:24 AM Rowan Collins wrote: > > On 24 June 2018 15:31:18 BST, Levi Morrison wrote: > >My position stands: I *strongly* object. If we rush to PHP 8 then it > >will be at least 4-5 more years before we have another chance for > >breakages in PHP 9. We can add features yearly. > > Then when is the right time? We already have a list of deprecated features, and I believe some have already waited 4 years. > > Are there particular breaking changes that you think would be ready in 2 years time that wouldn't be ready in 1? Certainly. Large breaks require multi-year planning and multiple releases to add migration paths, documentation and training, deprecations, etc, before the change itself happens. If PHP 8 is the next release then we've missed the window for deprecations and warnings (mostly; feature freeze is imminent). I wish our symbol tables were merged. If they were they we could nicely solve some issues: // this tries to use a constant of name 'functionname' array_map(functionname, $input); // this uses an object property instead of a method array_map($object->methodname, $input); // requires parens; eg ($this->property_which_is_callable)(...$args) $this->property_which_is_callable(...$args); Another: people would like autoloading to work with functions and constants instead of just classes/interfaces/traits. It's also annoying that we have to re-implement features for every symbol type "use function", "use const", whereas classes just say "use". It's also annoying that our symbols do not behave the same when they are missing; again, unifying the behaviors is a bonus and lays the foundation for other features. Whether you actually want these features or not, hopefully you can agree that these things cannot be dropped into PHP 8 without warnings and deprecations, which is our most reliable way of telling users when code will break or change.