Re: PHP True Async RFC

From: Date: Thu, 01 Jan 1970 00:00:00 +0000
Subject: Re: PHP True Async RFC
References: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message

> Offering this tool to userland is a major footgun that will either backfire spectacularly
> (breaking existing and new async libraries by endlessly awaiting upon background fibers when exiting
> an async {} block haphazardly used by a newbie, or even worse force library developers to reduce
> concurrency, killing async PHP just because users can use async {} blocks), or simply not get used
> at all (because the main SAPI usecase listed explicitly does NOT need purity).

Some extra points:

1) The naming of "async {}" is also very misleading, as it does the opposite of making
things async, if anything it should be called "wait_all {}"

2) Again, what are waiting for? A fiber spawned by a library we called 10 levels deep in the stack,
that exits only when the container object is destroyed (outside of the wait_all block, thus causing
an endless hang)? No one should care or be able to control what must remain an internal
implementation detail of invoked libraries, adding a wait_all block will only break stuff.

3) If we did want to wait for all fibers spawned by a method call, nothing is preventing the caller
from returning an array of futures for spawned fibers that we can await.

The wait_all block is EXPLICITLY DESIGNED to meddle with the internals of async libraries, because
the only feature it offers (that isn't already offered by awaitAll) is one that controls
internal implementation details of libraries invoked within the block.

Libraries can full well handle cleanup of fibers in __destruct by themselves, without a wait_all
block forcing them to reduce concurrency whenever the caller pleases.

It is, imo, a MAJOR FOOTGUN, and should not be even considered for implementation.

Regards,
Daniil Gentili.


Thread (110 messages)

« previous php.internals (#126666) next »