Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:129351 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id 3ED091A00BC for ; Thu, 20 Nov 2025 22:18:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1763677126; bh=fuFxDEjgJLS53t16raIkpOqN+wHS16uO8oopRKpU0T4=; h=Date:Subject:To:References:From:In-Reply-To:From; b=Nhb4HhWDsFNVDNAd0Spm4Jqyiuam1ajaRo9Xmjiv7Jf9oIvnCdAMF/1ti+NmPtsRc t7k5gQRVHfGZSdLGPsV9+N7BwQlXonbDizqD8pDv3DAp2e4FNgRb/UGxOEktarbavZ W7MJu3cJ1/rTi+7dH/DvPAtX8MnrPEE5gE0SRM+0hGmUwsotVQNAnUTO441oGDx41G BgE7/WrM2CUe3MAXWXw8LsSKAw/BX1UKwMzM0sr0YltR8h7ZnEEpQMlv2N7RvnDl1J E3+/ewwakfY+YWDIpIa5i6Qnj8MhGWPNTMwGtCUD+5krCwID90C5aapR9EhBKsfpSe gjwJJG+Vg2jjA== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id D5DB71805DE for ; Thu, 20 Nov 2025 22:18:45 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-0.1 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_MISSING,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from fout-b3-smtp.messagingengine.com (fout-b3-smtp.messagingengine.com [202.12.124.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Thu, 20 Nov 2025 22:18:45 +0000 (UTC) Received: from phl-compute-11.internal (phl-compute-11.internal [10.202.2.51]) by mailfout.stl.internal (Postfix) with ESMTP id 6984A1D0011D for ; Thu, 20 Nov 2025 17:18:40 -0500 (EST) Received: from phl-mailfrontend-01 ([10.202.2.162]) by phl-compute-11.internal (MEProxy); Thu, 20 Nov 2025 17:18:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rwec.co.uk; h=cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1763677120; x=1763763520; bh=PY/ewVakPMc+h+8W6wReIzBFqd2PC7guW5jsdH4toE4=; b= GpAiznE5Po0qpAMsZCQtixrvAFZQ46H2VdOT6V+jAn85vhZHy6+jzwvgO3qtyJlZ 7Eou+S0En5Gw4eZJ5B3naVucJ+pY+FYX4b/UgXLW+U/8+AarGa/bNJmOhU4cG96T XHe0483ZshIQPHMZDQEO5vq/XmRldFcgp+jvV1zowV8trOBEhADGREo7cRxpwwIm Yfaixd5sy+Iyp7FyzTvGta56uBhWHOc8RDprJkjwP6uzdM9c0pPYh41Z7763ozfk hQ4IjdjB+GDJN84vbqn5kLbKGNbkihh2WNb3+FvfSCwz10D6xeBH53EcovFUKMiZ ZqgHahs3K0+c+/oY3XfO2A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm3; t=1763677120; x=1763763520; bh=P Y/ewVakPMc+h+8W6wReIzBFqd2PC7guW5jsdH4toE4=; b=o6R1v1XpvEYTV6k0u 6vd5jWtah3ZIxEmRjb4yK8qk8YoKxVDXJ7hQww04JrWt+SS+F04YRS9r3Ofx0Quw iKFCDt05EF7KtzjBHf9mUtftFDqPwinZ2msS93GtaubwZp08G1n0lAcGThNpAbnq Oxsx/I1/8jmlkKsnH3vpUbVqUgvxvCQUAcLeE2YIaB4Usbt1f6qm0ENm3f5DrTO2 A29blEns1B5d6SnHrUq7iGH/UiHD956loWnV5B937T8UJEyAkWJH8jBNTzA2j0gk 1XC3x6LbA+qr8FwINImnY9Cavczf6DVH8YuajfkQFO9MFS/IjHQHyvW9BAdqQHqP P9IIg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddvvdekvdeiucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpefkffggfgfuvfhfhfgjtgfgsehtkeertd dtvdejnecuhfhrohhmpedftfhofigrnhcuvfhomhhmihhnshculgfkoffuohfrngdfuceo ihhmshhophdrphhhphesrhifvggtrdgtohdruhhkqeenucggtffrrghtthgvrhhnpeeltd etjeetvdehteffgefgleeviefgveehjeelleehgeegteekheejteeiheeuhfenucffohhm rghinhepphhhphdrnhgvthenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmh grihhlfhhrohhmpehimhhsohhprdhphhhpsehrfigvtgdrtghordhukhdpnhgspghrtghp thhtohepuddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepihhnthgvrhhnrghlsh eslhhishhtshdrphhhphdrnhgvth X-ME-Proxy: Feedback-ID: id5114917:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Thu, 20 Nov 2025 17:18:39 -0500 (EST) Message-ID: Date: Thu, 20 Nov 2025 22:18:40 +0000 Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PHP-DEV] [VOTE] True Async RFC 1.6 To: internals@lists.php.net References: Content-Language: en-GB In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit From: imsop.php@rwec.co.uk ("Rowan Tommins [IMSoP]") On 20/11/2025 10:18, Daniil Gentili wrote: > I absolutely agree with this take, however, so far, the discussion > around this RFC has been, in my opinion, mostly bikeshedding, with > theoretical correctness proposals that are an absolute nightmare in > practice (like structured concurrency), proposed by people that > admittedly have never written extensive amounts of async code in > languages using multiple paradigms That is exactly why I think some other process is needed, and why an RFC vote right now doesn't tell us anything useful. I really want this feature. But I really want us to get it right. As someone who is completely new to the topic, the things that will make me vote "Yes" on an async proposal, are: 1) Confidence that experts have reviewed the design, and ironed out crucial details. From what I've seen, Edmond has done an extremely thorough job. Once again, thank you, I tip my hat to your effort and dedication. But I'm not qualified to judge the result, and I want to see opinions from people who are. It may be that after discussing it with a bunch of other experts, exactly the same technical design would come out; I just want a bit of reassurance that the right discussions have happened. Has there been an attempt to invite specific people into a discussion, e.g. people who've worked on ReactPHP, Swoole, etc? 2) A cast-iron promise that existing code would run unchanged; or a clear explanation of what modifications it would need. The "Goals" section says code will not need changes "or changes should be minimal"; and will run without modification "provided that..." Those caveats worry me. I work on a code base with a million lines of PHP code developed in half a dozen frameworks over twenty years, maintained by a small team. When I hear "it took us 2-3 days to update a library", I don't hear a small number; I multiply it in my head, and wonder how I would justify weeks of development and testing. Right now, I don't even understand what we would be spending those weeks doing. If it really is a case of "it will be fine unless you're doing some weird tricks to force PHP to do things it doesn't normally do", then great! If it ends up as "set this global setting, and you won't get the benefit, but your legacy code will run fine", I can live with that. If the only advice is "your code will be fine as long it's already well-architected and completely covered by automated testing", it's no use to me - that's just not the reality I live in. I sincerely hope that this is solvable. 3) A set of "idiot-proof" high-level features that a non-expert PHP developer can use without understanding the full implementation. The current RFC is a lot more focused than previous versions, and that is great; but it still gets very quickly into the mechanics and edge-cases that require expertise to use. What I think is missing is the pitch to users. Something that we can put on the php.net homepage, and say "look how easy concurrency is in PHP 9!" To paraphrase the Perl slogan, I want the language to make the common things easy, and the complex things possible. I want a "pit of success", where the easiest thing to write is also the most likely to be safe and useful. I think that mostly just means defining some syntax sugar on top of some of the functions and objects. Something that we can say is PHP's equivalent of async/await, or goroutines and channels. But ... I realise this can't all fit into one RFC without discussion going on forever. Which is why we need to find some new process to make it possible. On 20/11/2025 15:39, Jakub Zelenka wrote: > I think the way forward for PHP is to do what we have been doing and > it is to provide the building blocks for user space to enable async > there because that's something that can be reasonably introduced using > the RFC through smaller chunks. I think it would be a shame to throw away the progress that's been made. I wonder if a way forward could be something like this: 1) Agree a Project Charter, some Goals and Non-Goals. Hold a vote on this, to agree that we're going ahead with the project 2) Set up some kind of project tracker, where we can list open questions and design tasks; maybe a separate mailing list / forum / chatroom for those involved in the details 3) Start with Edmond's amazing work, and iteratively work on those individual questions 4) Keep bikeshedding questions (e.g. "what is the best name for this class, and should it extend Error or Exception?") separate from architecture questions (e.g. "is this class necessary, or should it be hidden from the user?") 5) Converge on a solution where we've already agreed everything in bite-sized pieces 6) Release PHP 9.0 and celebrate All of that requires that enough people who actually understand the problem space deeply are willing to be involved and collaborate. I really hope that's the case, but I am not in a position to volunteer myself. -- Rowan Tommins [IMSoP]