Hi, 

To see to be posting a reply to nearly every other email on this thread. I'd 
recommend you have another read through our mailing list rules: 
<https://github.com/php/php-src/blob/master/docs/mailinglist-rules.md>

cheers 
Derick 

On 8 March 2025 22:28:58 GMT, Daniil Gentili <daniil.gent...@gmail.com> wrote:
>>> To make an analogy, it's like saying PHP should have an io {} block, that 
>>> makes sure all file resources opened within (even internally, 10 stack 
>>> levels deep into 3 libraries, whose instances are all used after the io {} 
>>> block) are closed when exiting.
>>
>> Traditional PHP offers exactly this: the SAPI lifecycle tracks all file 
>> handles opened within a request, and closes them cleanly before reusing the 
>> thread or process for another request. Essentially what I'm proposing is a 
>> way to implement the same isolation in userland, by marking a checkpoint in 
>> the code.
>
>Exposing this in userland offers an extremely dangerous footgun that will 
>severely limit concurrency.
>
>> As I've said repeatedly, it doesn't necessarily need to be a mandatory 
>> restriction, it can be a feature to help users write code without having to 
>> worry about *accidentally* leaving a background fiber running.
>
>Even its use is optional, its presence in the language could lead library 
>developers to reduce concurrency in order to allow calls from async blocks, 
>(i.e. don't spawn any background fiber in a method call because it might be 
>called from an async {} block) which is what I meant by crippling async PHP.
>
>Libraries can and should handle cleanup of running fibers by themselves, on 
>their own terms, without externally imposed limitations.
>
>It makes absolutely no sense, especially for a SAPI, to force all background 
>fibers to stop after a request is finished.
>
>It would force users to stop and restart all running fibers on each request, 
>which is precisely the main argument for the use of worker mode: reducing 
>overhead by keeping caches primed, sockets open and background loops running.
>
>PHP itself explicitly offers an escape hatch around the "io {} block" of 
>current SAPIs, in the form of persistent resources (and again, this is all for 
>performance reasons).
>
>Even ignoring performance considerations, as I said many times, 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).
>
>Regards,
>Daniil Gentili.

Reply via email to