On 01/03/2025 09:11, Edmond Dantes wrote:
Good day, everyone. I hope you're doing well.
I’d like to introduce a draft version of the RFC for the True Async
component.
https://wiki.php.net/rfc/true_async
My reaction to this can be summed up as "this is huge!" By that I mean
multiple things...
First: PHP having native async support would be a huge step forward for
the language. It's really exciting to see how this proposal develops.
Second: it's clear you've put a huge amount of work into this, so a huge
thank you for that, and I hope it is rewarded.
Third: this is a huge proposal to digest. I wonder if there are ways it
can be split into smaller pieces, so that we don't overlook details in
one part because our focus is drawn to another. That might mean
releasing a partial implementation this year, and more features next
year; or it might just mean discussing and merging some core pieces
first, then immediately following up with a series of feature RFCs, all
targeting the same release.
Fourth: design decisions here will have a huge impact on the language
for years to come. We should spend plenty of time looking at experience
from elsewhere - other languages, and existing third-party async
implementations for PHP. This is closely related to the previous point,
since expanding the current RFC with comparisons for every decision
would make it impractically long.
Fifth: this is a huge amount of new code - GitHub says 24 thousand lines
of added code, although some of that is tests and documentation (which
is great to see included!) We need to make sure there are enough people
who understand the implementation to maintain that. Maybe we can try to
tempt some of the core contributors to existing third-party libraries to
spend some of their time on php-src instead.
I realise I haven't actually given any concrete feedback on the proposal
- I don't have any experience with other async implementations, and
don't fully understand the concepts involved, so don't feel qualified to
comment on the high-level design questions. I might have opinions on
smaller design details (random example: RESOLVE, CANCEL, and TIMEOUT
should be cases on an enum, not int constants) but see point 4: there's
just too much here to discuss in that level of detail, and there are
top-level decisions which should be our focus first.
To re-iterate: this is really exciting, and thanks for getting it to
this stage!
--
Rowan Tommins
[IMSoP]