Présentation
Le projet EDG C/C++ a été publié sous licence open source sur GitHub. Le dépôt edgcpp/compiler compte 62 397 commits, 174 étoiles et 14 forks. L’objectif principal du dépôt est de fournir le front‑end du compilateur EDG, reconnu pour sa compatibilité de parsing avec les principaux compilateurs du marché (Clang, GCC, MSVC).
Architecture et fonctionnalités
Le front‑end se distingue par trois attributs clés : une compatibilité de parsing étendue, une émulation précise des bugs afin de reproduire le comportement des autres compilateurs, et une configurabilité extrême qui permet son intégration dans de nombreux produits C/C++. Le projet inclut également plusieurs back‑ends : un back‑end générateur de code C, utile pour transformer du C++ en C, et un back‑end générateur de code C++, destiné aux transformations source‑à‑source. Un pré‑linker gère l’instanciation automatique des templates, ce qui simplifie le traitement des modèles complexes. Le dépôt fournit enfin une petite bibliothèque d’exécution minimale (sans implémentation de flux I/O), un démangleur de noms, ainsi que des utilitaires pour écrire, relire et afficher le langage intermédiaire du compilateur.
Processus de construction et contributions
Le guide de construction recommande un clone partiel afin de réduire le trafic réseau :
git clone --filter=blob:none \
git@github.com:edgcpp/compiler.gitCette option conserve l’historique complet tout en ne télécharge que les fichiers les plus récents. Les contributeurs peuvent suivre les instructions du BUILD.md et du CMakePresets.json pour générer le front‑end. La documentation officielle, hébergée sur edgcpp.org/doc/, couvre l’utilisation, la configuration et les extensions possibles. Les contributeurs sont invités à consulter CONTRIBUTING.md et HACKING.md pour les bonnes pratiques de modification du code.
Implications et limites
En ouvrant le front‑end, EDG facilite l’accès à une technologie historiquement réservée aux licences commerciales. Les développeurs peuvent désormais intégrer le même moteur de parsing dans des outils d’analyse statique ou des environnements de développement intégrés. Cependant, le projet ne fournit pas de bibliothèques standard (par ex. iostream), ce qui limite son usage direct comme compilateur autonome. De plus, la documentation indique que le runtime fourni est « minimal », ce qui impose aux utilisateurs d’ajouter leurs propres implémentations de bibliothèques système. Enfin, la communauté reste petite ; avec seulement 174 étoiles, le nombre de contributeurs actifs est limité, ce qui peut ralentir la résolution de bugs ou l’ajout de nouvelles fonctionnalités.