On Thu, Jun 30, 2022 at 5:57 PM Arnaud Le Blanc <arnaud...@gmail.com> wrote: > > Hi, > > On jeudi 30 juin 2022 16:18:44 CEST Robert Landers wrote: > > Are > > optimizations going to be applied to single-line arrow functions (I > > didn't see that in the RFC, but I admittedly didn't look that hard and > > I vaguely remember reading something about it in one of these > > threads)? If so, it will probably change some behaviors in existing > > applications if they were relying on it. Perhaps static analysis tools > > can detect this and inform the developer. > > It is not planned to change the behavior of arrow functions in this RFC. This > optimization is less important for arrow functions because they don't usually > assign variables.
Ah? Sorry, I had interpreted https://github.com/php/php-src/pull/8330/files#diff-85701127596aca0e597bd7961b5d59cdde4f6bb3e2a109a22be859ab7568b4d2R7318-R7320 as "capture the *minimal* set of variables for *both* arrow functions and short closures", but I was wrong? I don't see a test like this: ```php class C { public function __destruct() { echo 'destructed', PHP_EOL; } } $x = new C(); $fn = fn ($a, $b) => (($x = $a ** 2) + ($y = $b ** 2)) * ($x - $y); echo '- unsetting $x', PHP_EOL; unset($x); echo '- calling $fn', PHP_EOL; var_dump($fn(3, 2)); echo '- unsetting $fn', PHP_EOL; unset($fn); echo '- DONE.', PHP_EOL; ``` with current output (https://3v4l.org/ve3BL#v8.1.7): ``` - unsetting $x - calling $fn int(65) - unsetting $fn destructed - DONE. ``` where the optimization would make the "destructed" line move up to just after "- unsetting $x" -- Guilliam Xavier -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php