Es un sitio web interactivo de exploración de compiladores. Edite código en C, C++, C#, F#, Rust, Go, D, Haskell, Swift, Pascal, ispc, Python, Java o cualquiera de los otros más de 30 componentes de lenguajes admitidos, y vea cómo se ve ese código después de compilarlo en tiempo real.
Informe de error · Solicitud del compilador · Solicitud de función · Solicitud de idioma · Solicitud de biblioteca · Informar de vulnerabilidad
Se admiten varios compiladores para cada idioma, hay muchas herramientas y visualizaciones diferentes disponibles y el diseño de la interfaz de usuario es configurable (gracias a GoldenLayout).
Pruébelo en godbolt.org o ejecute su propia instancia local. Aquí encontrará una descripción general de lo que el sitio le permite lograr, por qué es útil y cómo utilizarlo.
Compiler Explorer sigue un Código de conducta cuyo objetivo es fomentar un entorno abierto y acogedor.
Compiler Explorer se inició en 2012 para mostrar cómo las construcciones de C++ se traducen a código ensamblador. Comenzó como una sesión tmux
con vi
ejecutándose en un panel y watch gcc -S foo.cc -o -
ejecutándose en el otro.
Desde entonces, se ha convertido en un sitio web público que publica más de 3.000.000 de compilaciones por semana.
Puede apoyar financieramente este proyecto en Patreon, GitHub, Paypal o comprando equipo interesante en la tienda Compiler Explorer.
Ahora hay una sección de preguntas frecuentes en el wiki del repositorio. Si su pregunta no está presente, comuníquese con nosotros como se describe a continuación, para que podamos ayudarlo. Si encuentra que a las preguntas frecuentes le falta algún punto importante, no dude en contribuir y/o pedirnos que lo aclaremos.
Varios videos muestran algunas características de Compiler Explorer:
Hay disponible una hoja de ruta que brinda una pequeña idea de los planes futuros para Compiler Explorer .
Compiler Explorer está escrito en TypeScript, en Node.js.
Suponiendo que tiene instalada una versión compatible de node
, en Linux simplemente ejecutar make
debería permitirle comenzar a ejecutar un Explorer ejecutándose en el puerto 10240 de su máquina local: http://localhost:10240/. Si esto no funciona para usted, comuníquese con nosotros, ya que consideramos importante que pueda comenzar a funcionar rápida y fácilmente. Actualmente, Compiler Explorer requiere que node
20 esté instalado, ya sea en la ruta o en NODE_DIR
(una variable de entorno o parámetro make
).
Ejecutar con make EXTRA_ARGS='--language LANG'
le permitirá cargar LANG
exclusivamente, donde LANG
es uno para los identificadores/alias de idioma definidos en lib/languages.ts
. Por ejemplo, para ejecutar únicamente Compiler Explorer con soporte para C++, ejecutaría make EXTRA_ARGS='--language c++'
. Puede proporcionar varios argumentos --language
para restringirlos a más de un idioma. Makefile
instalará automáticamente todas las bibliotecas de terceros necesarias para ejecutarse; usando npm
para instalar componentes del lado del servidor y del lado del cliente.
Para el desarrollo, sugerimos utilizar make dev
para habilitar algunas funciones útiles, como la recarga automática de cambios de archivos y tiempos de inicio más cortos.
También puedes usar npm run dev
para ejecutar si make dev
no funciona en tu máquina.
Algunos lenguajes necesitan herramientas adicionales para controlarlos, por ejemplo, rust
, d
o haskell
. Estas herramientas se guardan por separado en el repositorio de herramientas.
La configuración del explorador del compilador se logra mediante archivos de configuración en el directorio etc/config
. Los valores son key=value
. Las opciones en un archivo {type}.local.properties
(donde {type}
es c++
o similar) anulan cualquier cosa en el archivo {type}.defaults.properties
. Hay un archivo .gitignore
para ignorar los archivos *.local.*
, por lo que no se registrarán en git y no tendrás que luchar con versiones actualizadas cuando uses git pull
. Para obtener más información, consulte Agregar un compilador.
Consulte CONTRIBUTING.md para obtener información detallada sobre cómo puede contribuir a Compiler Explorer y la carpeta de documentos para obtener detalles específicos sobre varias cosas que quizás desee hacer, como cómo agregar nuevos compiladores o idiomas al sitio.
Si desea apuntar a su propio GCC o archivos binarios similares, edite etc/config/LANG.defaults.properties
o cree uno nuevo con el nombre LANG.local.properties
, sustituyendo LANG
según sea necesario. *.local.properties
tienen la máxima prioridad al cargar propiedades.
Si desea admitir múltiples compiladores y lenguajes como godbolt.org, puede usar el comando bin/ce_install install compilers
en el proyecto infra para instalar todos o algunos de los compiladores. Los compiladores instalados de esta manera se pueden cargar a través de la configuración en etc/config/*.amazon.properties
. Si necesita realizar la implementación en un entorno completamente fuera de línea, es posible que deba eliminar algunas partes de la configuración extraídas de www.godbolt.ms@443
.
Cuando se ejecuta en un entorno corporativo, el servicio de acortamiento de URL se puede reemplazar por uno interno si el controlador de almacenamiento predeterminado no es apropiado para su entorno. Para hacer esto, agregue un nuevo módulo en lib/shortener/myservice.js
y establezca la variable urlShortenService
en la configuración. Este módulo debería exportar una única función; consulte el módulo tinyurl para ver un ejemplo.
Existe una API sencilla y relajante que se puede utilizar para realizar compilaciones en ASM y enumerar compiladores.
Puede encontrar la documentación de la API aquí.
Ejecutamos Compiler Explorer Discord, que es un lugar para discutir el uso o desarrollo de Compiler Explorer. También tenemos presencia en el canal cpplang Slack #compiler_explorer
y tenemos una lista de correo pública.
Hay un canal de desarrollo en Discord y también una lista de correo de desarrollo.
No dudes en plantear un problema en github o enviar un correo electrónico a Matt directamente para obtener más ayuda.
Los siguientes son los dominios oficiales para Compiler Explorer:
Los dominios permiten subdominios arbitrarios, por ejemplo, https://foo.godbolt.org/, lo cual es conveniente ya que cada subdominio tiene un estado local independiente. Además, los subdominios de idiomas como https://rust.compiler-explorer.com/ se cargarán con ese idioma ya seleccionado.
Compiler Explorer es mantenido por las increíbles personas enumeradas en el archivo AUTORES.
Nos gustaría agradecer a los contribuyentes enumerados en el archivo CONTRIBUTORS, que han ayudado a dar forma a Compiler Explorer .
También nos gustaría agradecer especialmente a estas personas por sus contribuciones a Compiler Explorer :
Muchos patrocinadores increíbles, tanto individuos como empresas, han ayudado a financiar y promover Compiler Explorer.