C - Glossaire
Les termes que jâemploie et que vous pouvez ne pas connaĂźtre si vous venez dâun autre Ă©cosystĂšme, dans lâordre alphabĂ©tique des termes anglais.
Active support (support actif). Les deux premiĂšres annĂ©es dâune branche de PHP, pendant lesquelles les bugs et les failles de sĂ©curitĂ© sont corrigĂ©s dans des versions de correction mensuelles. Suivent deux annĂ©es de support de sĂ©curitĂ©, avec des correctifs de sĂ©curitĂ© seulement. Voir Gouvernance et pĂ©rennitĂ©.
Composer. Le gestionnaire de dĂ©pendances de lâĂ©cosystĂšme PHP, comparable Ă npm, pip ou Maven. Il lit composer.json, rĂ©sout les versions, Ă©crit composer.lock et gĂ©nĂšre lâautoloader qui fait correspondre les noms de classes aux fichiers.
Fiber. Une coroutine Ă pile, ajoutĂ©e dans PHP 8.1 : une fonction qui peut se suspendre elle-mĂȘme et ĂȘtre reprise plus tard par qui la dĂ©tient. Le langage fournit le mĂ©canisme, rien de plus, et lâordonnancement revient aux bibliothĂšques. Voir Concurrence.
FrankenPHP. Un serveur dâapplication pour PHP, Ă©crit en Go au-dessus du serveur web Caddy. Il exĂ©cute PHP soit dans le mode classique dâun processus par requĂȘte, soit dans un mode worker qui garde lâapplication dĂ©marrĂ©e entre les requĂȘtes. Voir Le runtime.
Hack et HHVM. Hack est un langage qui a divergĂ© de PHP chez Facebook en 2014, et HHVM est sa machine virtuelle. HHVM a abandonnĂ© la prise en charge de PHP lui-mĂȘme en 2019. Les organisations qui font tourner Hack ne font pas tourner PHP, et je ne les compte pas comme utilisatrices de PHP.
JIT. Le compilateur Ă la volĂ©e livrĂ© Ă lâintĂ©rieur dâOPcache depuis PHP 8.0, qui compile les chemins de code chauds en code machine. Il profite bien plus au code limitĂ© par le CPU quâaux requĂȘtes web ordinaires, et je le rappelle partout oĂč un chiffre JIT apparaĂźt.
NTS et ZTS. Les builds non-thread-safe et Zend-thread-safe de lâinterprĂ©teur. Le build standard est NTS, parce que le modĂšle par processus nâa jamais eu besoin de threads. Les builds ZTS existent pour lâusage embarquĂ© et pour lâextension parallel.
OPcache. Lâextension qui garde la forme compilĂ©e de chaque fichier PHP en mĂ©moire partagĂ©e, si bien quâun fichier est analysĂ© et compilĂ© une fois plutĂŽt quâĂ chaque requĂȘte. Elle est standard en production depuis PHP 5.5.
p50, p95, p99. Les centiles dâune distribution de latence : le temps de rĂ©ponse sous lequel 50, 95 ou 99 % des requĂȘtes se terminent. Un benchmark qui ne rapporte que la moyenne cache la queue de distribution, et câest pourquoi je prĂ©fĂšre les sources qui publient des centiles.
Packagist. Le registre public de paquets que Composer utilise par défaut, comparable à npmjs.com ou PyPI.
PER Coding Style. Le standard de style de code maintenu par le PHP-FIG, successeur de PSR-12. Des outils tels que PHP-CS-Fixer et PHP_CodeSniffer le font respecter.
PHP-FIG. Le PHP Framework Interoperability Group, qui publie les standards PSR pour que les bibliothĂšques dâauteurs diffĂ©rents sâemboĂźtent.
PHP-FPM. Le FastCGI Process Manager, la façon standard dâexĂ©cuter PHP derriĂšre un serveur web. Il entretient un pool de processus worker, chacun traitant une requĂȘte Ă la fois.
Preloading (prĂ©chargement). Une fonctionnalitĂ© dâOPcache (PHP 7.4) qui compile une liste de fichiers une fois au dĂ©marrage et les garde liĂ©s en mĂ©moire, si bien quâaucune classe nâa besoin dâautoloading pendant une requĂȘte.
PSR. PHP Standards Recommendation, un standard dâinteropĂ©rabilitĂ© numĂ©rotĂ© publiĂ© par le PHP-FIG : PSR-4 pour lâautoloading, PSR-3 pour la journalisation, PSR-7 pour les messages HTTP, et ainsi de suite.
Rector. Un outil qui réécrit le code PHP automatiquement : il fait monter la syntaxe dâune version Ă la suivante, applique des refactorings et supprime les appels dĂ©prĂ©ciĂ©s. Les Ă©quipes sâen servent pour les montĂ©es de version Ă grande Ă©chelle.
RFC. Request for Comments, le document par lequel tout changement du langage est proposé, discuté sur la liste de diffusion internals et soumis au vote. Un changement du langage requiert une majorité des deux tiers. Voir Gouvernance et pérennité.
RoadRunner. Un serveur dâapplication pour PHP Ă©crit en Go. Il garde des processus worker en vie et leur transmet les requĂȘtes par un protocole, si bien que lâapplication est dĂ©marrĂ©e une fois plutĂŽt quâĂ chaque requĂȘte.
Shared-nothing. Le modĂšle dâexĂ©cution dans lequel chaque requĂȘte dĂ©marre avec une mĂ©moire vierge, sâexĂ©cute, rĂ©pond et est jetĂ©e, sans rien partager avec la requĂȘte prĂ©cĂ©dente ni la suivante. La plupart des propriĂ©tĂ©s opĂ©rationnelles de PHP en dĂ©coulent. Voir Le runtime.
Static analysis (analyse statique). Lire le code sans lâexĂ©cuter, pour y trouver les erreurs de type et dâautres dĂ©fauts. PHPStan et Psalm sont les deux analyseurs de lâĂ©cosystĂšme PHP, et tous deux comprennent une syntaxe de types en docblock plus riche que celle du langage lui-mĂȘme.
Swoole et OpenSwoole. Une extension en C et son fork. Chacune donne Ă PHP une boucle dâĂ©vĂ©nements, des coroutines et un serveur HTTP intĂ©grĂ©, pour les charges de travail qui ont besoin de nombreuses connexions concurrentes dans un seul processus.
TechEmpower Framework Benchmarks. Une suite de benchmarks publique, exĂ©cutĂ©e en continu, qui compare des centaines de frameworks web de tous langages sur un jeu de tests fixe (sĂ©rialisation JSON, requĂȘtes de base de donnĂ©es simples et multiples, rendu HTML « fortunes », plaintext). Je la cite avec son numĂ©ro de round, son matĂ©riel et le test, et je dis ce que chaque test mesure.
W3Techs. Une sociĂ©tĂ© dâenquĂȘtes sur le web qui publie lâusage des technologies cĂŽtĂ© serveur sur un Ă©chantillon de plus de vingt millions de sites. Ses chiffres ne comptent que les sites dont le langage peut ĂȘtre dĂ©tectĂ©, ce qui les biaise dâune maniĂšre que je prĂ©cise quand je les utilise.
Worker mode (mode worker). Une façon dâexĂ©cuter PHP dans laquelle lâapplication est dĂ©marrĂ©e une fois et gardĂ©e en mĂ©moire, chaque processus worker traitant de nombreuses requĂȘtes Ă la suite. FrankenPHP et RoadRunner le proposent, entre autres. Il supprime le coĂ»t de dĂ©marrage par requĂȘte, au prix de la garantie shared-nothing.