u/El-Hamm

▲ 0 r/rust

Salut tout le monde !

Je m'appelle Eli, et il y a deux mois, j'ai sauté dans un défi de taille : créer Eli-Engine, un moteur de rendu web entièrement écrit en Rust pour mon futur navigateur, Eli.

le projet avance et je commence à voir les premiers résultats concrets, même si le chemin à parcourir est long et complexe.

Vous trouverez des liens à la fin : le premier lien pour le rapport complet du projet et le deuxième pour des images montrant mes progrès.

L'Architecture : Une Approche Modulaire

Au lieu de construire un bloc monolithique, j'ai segmenté le moteur en plusieurs "crates" spécifiques pour assurer un entretien propre. Voici l'état actuel de l'écosystème Eli-Engine :

  • eli-dom: Gère la structure de l'arbre de documents.
  • eli-stylo & eli-style: Ma propre implémentation basée sur une version modifiée et améliorée de Stylo (le moteur CSS de Servo). J'ai refondu et adapté les API pour les rendre compatibles avec mon architecture.
  • eli-layout & eli-text: Gère la logique de mise en page et le rendu du texte.
  • eli-net: La couche réseau pour la récupération des ressources.
  • eli-paint: Le module qui transforme les données en pixels.
  • ...et beaucoup d'autres modules en développement.

Intégrations Externes : Pour éviter de réinventer la roue pour chaque détail bas niveau, j’utilise et modifie quelques crates de haute performance :

  • Cloné/Modifié : image, rustybuzz, et stylo.
  • Intégré (non local) : Taffy pour les calculs de mise en page.

Le Défi Actuel : La Bataille des Mises en Page et des Tables

En ce moment, mon principal objectif est CSS. C'est une tâche herculéenne. La partie la plus difficile actuellement est de s'assurer qu'Eli-Engine comprend et respecte des mesures complexes :

  1. Intégration de Taffy : La synchronisation parfaite avec le reste du moteur pour la mise en page.
  2. Précision : Manipulation précise des unités (px), et des propriétés de bordure (border-style, border-width).
  3. La Principale Lutte — Tables : S'assurer que les tables s'affichent correctement tout en respectant le flux de texte est incroyablement difficile. Je passe beaucoup de temps à analyser le code source de Servo pour comprendre comment ils gèrent les mesures et le formatage des tables.

L'Objectif : Le "Test Wikipédia"

Pour moi, Wikipédia est le benchmark parfait. C’est un site riche en texte et en tables, avec une structure DOM claire mais très exigeante. Mon objectif actuel est d'optimiser Eli-Engine jusqu'à ce qu'il puisse rendre Wikipédia parfaitement. En ce moment, le moteur est "capricieux" : il peut rendre un site correctement et complètement échouer sur le suivant. C’est un processus constant d’ajustement.

Transparence et Apprentissage

Je ne suis pas (encore) un expert en Rust. J'apprends chaque jour en codant. Pour être totalement transparent : je m'appuie beaucoup sur l'IA (Claude et GPT-5.5) pour m'assister avec des structures complexes. Mon rôle est de concevoir le moteur, résoudre les blocs de logique, et assembler ce grand puzzle.

Ce projet nécessite un énorme investissement en temps, ainsi qu'en investissement personnel et financier.

Comment Pouvez-vous Aider ?

Le projet est un "travail en cours" constant. Je cherche actuellement :

  • Retours Techniques : Surtout de la part de développeurs Rust ayant de l'expérience dans les systèmes de rendu ou les moteurs de mise en page.
  • Soutien Financier : Développer un tel outil coûte cher en termes de ressources et de temps.
  • Visibilité : Si ce projet vous intéresse, n'hésitez pas à poser des questions ou à le partager !

Je publierai des mises à jour régulières sur l'avancement du "Test Wikipédia". Ce n'est que le début de l'aventure pour Eli-Engine.

C'est très compliqué, mais j'ai l'intention de réussir.
1. https://fromsmash.com/compte-rendu-de-eli-engine
2. https://fromsmash.com/rbrLKRdzlR-ct

https://preview.redd.it/ztpvybvkssxg1.png?width=1917&format=png&auto=webp&s=4064aa33438688b4593e78aae3e8079720b36a9f

reddit.com
u/El-Hamm — 16 days ago