En ingénierie logicielle, la vitesse de la boucle de feedback est critique. Si un développeur doit attendre 10 secondes pour savoir qu'il a oublié un point-virgule, il perd son productivité. Si la CI prend 4 minutes pour valider le style, le déploiement est ralenti.
Pendant 10 ans, nous avons accepté la lenteur d'ESLint et de Prettier parce que "c'était le standard". Mais ces outils tournent sur Node.js (JavaScript), un langage interprété, single-threaded, mal adapté aux tâches intensives de parsing et d'analyse de code.
Voici Biome. Et c'est un changement de paradigme.
La physique du problème (Rust vs V8)
ESLint doit :
- Démarrer le runtime Node.js (lourd).
- Charger des centaines de fichiers JS.
- Parser votre code en AST.
- Parcourir cet AST avec du JavaScript.
Biome est écrit en Rust.
- C'est un binaire natif, compilé, optimisé au niveau machine.
- Il utilise une architecture parallèle (multi-threading) que Node.js ne peut pas égaler.
- Il construit l'AST une seule fois pour tout faire (Linter, Formatter, Import Sorter).
Ce n'est pas une optimisation. C'est un changement d'echelle.
L'architecture "Tout-en-un"
Le second problème de l'écosystème JS actuel est la fragmentation.
Pour avoir un linting correct, il faut : eslint, prettier, eslint-config-prettier, eslint-plugin-import, eslint-plugin-react...
C'est une maintenance constante pour éviter les conflits de versions.
Biome adopte l'approche inverse : Une seule Toolchain. Le binaire contient tout. La configuration tient en dix lignes dans biome.json :
{
"linter": { "enabled": true, "rules": { "recommended": true } },
"formatter": { "enabled": true, "indentStyle": "space" },
"organizeImports": { "enabled": true }
}
Plus de débat. Plus de conflit. Ça marche !
Intégration PHP (sans Node.js)
L'argument final pour un développeur Symfony est l'indépendance vis-à-vis de Node. Nous ne voulons pas installer npm et gérer un package.json juste pour du linting.
Grâce au bundle kocal/biome-js-bundle, Biome s'installe via Composer :
composer require --dev kocal/biome-js-bundle
Cela télécharge le binaire Biome standalone. Vous pouvez désormais vérifier vos assets JS/TS depuis votre pipeline, sans aucune dépendance Node.js sur votre serveur ou votre CI.
Le mot de la fin
L'adoption de Biome n'est pas une question de mode. C'est une question d'efficience. En informatique, quand un outil fait le même travail 100 fois plus vite en consommant 10 fois moins de mémoire, il finit toujours par remplacer l'ancien standard. ESLint a été un excellent serviteur. Mais à l'ère du Rust, il est devenu un goulot d'étranglement.