Hello, *Jakub.* (It seems that simply clicking "Reply" does not work for the conference)
*> *I understand that's not ready for review yet but quickly You could say that the code is in a state of "architectural stability," so it can be reviewed and criticized. (Unfortunately, only the Windows build is currently working.) In the near future, I plan to start documenting the C-API, where I will describe the implementation details in depth, but feel free to ask any questions about this component. Link: https://github.com/EdmondDantes/php-src/tree/async/async > Is there some particular reason why this is not an extension? There are two reasons: one objective and one relatively subjective. *The objective reason* is that there are critical changes that simply cannot be done in an extension. This includes modifying the logic of functions like php_select/php_poll2. The relatively subjective reason is that it was extremely difficult for me to design the architecture within the constraints of an extension because, at the start of the project, I had no clear idea of how to implement it at all... :) Theoretically, the project could be split into two separate components: core modifications and an external EXT component. Now that I have a working codebase, it would be much easier to do. And yes, you've raised a very important point. In CGI applications, this component is likely to be of little use (although in some cases, it might still be beneficial even for CGI). So keeping the entire codebase in the PHP core is not a good approach. I’m sure many people will point that out :) And I agree. But for now, the component is built using configuration options in buildconf, which is sufficient as a starting point. If your question is whether core modifications could be avoided, the answer is no. The whole purpose of this project is to make PHP more suitable for LongRunning Apps. > and then libuv optional part - similar to pdo for example. That's exactly how it has already been implemented! *LibUV* is not tightly coupled to the code. Moreover, it can be replaced on the fly with any other implementation—for example, Swoole can serve as the backend for the reactor, or RUST TOKIO, or perhaps someone might want to create something else. In essence, the Reactor is just an API and can be defined via an extension. LibUV is included as an embedded piece of code that can be compiled directly with the project if a specific flag is set, but of course, it can also be provided as an extension. (The reason why LibUV is provided as the "default solution" is that it is written in C and is cross-platform. This is important for PHP. ) I plan to do the same with the Scheduler component in the future. Thanks for questions! пт, 14 февр. 2025 г. в 15:05, Jakub Zelenka <bu...@php.net>: