À propos du projet
Druid était une boîte à outils UI expérimentale native de Rust développée par Linebender, conçue selon une approche axée sur les données pour créer des applications de bureau soignées. Le projet visait à offrir une expérience utilisateur fluide sur toutes les plateformes courantes, en mettant l'accent sur les performances, les interactions riches et l'intégration native aux plateformes.
La boîte à outils est désormais officiellement abandonnée et non maintenue. Les nouveaux efforts de développement ont été orientés vers Xilem, qui hérite largement de Druid mais introduit des changements fondamentaux pour de meilleures performances et une prise en charge applicative plus large. Bien que Druid reste raisonnablement utilisable pour certaines applications et dispose d'un historique de tests significatif, aucune nouvelle fonctionnalité ni correction de bogue n'est prévue.
Les principaux composants architecturaux comprennent :
- druid-shell : une coquille applicative assurant l'abstraction de plateforme, chargée de démarrer les boucles d'exécution natives des plateformes, d'écouter les événements et de les convertir en représentations indépendantes de la plateforme.
- Piet : une bibliothèque d'abstraction graphique 2D avec plusieurs backends (Direct2D pour Windows, CoreGraphics pour macOS, Cairo pour Linux et Web pour les cibles web), utilisée pour le dessin et la mise en page du texte.
- Système de widgets : les widgets implémentent le trait Widget paramétré par un type de données, avec des méthodes pour la gestion des événements, la gestion du cycle de vie, les mises à jour, la mise en page et le rendu. Chaque méthode reçoit un objet de contexte correspondant ainsi qu'un environnement contenant les paramètres de thème.
- Mise en page : inspirée du modèle de boîtes de Flutter, les widgets reçoivent des BoxConstraints indiquant des tailles minimales et maximales.
- Trait Data : représente des types de valeurs peu coûteux à comparer et à cloner, généralement dérivés pour les structures d'état d'application.
- Lens : permet d'accéder à des parties de structures de données plus larges, afin que les widgets puissent travailler avec des champs spécifiques de l'état de l'application.
Druid était disponible sur crates.io et prenait en charge macOS, Linux (nécessitant GTK+3), Windows et OpenBSD. Le projet fournissait des widgets utilitaires et de mise en page de base, avec la possibilité de composer des widgets personnalisés. La boîte à outils visait une compilation et un empaquetage faciles, le respect des conventions des plateformes, une mise à l'échelle fiable de l'affichage, la prise en charge de l'internationalisation, l'accessibilité, des binaires petits et rapides, ainsi qu'un arbre de dépendances réduit.
Les non-objectifs incluaient l'utilisation de widgets natifs de plateforme, l'intégration dans des pipelines de rendu personnalisés, l'adhésion à des styles architecturaux spécifiques comme Elm, et la prise en charge du rendu HTML pour les cibles web. Parmi les alternatives pour ces cas d'usage figuraient Relm, Slint, Conrod, Iced et Moxie.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.