Bonjour, je m'appelle Nikolai Krapivny, je dirige le département de développement côté serveur chez Badoo. Dans Badoo, PHP est l'un des principaux langages; la majeure partie de la logique métier de notre système y est écrite. Par conséquent, nous suivons l'actualité du monde de PHP, participons activement au développement du langage et essayons de développer la communauté autour de PHP .
Aujourd'hui, je voudrais partager une traduction d'une lettre de Zeev Suraski , l'un des fondateurs de Zend Technologies, qui décrit le développement futur de PHP et met en lumière ce que nous devrions attendre de PHP 8.J'allais écrire à ce sujet un peu plus tard, mais comme ils ont soulevé le sujet de PHP 8, il semble qu'il est temps d'entamer une discussion.
Je souligne: le but de cette lettre n'est pas de discuter en détail tous les changements que j'ai mentionnés, mais plutôt de consolider nos plans: allons-nous nous concentrer sur PHP 8 après 7.3, qui est basé sur certains de nos projets de recherche et développements expérimentaux.
Il y a un certain nombre de domaines pour le développement desquels, il me semble, il est nécessaire de diriger les ressources dans la prochaine version majeure.
Jit
La plupart d'entre vous savent probablement que nous avons consacré beaucoup d'efforts à l'implémentation de JIT en plus de l'infrastructure PHP 7. Il y a de bonnes et de mauvaises nouvelles. Bon: comme dans le cas des expériences avec JIT, que nous avons menées en 2014, nous avons obtenu des résultats de référence impressionnants avec des charges CPU intensives. La mauvaise nouvelle est que le JIT dans nos tests ne donne pas un gros gain sur les charges Web typiques.
En d'autres termes, contrairement à la situation de 2014, nous pensons que JIT n'améliorera pas les performances lors du traitement des charges de travail Web typiques, car l'exécution de code PHP n'est plus un goulot d'étranglement.
Mais je pense toujours que nous devons inclure JIT dans la prochaine version majeure de PHP. Pour au moins deux raisons:
- Cela permettra à PHP de gérer de nouveaux types de charges de travail (pas web).
- PHP , (, PHP-
unserialize()
C).
, , - , -, (
. Badoo: . CPU , CPU ).
, , , JIT OPcache ( ) , .
, , PHP 7.0 JIT-:
https://www.youtube.com/watch?v=dWH65pmnsrI(long-running), , . , , Node.js , . . , PHP , , ReactPHP Swoole.
, - PHP . , - , , Swoole. , , /, . , , . , libuv, , , PHP-.
(Foreign Function Interface)
PHP , ++, . , , , , , . PHP «» , ; — «» , . (
.: ) . TensorFlow PHP, , , PHP:
98%. , JIT PHP , . , ( JIT), , , , .
, JIT PHP 8, . «» PHP, ( FFI). JIT PHP , . , -, ( , ) , .
(.: : « — PHP- PHP; , , request- include/require. , PHP». .), :
- . - , , PHP 8.
- . , , RFC , - .
— , ( — , JIT), PHP 8 PHP 7.3 PHP 7.x. PHP 8 , , , 2—2,5 ( / 2020-). PHP 7.4 - 2019-, , (deprecate) , , PHP 7.3, PHP 8.
PHP 8 7.3, . , , RFC «PHP 8 feature- PHP», 7.4; ( ) . , - ( ), // .
, , «» . , CPU -.
PHP 8 PHP ? .