Présentation du projet Bez

Bez est un référentiel open‑source hébergé sur tangled.org qui vise à créer automatiquement un moteur de navigateur à partir de spécifications Web et de suites de tests. Le dépôt compte 1 200 commits, 6 étoiles et 21 branches, ce qui indique une activité soutenue malgré une visibilité encore limitée. Le code est majoritairement écrit en Rust (75,9 %), complété par du Shell (12,7 %), du JavaScript (7,8 %) et de petites portions en Python, HTML, CSS et d’autres langages.

Architecture et processus de génération

Bez organise son travail autour de plusieurs tracks (ex. scripted-e2e, spec‑transforms2d, spec‑floats‑bfc) qui décrivent des pipelines de transformation des spécifications en code exécutable. Chaque track se compose d’une série d’étapes : extraction du texte de la spécification, conversion en un modèle intermédiaire, génération de code Rust et compilation du binaire du moteur. Le fichier tracks.json répertorie plus d’une vingtaine de ces pipelines, illustrant la modularité du système.

Les spécifications elles‑mêmes sont stockées sous forme de dossiers spec/ (par ex. spec/viewport‑units, spec/floats‑bfc) contenant des fichiers de test et des artefacts d’oracle. Un exemple de test automatisé utilise l’API getComputedStyle :

getComputedStyle(s).display !== 'none').textContent

Ce fragment montre comment Bez valide le rendu CSS en comparant le style calculé à la valeur attendue. Les résultats d’oracle sont conservés dans le répertoire oracle/, permettant une comparaison binaire entre le moteur généré et le comportement attendu.

Analyse des performances et limites

Le choix de Rust comme langue principale apporte des garanties de sécurité mémoire et de parallélisme, essentielles pour un moteur de rendu où les accès concurrents aux structures de données sont fréquents. Cependant, le dépôt indique que les tests de performance (ex. bench) sont exécutés seulement toutes les quelques heures, ce qui limite la visibilité en temps réel sur les coûts CPU et mémoire du moteur généré. De plus, le nombre d’étoiles (6) et le faible nombre de contributeurs (6 forks) suggèrent une communauté restreinte, ce qui peut ralentir la découverte de bugs critiques.

Les tracks de gestion de conflits (job‑concurrency) montrent que Bez doit orchestrer plusieurs jobs de génération simultanés, avec des limites explicites : deux slots Dagu par lane, un nombre maximal d’écrivains par job, et un seul « landing » à la fois. Ces contraintes sont documentées dans les commits récents (ex. 51739678), mais aucune métrique publique n’est fournie sur le taux de réussite des jobs ni sur le temps moyen de compilation.

En résumé, Bez propose une approche novatrice de génération de moteurs de navigateur en s’appuyant sur une base de spécifications formelles et un pipeline automatisé. La forte proportion de Rust garantit une base solide, mais l’absence de données de performance détaillées et la petite taille de la communauté constituent des points d’attention pour les adopteurs potentiels.