Symfony 6.0 : PHP 8.1 uniquement, et le système de sécurité reconstruit

Symfony 6.0 est sorti le 29 novembre 2021. La caractéristique définissante : PHP 8.1 est le minimum. Pas supporté, requis. L’équipe de releases a attendu que PHP 8.1 sorte, puis a coupé Symfony 6.0 le lendemain. Ce n’est pas juste un bump de version. C’est un engagement à construire contre le langage actuel plutôt que le plancher historique. Le système de sécurité, enfin reconstruit Le composant de sécurité Symfony a deux systèmes. L’ancien (AnonymousToken, GuardAuthenticatorInterface, un enchevêtrement d’interfaces qui vous faisaient implémenter des méthodes dont vous n’aviez pas besoin) avait été déprécié. 6.0 le supprime entièrement. ...

12 janvier 2022 · 6 min · Guillaume Delré

Symfony 5.4 LTS : support des enums, alias de routes, et le pont vers PHP 8.1

Symfony 5.4 est sorti le 29 novembre 2021, le même jour que Symfony 6.0 et un jour après PHP 8.1. Pas un hasard. 5.4 est la version LTS, et son rôle est de porter autant que possible le jeu de fonctionnalités de 6.0 tout en conservant la compatibilité 5.x. C’est aussi la première version de Symfony qui comprend réellement les fonctionnalités de PHP 8.1. Support des enums PHP 8.1 a introduit les enums natifs. Symfony 5.4 les embrasse immédiatement : ...

10 janvier 2022 · 8 min · Guillaume Delré

PHP 8.1 : enums, fibers, et un système de types qui grandit

PHP 8.1 est sorti le 25 novembre. Il fait suite à la refonte massive de 8.0 avec quelque chose de différent : moins de fonctionnalités, mais chacune vraiment réfléchie plutôt que greffée à la va-vite. Les enums C’est la nouveauté qui change les bases de code dès la mise à jour. Avant 8.1, les énumérations en PHP se résumaient à des constantes de classe, des chaînes ou des entiers sans rien pour les faire respecter : ...

9 janvier 2022 · 6 min · Guillaume Delré

PHP 8.0 : match, arguments nommés, attributs et JIT

PHP 8.0 est sorti le 26 novembre. Je le fais tourner depuis six semaines sur un projet perso et un nouveau service au boulot. C’est la version PHP la plus significative depuis 7.0, et à certains égards plus impactante, parce que les changements se renforcent mutuellement de façon utile. JIT Le compilateur Just-In-Time était l’annonce principale. La réalité en production est plus nuancée : pour les applications web typiques (requêtes en base, appels HTTP, rendu de templates) les gains sont modestes, parce que ces workloads sont limités par les I/O, pas par le calcul. Là où le JIT brille vraiment, c’est le code intensif en CPU : manipulation d’images, transformation de données, calcul mathématique. ...

10 janvier 2021 · 9 min · Guillaume Delré

Élagage des révisions avec des window functions et des logarithmes, quand DQL ne suffisait plus

Chaque mise à jour de contenu sur la plateforme crée une révision. C’est délibéré : les éditeurs ont besoin d’un historique sur lequel ils peuvent revenir, et la plateforme a besoin d’une piste d’audit. Ce que personne n’avait anticipé, c’était le rythme. Certains articles passent par quarante sauvegardes en un seul après-midi. Une pièce à fort trafic accumule des centaines de révisions sur sa durée de vie. Après quelques mois, la table de révisions avait plusieurs millions de lignes. ...

27 septembre 2020 · 8 min · Guillaume Delré

PHP 7.4 : les propriétés typées et les arrow functions qu'on attendait

PHP 7.4 est sorti le 28 novembre. C’est la dernière version 7.x avant PHP 8.0, et ça se sent. Les fonctionnalités sont suffisamment substantielles pour tenir debout seules, mais elles ressemblent aussi à des fondations pour ce qui arrive. Les propriétés typées C’est la grande nouveauté. Depuis PHP 7.0, on pouvait typer les paramètres de fonctions et les valeurs de retour. Mais les propriétés de classe ? Toujours non typées : ...

12 janvier 2020 · 7 min · Guillaume Delré

Symfony 5.0 : String, Notifier et le coffre-fort de secrets

Symfony 5.0 est sorti le 21 novembre 2019, le même jour que la 4.4. Là où la 4.4 mise sur la stabilité et une longue fenêtre de support, la 5.0 ouvre un nouveau chapitre : plus de code déprécié, PHP 7.2.5 minimum, et quelques nouveaux composants qui comblent enfin des lacunes accumulées depuis des années. Le composant String La gestion des chaînes en PHP est notoirement éparpillée : des fonctions avec préfixe par-ci (str_), avec suffixe par-là (strpos), un support d’encodage incohérent, et rien d’orienté objet en vue. Le composant String enveloppe tout ça dans une API fluide orientée objet avec support Unicode : ...

6 janvier 2020 · 6 min · Guillaume Delré

Symfony 4.4 LTS : HttpClient, Mailer, Messenger et les fonctionnalités qui ont tenu bon

Symfony 4.4 et 5.0 sont tous les deux sortis le 21 novembre 2019. La 4.4 est la LTS : même ensemble de fonctionnalités que la 5.0, couche de dépréciation intégrée, et une longue fenêtre de support pour les équipes qui ne peuvent pas suivre chaque release. La fonctionnalité qui mérite d’être mise en avant est arrivée en 4.2 et a mûri tout au long des 4.3 et 4.4 : HttpClient. ...

4 janvier 2020 · 8 min · Guillaume Delré

D'un capteur à 10€ à un tableau de bord Home Assistant avec Raspberry Pi et MQTT

La question était simple : quelle est la température et l’humidité dans mon bureau à domicile en ce moment ? Pas la météo dehors, pas une moyenne de ville — les conditions réelles dans la pièce où je passe la majeure partie de ma journée. Ouvrir une application météo pour ça semblait mal. Un Raspberry Pi tournait déjà sur l’étagère. Un capteur BME280 coûte environ 10€. Ça aurait dû être un projet de week-end. ...

17 novembre 2019 · 4 min · Guillaume Delré

PHP 7.3 : des petites victoires qui s'accumulent

PHP 7.3 est sorti le 6 décembre. Pas de fonctionnalité phare. C’est une collection d’améliorations du quotidien qui, individuellement, semblent mineures, mais qui ensemble rendent le travail de tous les jours nettement moins agaçant. Heredoc et nowdoc flexibles Jusqu’à 7.3, le marqueur de fermeture d’un heredoc devait être en colonne zéro. Ce qui forçait une désindentation maladroite dans du code par ailleurs bien formaté : // avant $html = <<<HTML <div> <p>Hello</p> </div> HTML; // devait être en colonne 0, moche // après $html = <<<HTML <div> <p>Hello</p> </div> HTML; Le marqueur de fermeture peut désormais être indenté pour correspondre au code environnant, et cette indentation est retirée du contenu. Ça paraît cosmétique. Ce n’est pas le cas. Les heredocs dans des contextes imbriqués (méthodes de classe, conditions) étaient visuellement dissonants avant. Maintenant ils s’intègrent. ...

20 janvier 2019 · 6 min · Guillaume Delré