Servo 0.5.0 est disponible et rassemble les 488 commits de juillet. Cette version se lit comme un moteur qui passe de la démonstration à l'outil. Le canevas 2D est maintenant multithreadé, ce que le projet mesure à 55 pour cent d'images par seconde en plus et 42 pour cent de consommation en moins par image, au maximum. Le rendu de texte est jusqu'à dix fois plus rapide quand le même texte est dessiné à plusieurs tailles de police. Il existe désormais des binaires Linux aarch64 à côté du x86_64, servoshell pour Android descend d'Android 13 à Android 10, et la page d'accueil de DuckDuckGo s'affiche enfin. Si vous suivez Servo comme moteur embarquable plutôt que comme navigateur, c'est la version à regarder.
The short answer
Servo 0.5.0 rassemble les 488 commits arrivés en juillet. La nouveauté principale est un canevas 2D multithreadé valant jusqu'à 55 pour cent d'images par seconde en plus et jusqu'à 42 pour cent de consommation en moins par image, avec un rendu de texte jusqu'à dix fois plus rapide quand la même chaîne est dessinée à plusieurs tailles. La couverture s'élargit avec des binaires Linux aarch64 et la prise en charge d'Android 10 dans servoshell, contre Android 13 auparavant. La compatibilité avec les sites réels a assez progressé pour que la page d'accueil de DuckDuckGo s'affiche et que l'essentiel de Gumroad passe de rien du tout à presque parfait. Pour les intégrateurs, une rupture : webxr_registry() devient un enregistrement paresseux qui a divisé par deux le démarrage de servoshell.
On ne juge pas un jeune moteur de rendu à ses scores de test. On le juge à ce qui casse quand on le pointe vers un vrai site, et à la nature de la casse : un défaut isolé, ou un sous-système entier qui manque. Servo 0.5.0, qui rassemble les 488 commits arrivés en juillet, est la version où cette réponse s'améliore nettement.
De vrais sites, qui échouent sur des défauts trouvables
Le canard de la page d'accueil de DuckDuckGo ne s'affichait pas dans Servo 0.4.0. En 0.5.0 il s'affiche, parce que quelqu'un a trouvé et corrigé un défaut de préchargement touchant les images SVG. Une seule demande d'intégration sépare une page cassée d'une page qui fonctionne.
Gumroad illustre encore mieux le propos. En 0.4.0, l'essentiel de ce site ne s'affichait pas du tout. En 0.5.0, des pages comme la page Discover et les pages produit s'affichent presque parfaitement. La page d'accueil reste l'exception. Passer de rien à presque tout en un mois, c'est ce qui arrive quand la mise en page et la peinture sous-jacentes sont globalement justes et que les manques sont des défauts individuels et précis.
Cette distinction compte si vous évaluez Servo pour quoi que ce soit. Un moteur qui échoue parce qu'il n'a pas de flexbox est à des années de vous. Un moteur qui échoue à cause du chemin de préchargement d'un type d'image est à un ticket de vous.
Le canevas a gagné des fils, et c'est le chiffre à retenir
Le rendu du canevas 2D est maintenant multithreadé. Le projet le mesure à 55 pour cent d'images par seconde en plus et 42 pour cent de consommation en moins par image, au maximum, une modification distincte réduisant nettement l'usage mémoire par ailleurs.
Voir la fréquence d'images et la consommation évoluer dans le même sens est le signe qu'il s'agit de vrai parallélisme et non d'un fil principal plus occupé. Si vous embarquez une vue web pour dessiner des graphiques, des cartes, des visualisations ou toute autre surface gourmande en canevas, c'est le changement de cette version le plus susceptible de décider si la chose reste agréable sur un appareil modeste.
Le chiffre du rendu de texte demande une nuance. Le texte est jusqu'à dix fois plus rapide dans le cas d'un même texte rendu à des valeurs de font-size différentes, ce qui est arrivé avec la mise à jour vers Stylo 2026-07-01. C'est plus étroit qu'un 10x général, mais ce cas est extrêmement courant en pratique : titres, échelles typographiques adaptatives, tout ce qui répète un libellé à plusieurs tailles.
Deux gains plus modestes complètent le tableau. Les tests de mise en page flex progressent de 3 pour cent au maximum, et une modification de getElementsByClassName() rend certains sites réels 1 pour cent plus rapides. À côté figure une longue liste de réductions de mémoire, d'allocations et d'étapes d'enracinement du ramasse-miettes, plus la correction d'une régression de corruption mémoire et d'une série de plantages liés aux emprunts dynamiques.
Deux plateformes de plus, et un plancher Android abaissé
Servo publie désormais des binaires pour Linux aarch64 à côté du x86_64. Si vous compiliez pour arm64 Linux à la main, cette étape disparaît.
Sur Android, servoshell abaisse son exigence d'Android 13 à Android 10. Le projet chiffre ce que cela signifie : environ 68 pour cent des appareils avec l'ancien plancher contre environ 91 pour cent avec le nouveau. Pour qui évalue Servo comme vue embarquée sur du matériel Android, c'est la différence entre un tiers du parc hors de portée et presque aucun.
Sous Windows, servoshell se tient mieux quand on le lance depuis une console : l'invite de commandes attend maintenant qu'il se termine au lieu de rendre la main tout de suite.
Pour les intégrateurs : une rupture, une meilleure documentation
L'API d'intégration a reçu de l'attention documentaire ce cycle, à la fois pour la caisse servo elle-même et pour WebViewDelegate, le trait que vous implémentez quand vous hébergez une vue web.
Une rupture est à noter. ServoBuilder::webxr_registry() disparaît. Utilisez Servo::register_webxr_registry à la place. Le remplacement est une conception paresseuse, et le bénéfice est concret : il a permis à servoshell de diviser par deux son propre temps de démarrage. Si vous construisez Servo par programme, c'est une petite modification avec un vrai gain à la clé.
La couche de traduction graphique a aussi avancé. ANGLE passe d'une version basée sur Firefox 115.x ESR à une version basée sur Firefox 140.12.0 ESR, ce qui comble un large écart de fraîcheur sur cette dépendance. Notre regard précédent sur Servo 0.4 et sa poussée de compatibilité avec les sites réels montre où en était le projet une version plus tôt, ce qui rend l'écart plus lisible.
De la nouvelle surface sur la plateforme web
Livré et actif par défaut : Cache-Control: stale-while-revalidate, text-decoration-thickness, ainsi que des implémentations en grande partie complètes de box-decoration-break, @font-feature-values, font-language-override et font-variant-alternates.
Les ajouts DOM mêlent le moderne et l'archéologique. SubtleCrypto gagne les algorithmes Ed448, X448 et KMAC. document.execCommand() gagne insertHorizontalRule, insertImage, insertText et forwardDelete, ce qui n'est pas là où l'on attend l'effort, mais les éditeurs de texte enrichi antérieurs aux solutions modernes en dépendent encore. Arrivent aussi une interface AnimationEffect, une propriété effect sur Animation, getKeyframes() et setKeyframes() sur KeyframeEffect, un Touch constructible, une propriété duplex sur Request, une propriété id sur LargestContentfulPaint, et une CSSFontFeatureValuesRule en lecture seule.
Les sélections de texte du DOM sont maintenant visibles, ce qui paraît anodin jusqu'à ce que vous essayiez d'utiliser un navigateur où sélectionner du texte n'affiche rien. La sélection interactive reste à venir.
Derrière les préférences
La mise à jour vers Stylo 2026-07-01 a apporté des changements sur les fonctions CSS. alpha() et progress() sont maintenant prises en charge sous leurs préférences respectives. Les valeurs closest-corner et farthest-corner de ellipse() quittent le statut stable parce que la spécification est incertaine, et restent disponibles à titre expérimental. attr() est plus conforme.
Le contenu WebGPU peut utiliser GPUExternalTexture et importExternalTexture() sous dom_webgpu_enabled. IndexedDB gagne la propriété name sur IDBIndex. document.fonts inclut désormais une FontFace pour chaque règle @font-face valide sous dom_fontface_enabled. Tout cela est actif dans le mode expérimental de servoshell.
WebVTT est l'inachevé intéressant. Il est actif par défaut sans préférence, et Servo sait maintenant récupérer chaque <track src>, analyser le WebVTT qu'il y trouve et exposer les repères par la propriété track de HTMLTrackElement. Rien ne s'affiche encore à l'écran. La tuyauterie existe, la peinture non, ce qui est un ordre de construction raisonnable.
Le travail d'accessibilité de juillet est allé vers la performance plutôt que vers la couverture. L'arbre d'accessibilité accepte maintenant des mises à jour incrémentales, demande moins de consultations de tables de hachage et de parcours d'arbre, et permet des mutations du DOM plus rapides, le tout sous accessibility_enabled. Un arbre d'accessibilité qui se reconstruit intégralement à chaque mutation, c'est typiquement ce qui rend une fonction techniquement présente et pratiquement inutilisable. C'est donc le bon travail.
L'API File and Directory Entries démarre, avec webkitGetAsEntry() sur DataTransferItem et un support minimal de FileSystemEntry, FileSystemDirectoryEntry et FileSystemFileEntry sous dom_entries_api_enabled. L'objectif est de téléverser des répertoires entiers par un champ de fichier ou par glisser-déposer.
Le projet derrière tout cela
Dix personnes ont déposé leur premier correctif Servo en juillet. Les dons récurrents atteignent 7 824 dollars américains par mois, en hausse de 1,8 pour cent sur juin, ce qui couvre selon le projet les serveurs d'intégration continue et de mesure, un stage Outreachy, et le travail de mainteneur destiné à faciliter les contributions extérieures. Trente-cinq comptes GitHub soutiennent Servo via thanks.dev.
Ce sont de petits chiffres à côté de n'importe quel moteur de rendu financé, et cela mérite d'être gardé en tête à la lecture des notes de version. Un canevas multithreadé et un navigateur qui affiche Gumroad, produits à cette échelle, cela fait un bon mois.
Sources et pour aller plus loin
- July in Servo: more platforms, faster canvas, web fonts in SVG, and more, blog Servo, 31 août 2026
- Version Servo v0.5.0, GitHub
- Servo 0.5 Released: DuckDuckGo Properly Rendering, Up To 10x Faster Text Rendering, Phoronix, 31 août 2026
- Site du projet Servo
Questions fréquentes
Qu'est-ce qui est réellement devenu plus rapide dans Servo 0.5 ?
Trois choses mesurées. Le canevas 2D est maintenant rendu sur plusieurs fils d'exécution, ce que le projet chiffre à 55 pour cent d'images par seconde en plus et 42 pour cent de consommation en moins par image, au maximum, avec en prime une nette réduction de la mémoire. Le rendu de texte est jusqu'à dix fois plus rapide dans le cas précis d'un même texte dessiné à des valeurs de font-size différentes, ce qui vient de la mise à jour de Stylo. Les tests de mise en page flex progressent de 3 pour cent au maximum, et une modification de getElementsByClassName() rend certains sites réels 1 pour cent plus rapides. Le chiffre du canevas est celui qui change ce que vous pouvez construire. Celui du texte est plus étroit qu'il n'y paraît mais touche un motif très courant.
Servo est-il utilisable en embarqué aujourd'hui ?
Il s'en rapproche, et le projet se présente explicitement comme une alternative à l'embarquement d'un Chromium complet. Cette version a amélioré la documentation de la caisse servo et de WebViewDelegate, la surface que vous implémentez réellement. Une rupture est à connaître : ServoBuilder::webxr_registry() disparaît au profit de Servo::register_webxr_registry, une conception paresseuse qui a permis à servoshell de diviser par deux son propre temps de démarrage. La couverture des plateformes s'élargit aussi, avec des binaires Linux aarch64 et la prise en charge d'Android 10. Savoir si c'est prêt dépend entièrement de ce que votre vue embarquée doit afficher, et c'est pourquoi le travail de compatibilité avec les sites réels compte plus que n'importe quelle fonction isolée.
Que nous apprend vraiment le correctif DuckDuckGo ?
Que les manques restants sont petits et précis plutôt qu'architecturaux. Le canard de la page d'accueil de DuckDuckGo n'apparaissait pas en 0.4.0 à cause d'un défaut dans la façon dont Servo préchargeait les images SVG. Un correctif, et la page s'affiche. Le résultat Gumroad est encore plus parlant : l'essentiel de ce site ne s'affichait pas du tout en 0.4.0, et en 0.5.0 des pages comme la page Discover et les pages produit s'affichent presque parfaitement. C'est le motif que l'on souhaite voir chez un jeune moteur. Les sites échouent sur des défauts individuels que l'on trouve et que l'on corrige, pas sur des sous-systèmes entiers manquants.
Quelles nouveautés de la plateforme web sont arrivées ?
Côté CSS, text-decoration-thickness, ainsi que box-decoration-break, @font-feature-values, font-language-override et font-variant-alternates en grande partie. Le réseau gagne Cache-Control: stale-while-revalidate. Les ajouts DOM comprennent les algorithmes Ed448, X448 et KMAC dans SubtleCrypto, une interface AnimationEffect avec getKeyframes() et setKeyframes() sur KeyframeEffect, la propriété duplex sur Request, une propriété id sur LargestContentfulPaint, un Touch constructible, et plusieurs commandes document.execCommand(). Derrière des préférences se trouvent la prise en charge des textures externes WebGPU, une propriété name sur IDBIndex, et document.fonts qui expose une FontFace pour chaque règle @font-face valide.
Qu'est-ce qui reste expérimental ou inachevé ?
Beaucoup de choses, et le projet le dit clairement. WebVTT est amorcé mais ne s'affiche pas encore : Servo sait récupérer la source de chaque piste, analyser le WebVTT et exposer les repères via la propriété track de HTMLTrackElement, mais rien n'apparaît à l'écran. Les sélections de texte du DOM sont visibles, mais la sélection interactive reste à venir. L'API File and Directory Entries dispose de webkitGetAsEntry() sur DataTransferItem et d'un support minimal des types FileSystemEntry derrière une préférence. Le travail d'accessibilité de juillet a porté sur la performance plutôt que sur la couverture, l'arbre d'accessibilité gagnant des mises à jour incrémentales. La plupart de ces éléments vivent derrière des drapeaux --pref et sont actifs dans le mode expérimental de servoshell.