>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Rust

Comment rendre du HTML et du CSS en Rust sans Chromium alourdi

Chaque fois que quelqu'un emballe une petite application de bureau avec Electron, quelque part un module de RAM pleure. Même les alternatives comme Tauri dépendent toujours du WebView système, qui a ses propres bizarreries selon les systèmes d'exploitation. Les développeurs du framework Dioxus ont décidé de prendre le chemin le plus difficile et d'écrire leur propre moteur de rendu léger en Rust. Ils ont appelé ce projet Blitz.

screenshot

Pourquoi créer un autre moteur

Chromium ou WebKit contiennent des gigaoctets de code. Ils incluent le support de WebGL, WebSockets, WebRTC, Bluetooth, IndexedDB et des centaines d'API de navigateur. Mais si vous avez simplement besoin de rendre une interface utilisateur basée sur HTML et CSS, presque tout cela devient un lest inutile.

Blitz élimine tout ce qui est inutile. Le moteur se concentre sur une seule tâche : analyser HTML/CSS, calculer la mise en page et afficher le résultat à l'écran ou dans une texture GPU. Il n'y a pas de moteur JavaScript par défaut. La pile réseau est minimale et ne peut charger des ressources via HTTP que si vous le souhaitez explicitement. L'interaction système reste dans votre code Rust.

Architecture modulaire

Les créateurs de Blitz n'ont pas commencé de zéro. Ils ont pris des composants éprouvés de la communauté open source et les ont assemblés dans un système unifié :

  • L'analyse CSS et le calcul des styles sont gérés par Stylo — le moteur CSS de Mozilla Firefox et Servo.
  • Les calculs de mise en page Flexbox et CSS Grid sont gérés par la bibliothèque Taffy.
  • Le rendu du texte est effectué à l'aide de Parley.
  • L'analyse HTML est gérée par html5ever.
  • Le rendu graphique se fait par l'abstraction AnyRender et Vello.

Cette structure offre de la flexibilité. Si vous avez besoin d'analyser HTML et de déterminer les dimensions des éléments sans rendu à l'écran, vous n'avez besoin que des crates blitz-dom et blitz-html. Pour créer des applications Dioxus natives, vous intégrez dioxus-native.

À quoi ça ressemble dans le code

Le projet est en pré-alpha précoce, vous devrez donc le compiler depuis les sources. Vous pouvez essayer les exemples en une minute :

git clone https://github.com/DioxusLabs/blitz
cd blitz
cargo run --release --package browser

Le dépôt contient plusieurs scripts de démonstration. Par exemple, vous pouvez exécuter une visionneuse Markdown simple directement depuis la console :

cargo run --release --package readme ./README.md

Pour ceux qui utilisent déjà Dioxus et qui souhaitent éliminer la dépendance WebView, le dépôt propose une compilation native. Ajoutez simplement un lien direct vers la version git dans Cargo.toml :

[dependencies]
dioxus-native = { git = "https://github.com/DioxusLabs/blitz", features = ["prelude"] }

Ensuite, l'importation standard use dioxus::prelude::* devient use dioxus_native::prelude::*, et l'interface utilisateur est rendue via Blitz.

Limitations et état actuel

Créer des produits commerciaux avec Blitz est encore prématuré. Les développeurs mettent honnêtement en garde contre de nombreux bugs et des fonctionnalités non implémentées. Les sélecteurs CSS de base, Flexbox, les formulaires simples et les variables CSS fonctionnent déjà. Cependant, les requêtes média complexes ou les attributs de mise en page spécifiques peuvent se comporter de manière imprévisible.

Le projet a tout de même des points forts. L'intégration avec la bibliothèque AccessKit offre le support des lecteurs d'écran et du système d'accessibilité prêt à l'emploi. Et le rendu via WGPU permet d'intégrer des interfaces HTML directement dans les moteurs de jeu ou les scènes 3D.

Cela vaut-il la peine d'essayer

Blitz est conçu comme un outil pour ceux qui sont lassés des wrappers de navigateur lourds dans le développement de bureau. Il ne deviendra pas un remplacement complet d'Electron de sitôt.

Pour l'instant, le projet plaira aux programmeurs de systèmes Rust, aux chercheurs en moteurs graphiques et aux passionnés de l'écosystème Dioxus. Suivre le développement du dépôt en vaut la peine, ne serait-ce que pour voir comment Stylo et Taffy évoluent vers une alternative légère à CEF.

Projets similaires