Est un site Web interactif d'exploration de compilateur. Modifiez le code en C, C++, C#, F#, Rust, Go, D, Haskell, Swift, Pascal, ispc, Python, Java ou l'un des plus de 30 autres composants de langages pris en charge, et voyez à quoi ressemble ce code après avoir été compilé dans temps réel.
Rapport de bogue · Demande du compilateur · Demande de fonctionnalité · Demande de langue · Demande de bibliothèque · Vulnérabilité du rapport
Plusieurs compilateurs sont pris en charge pour chaque langue, de nombreux outils et visualisations différents sont disponibles et la présentation de l'interface utilisateur est configurable (grâce à GoldenLayout).
Essayez-le sur godbolt.org ou exécutez votre propre instance locale. Un aperçu de ce que le site vous permet de réaliser, pourquoi il est utile et comment l'utiliser est disponible ici.
Compiler Explorer suit un code de conduite qui vise à favoriser un environnement ouvert et accueillant.
Compiler Explorer a été lancé en 2012 pour montrer comment les constructions C++ sont traduites en code assembleur. Cela a commencé comme une session tmux
avec vi
exécuté dans un volet et watch gcc -S foo.cc -o -
exécuté dans l'autre.
Depuis lors, il est devenu un site Web public proposant plus de 3 000 000 de compilations par semaine.
Vous pouvez soutenir financièrement ce projet sur Patreon, GitHub, Paypal ou en achetant du matériel sympa sur la boutique Compiler Explorer.
Il y a maintenant une section FAQ dans le wiki du référentiel. Si votre question n'est pas présente, veuillez nous contacter comme décrit ci-dessous afin que nous puissions vous aider. Si vous trouvez qu'il manque un point important dans la FAQ, n'hésitez pas à y contribuer et/ou à nous demander de le clarifier.
Plusieurs vidéos présentent certaines fonctionnalités de Compiler Explorer :
Une feuille de route est disponible qui donne un petit aperçu des projets futurs pour Compiler Explorer .
L'Explorateur du compilateur est écrit en TypeScript, sur Node.js.
En supposant que vous ayez installé une version compatible de node
, sous Linux, le simple fait d'exécuter make
devrait vous permettre d'être opérationnel avec un explorateur exécuté sur le port 10240 sur votre ordinateur local : http://localhost:10240/. Si cela ne fonctionne pas pour vous, veuillez nous contacter, car nous considérons qu'il est important que vous puissiez vous lancer rapidement et facilement. Actuellement, l'Explorateur du compilateur nécessite l'installation node
20, soit sur le chemin, soit sur NODE_DIR
(une variable d'environnement ou un paramètre make
).
Exécuter avec make EXTRA_ARGS='--language LANG'
vous permettra de charger LANG
exclusivement, où LANG
est l'un des identifiants/alias de langue définis dans lib/languages.ts
. Par exemple, pour exécuter uniquement l'Explorateur du compilateur avec la prise en charge de C++, vous devez exécuter make EXTRA_ARGS='--language c++'
. Vous pouvez fournir plusieurs arguments --language
pour vous limiter à plusieurs langues. Le Makefile
installera automatiquement toutes les bibliothèques tierces nécessaires à son exécution ; utiliser npm
pour installer des composants côté serveur et côté client.
Pour le développement, nous suggérons d'utiliser make dev
pour activer certaines fonctionnalités utiles, telles que le rechargement automatique lors des modifications de fichiers et des temps de démarrage plus courts.
Vous pouvez également utiliser npm run dev
pour exécuter si make dev
ne fonctionne pas sur votre machine.
Certains langages ont besoin d'outils supplémentaires pour les démanteler, par exemple rust
, d
ou haskell
. Ces outils sont conservés séparément dans le référentiel d'outils.
La configuration de l'explorateur du compilateur s'effectue via les fichiers de configuration dans le répertoire etc/config
. Les valeurs sont key=value
. Les options d'un fichier {type}.local.properties
(où {type}
est c++
ou similaire) remplacent tout ce qui se trouve dans le fichier {type}.defaults.properties
. Il existe un fichier .gitignore
pour ignorer les fichiers *.local.*
, donc ceux-ci ne seront pas archivés dans git, et vous ne vous retrouverez pas à vous battre avec des versions mises à jour lorsque vous git pull
. Pour plus d’informations, consultez Ajout d’un compilateur.
Consultez CONTRIBUTING.md pour des informations détaillées sur la façon dont vous pouvez contribuer à Compiler Explorer et le dossier docs pour des détails spécifiques sur diverses choses que vous pourriez vouloir faire, telles que la façon d'ajouter de nouveaux compilateurs ou langues au site.
Si vous souhaitez le pointer vers votre propre GCC ou des binaires similaires, modifiez le etc/config/LANG.defaults.properties
ou bien créez-en un nouveau avec le nom LANG.local.properties
, en remplaçant LANG
si nécessaire. Les fichiers *.local.properties
ont la priorité la plus élevée lors du chargement des propriétés.
Si vous souhaitez prendre en charge plusieurs compilateurs et langages comme godbolt.org, vous pouvez utiliser la commande bin/ce_install install compilers
dans le projet infra pour installer tout ou partie des compilateurs. Les compilateurs installés de cette manière peuvent être chargés via la configuration dans etc/config/*.amazon.properties
. Si vous devez déployer dans un environnement complètement hors ligne, vous devrez peut-être supprimer certaines parties de la configuration extraites de www.godbolt.ms@443
.
Lorsqu'il est exécuté dans un environnement d'entreprise, le service de raccourcissement d'URL peut être remplacé par un service interne si le pilote de stockage par défaut n'est pas adapté à votre environnement. Pour ce faire, ajoutez un nouveau module dans lib/shortener/myservice.js
et définissez la variable urlShortenService
dans la configuration. Ce module doit exporter une seule fonction, voir le module tinyurl pour un exemple.
Il existe une API simple et reposante qui peut être utilisée pour effectuer des compilations vers asm et pour répertorier les compilateurs.
Vous pouvez trouver la documentation de l'API ici.
Nous gérons un Compiler Explorer Discord, qui est un endroit pour discuter de l'utilisation ou du développement de Compiler Explorer. Nous sommes également présents sur le canal cpplang Slack #compiler_explorer
et nous avons une liste de diffusion publique.
Il existe un canal de développement sur Discord, ainsi qu'une liste de diffusion de développement.
N'hésitez pas à soulever un problème sur github ou à envoyer un e-mail directement à Matt pour plus d'aide.
Voici les domaines officiels de Compiler Explorer :
Les domaines autorisent des sous-domaines arbitraires, par exemple https://foo.godbolt.org/, ce qui est pratique puisque chaque sous-domaine a un état local indépendant. De plus, les sous-domaines de langue tels que https://rust.compiler-explorer.com/ se chargeront avec cette langue déjà sélectionnée.
Compiler Explorer est maintenu par les personnes formidables répertoriées dans le fichier AUTHORS.
Nous tenons à remercier les contributeurs répertoriés dans le fichier CONTRIBUTORS, qui ont contribué à façonner Compiler Explorer .
Nous tenons également à remercier spécialement ces personnes pour leurs contributions à Compiler Explorer :
De nombreux sponsors extraordinaires, particuliers et entreprises, ont contribué à financer et à promouvoir Compiler Explorer.