É um site interativo de exploração de compiladores. Edite o código em C, C++, C#, F#, Rust, Go, D, Haskell, Swift, Pascal, ispc, Python, Java ou qualquer um dos mais de 30 componentes de linguagens suportadas e veja como fica esse código depois de ser compilado em tempo real.
Relatório de bug · Solicitação do compilador · Solicitação de recurso · Solicitação de linguagem · Solicitação de biblioteca · Relatório de vulnerabilidade
Vários compiladores são suportados para cada linguagem, muitas ferramentas e visualizações diferentes estão disponíveis e o layout da UI é configurável (graças ao GoldenLayout).
Experimente em godbolt.org ou execute sua própria instância local. Uma visão geral do que o site permite alcançar, por que é útil e como usá-lo está disponível aqui.
O Compiler Explorer segue um Código de Conduta que visa promover um ambiente aberto e acolhedor.
O Compiler Explorer foi iniciado em 2012 para mostrar como as construções C++ são traduzidas em código assembly. Tudo começou como uma sessão tmux
com vi
rodando em um painel e watch gcc -S foo.cc -o -
rodando no outro.
Desde então, tornou-se um site público que atende mais de 3.000.000 de compilações por semana.
Você pode apoiar financeiramente este projeto no Patreon, GitHub, Paypal ou comprando equipamentos legais na loja Compiler Explorer.
Agora existe uma seção de perguntas frequentes no wiki do repositório. Caso sua dúvida não esteja presente, entre em contato conosco conforme descrito abaixo, para que possamos ajudá-lo. Se você achar que falta algum ponto importante no FAQ, sinta-se à vontade para contribuir e/ou pedir-nos para esclarecê-lo.
Vários vídeos mostram alguns recursos do Compiler Explorer:
Está disponível um roteiro que fornece uma pequena visão dos planos futuros para o Compiler Explorer .
O Compiler Explorer é escrito em TypeScript, em Node.js.
Supondo que você tenha uma versão compatível do node
instalada, no Linux simplesmente executar make
deverá colocá-lo em funcionamento com um Explorer rodando na porta 10240 em sua máquina local: http://localhost:10240/. Se isso não funcionar para você, entre em contato conosco, pois consideramos importante que você possa começar a correr de forma rápida e fácil. Atualmente, o Compiler Explorer requer node
20 instalado, no caminho ou em NODE_DIR
(uma variável de ambiente ou parâmetro make
).
Executar com make EXTRA_ARGS='--language LANG'
permitirá que você carregue LANG
exclusivamente, onde LANG
é um para os ids/aliases de idioma definidos em lib/languages.ts
. Por exemplo, para executar apenas o Compiler Explorer com suporte a C++, você executaria make EXTRA_ARGS='--language c++'
. Você pode fornecer vários argumentos --language
para restringir a mais de um idioma. O Makefile
instalará automaticamente todas as bibliotecas de terceiros necessárias para execução; usando npm
para instalar componentes do lado do servidor e do lado do cliente.
Para desenvolvimento, sugerimos usar make dev
para habilitar alguns recursos úteis, como recarregamento automático em alterações de arquivo e tempos de inicialização mais curtos.
Você também pode usar npm run dev
para executar se make dev
não funcionar em sua máquina.
Algumas linguagens precisam de ferramentas extras para desmontá-las, por exemplo, rust
, d
ou haskell
. Essas ferramentas são mantidas separadamente no repositório de ferramentas.
A configuração do compilador Explorer é realizada por meio de arquivos de configuração no diretório etc/config
. Os valores são key=value
. As opções em um arquivo {type}.local.properties
(onde {type}
é c++
ou similar) substituem qualquer coisa no arquivo {type}.defaults.properties
. Existe um arquivo .gitignore
para ignorar arquivos *.local.*
, portanto, eles não serão verificados no git e você não terá que lutar com versões atualizadas ao git pull
. Para obter mais informações, consulte Adicionando um compilador.
Verifique CONTRIBUTING.md para obter informações detalhadas sobre como você pode contribuir para o Compiler Explorer e a pasta docs para obter detalhes específicos sobre várias coisas que você pode querer fazer, como adicionar novos compiladores ou linguagens ao site.
Se você quiser apontá-lo para seu próprio GCC ou binários semelhantes, edite etc/config/LANG.defaults.properties
ou crie um novo com o nome LANG.local.properties
, substituindo LANG
conforme necessário. Os arquivos *.local.properties
têm a prioridade mais alta ao carregar propriedades.
Se quiser oferecer suporte a vários compiladores e linguagens como godbolt.org, você pode usar o comando bin/ce_install install compilers
no projeto infra para instalar todos ou alguns dos compiladores. Os compiladores instalados dessa forma podem ser carregados por meio da configuração em etc/config/*.amazon.properties
. Se precisar implantar em um ambiente totalmente offline, talvez seja necessário remover algumas partes da configuração extraídas de www.godbolt.ms@443
.
Ao executar em um ambiente corporativo, o serviço de encurtamento de URL pode ser substituído por um interno se o driver de armazenamento padrão não for apropriado para o seu ambiente. Para fazer isso, adicione um novo módulo em lib/shortener/myservice.js
e defina a variável urlShortenService
na configuração. Este módulo deve exportar uma única função, veja o módulo tinyurl para ver um exemplo.
Existe uma API simples e tranquila que pode ser usada para compilar o conjunto e listar compiladores.
Você pode encontrar a documentação da API aqui.
Executamos um Compiler Explorer Discord, que é um lugar para discutir o uso ou desenvolvimento do Compiler Explorer. Também estamos presentes no canal cpplang Slack #compiler_explorer
e temos uma mailing list pública.
Há um canal de desenvolvimento no discord e também uma lista de discussão de desenvolvimento.
Sinta-se à vontade para levantar um problema no github ou enviar um e-mail diretamente para Matt para obter mais ajuda.
A seguir estão os domínios oficiais do Compiler Explorer:
Os domínios permitem subdomínios arbitrários, por exemplo, https://foo.godbolt.org/, o que é conveniente porque cada subdomínio possui um estado local independente. Além disso, subdomínios de idiomas como https://rust.compiler-explorer.com/ serão carregados com esse idioma já selecionado.
O Compiler Explorer é mantido pelas pessoas incríveis listadas no arquivo AUTHORS.
Gostaríamos de agradecer aos colaboradores listados no arquivo CONTRIBUTORS, que ajudaram a moldar o Compiler Explorer .
Gostaríamos também de agradecer especialmente a estas pessoas por suas contribuições ao Compiler Explorer :
Muitos patrocinadores incríveis, tanto indivíduos quanto empresas, ajudaram a financiar e promover o Compiler Explorer.