Hi all, This is my first time writing to the internals mailing list, so please be patient with me. I would like to get feedback from you on the following idea. The idea might seem crazy at the first glance, but the longer I thought of it, the cooler I found the idea ;-). I would like to share the idea with you and receive feedback. I would currently not know how to implement it in the PHP lang. The only way I would be able to do this right now with my skill set would be to write a transpiler (which is not ideal), which compiles it to e.g. ReactPHP code.
One of the main arguments against PHP is that PHP has a completely empty state at the beginning of every request. This implies that on every request all of the assets (e.g. configs) needs to be loaded. Some applications load it from the database, which makes it even worse. This causes slower response times than you can achieve with other programming languages. One way to improve this is by using libraries like ReactPHP for adding asynchronicity to PHP. This would enable one to load assets concurrently, but migrating existing code bases to asynchronous code would be a nightmare, so no one does it. Additionally, asynchronous code is harder to read and write. My suggestion is to add the iasync keyword to PHP. By using the iasync keyword, functions or code blocks could be marked as "eventually async". 'eventually async', because it should be possible to disable the functionality with an ini setting (especially for debugging purposes). The keyword could be used on a method level: public static iasync function doSomething() { ... } Alternatively it could be used for wrapping a code block: iasync { // contained code } All blocking IO operations in iasync context would then not return the actual value, but instead a promise. Those promises are automatically awaited in the following cases: - The variables value is accessed - The iasync context is left - A non-iasync code block is invoked Example (variable access): iasync { $fileContent = file_get_contents('path'); // returns a promise $arr = [$fileContent]; // not awaited, because the actual value is not relevant right now echo($fileContent); // now the code would block, because the value is needed } Example (context left): iasync { $fileContent = file_get_contents('path'); // returns a promise } // leaving context would block, until value available echo $fileContent; ####### Promises ####### The promises are not like promises of other languages. They are implicit and programmers cannot do anything with it. ################################ What is the advantage of this approach? ################################ Many applications could profit by iasync because it's so simple to use. Application performance could be greatly improved. Thank you! Best regards mschop -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php