Это интерактивный веб-сайт по изучению компиляторов. Редактируйте код на C, C++, C#, F#, Rust, Go, D, Haskell, Swift, Pascal, ispc, Python, Java или любом другом из более чем 30 поддерживаемых языковых компонентов и посмотрите, как этот код выглядит после компиляции в реальное время.
Отчет об ошибке · Запрос компилятора · Запрос функции · Запрос языка · Запрос библиотеки · Сообщить об уязвимости
Для каждого языка поддерживается несколько компиляторов, доступно множество различных инструментов и визуализаций, а макет пользовательского интерфейса настраивается (спасибо GoldenLayout).
Попробуйте на godbolt.org или запустите собственный локальный экземпляр. Обзор того, чего позволяет сайт, почему он полезен и как его использовать, доступен здесь.
Compiler Explorer следует Кодексу поведения, целью которого является создание открытой и гостеприимной атмосферы.
Compiler Explorer был запущен в 2012 году, чтобы показать, как конструкции C++ преобразуются в ассемблерный код. Все началось как сеанс tmux
, где vi
работал на одной панели, а watch gcc -S foo.cc -o -
работал на другой.
С тех пор он стал общедоступным веб-сайтом, на котором еженедельно размещается более 3 000 000 компиляций.
Вы можете финансово поддержать этот проект на Patreon, GitHub, Paypal или купив крутое оборудование в магазине Compiler Explorer.
В вики-репозитории теперь есть раздел часто задаваемых вопросов. Если вашего вопроса нет, свяжитесь с нами, как описано ниже, чтобы мы могли вам помочь. Если вы обнаружите, что в FAQ не хватает какого-то важного момента, пожалуйста, внесите свой вклад в него и/или попросите нас разъяснить его.
Несколько видеороликов демонстрируют некоторые возможности Compiler Explorer:
Доступна дорожная карта, которая дает некоторое представление о будущих планах Compiler Explorer .
Compiler Explorer написан на TypeScript на Node.js.
Предполагая, что у вас установлена совместимая версия node
, в Linux простой запуск make
должен помочь вам запустить Explorer с портом 10240 на вашем локальном компьютере: http://localhost:10240/. Если вам это не помогло, свяжитесь с нами, поскольку мы считаем важным, чтобы вы могли быстро и легко приступить к бегу. В настоящее время для Compiler Explorer требуется установленный node
20 либо по пути, либо по адресу NODE_DIR
(переменная среды или параметр make
).
Запуск с командой make EXTRA_ARGS='--language LANG'
позволит вам загружать исключительно LANG
, где LANG
— это один из идентификаторов/псевдонимов языков, определенных в lib/languages.ts
. Например, чтобы запустить Compiler Explorer только с поддержкой C++, вы должны запустить make EXTRA_ARGS='--language c++'
. Вы можете указать несколько аргументов --language
, чтобы ограничить использование более чем одного языка. Makefile
автоматически установит все сторонние библиотеки, необходимые для запуска; использование npm
для установки серверных и клиентских компонентов.
Для разработки мы предлагаем использовать make dev
, чтобы включить некоторые полезные функции, такие как автоматическая перезагрузка при изменении файлов и сокращение времени запуска.
Вы также можете использовать npm run dev
для запуска, если make dev
не работает на вашем компьютере.
Некоторым языкам нужны дополнительные инструменты для их разборки, например, rust
, d
или haskell
. Такие инструменты хранятся отдельно в репозитории инструментов.
Настройка обозревателя компилятора осуществляется с помощью файлов конфигурации в каталоге etc/config
. Значения имеют key=value
. Параметры в файле {type}.local.properties
(где {type}
— это c++
или аналогичный) переопределяют все параметры в файле {type}.defaults.properties
. Существует файл .gitignore
для игнорирования файлов *.local.*
, поэтому они не будут проверены в git, и вы не столкнетесь с обновлёнными версиями при использовании git pull
. Дополнительную информацию см. в разделе Добавление компилятора.
Посетите CONTRIBUTING.md для получения подробной информации о том, как вы можете внести свой вклад в Compiler Explorer , а в папке docs — подробные сведения о различных вещах, которые вы, возможно, захотите сделать, например о том, как добавлять на сайт новые компиляторы или языки.
Если вы хотите указать его на свой собственный GCC или аналогичные двоичные файлы, либо отредактируйте файл etc/config/LANG.defaults.properties
, либо создайте новый с именем LANG.local.properties
, заменив LANG
при необходимости. Файлы *.local.properties
имеют наивысший приоритет при загрузке свойств.
Если вы хотите поддерживать несколько компиляторов и языков, таких как godbolt.org, вы можете использовать команду bin/ce_install install compilers
в инфраструктурном проекте, чтобы установить все или некоторые компиляторы. Компиляторы, установленные таким образом, можно загрузить через конфигурацию в etc/config/*.amazon.properties
. Если вам необходимо выполнить развертывание в полностью автономной среде, возможно, вам придется удалить некоторые части конфигурации, полученные с www.godbolt.ms@443
.
При работе в корпоративной среде службу сокращения URL-адресов можно заменить внутренней, если драйвер хранилища по умолчанию не подходит для вашей среды. Для этого добавьте новый модуль в lib/shortener/myservice.js
и установите переменную urlShortenService
в конфигурации. Этот модуль должен экспортировать одну функцию, пример см. в модуле tinyurl.
Существует простой restful API, который можно использовать для компиляции в asm и для составления списка компиляторов.
Вы можете найти документацию по API здесь.
Мы запускаем Discord Compiler Explorer, где можно обсудить использование или разработку Compiler Explorer. Мы также присутствуем на канале cpplang Slack #compiler_explorer
и имеем общедоступный список рассылки.
В Discord есть канал разработки, а также список рассылки разработчиков.
Не стесняйтесь поднять вопрос на github или написать Мэтту напрямую, чтобы получить дополнительную помощь.
Ниже приведены официальные домены Compiler Explorer:
Домены допускают произвольные субдомены, например https://foo.godbolt.org/, что удобно, поскольку каждый субдомен имеет независимое локальное состояние. Кроме того, языковые поддомены, такие как https://rust.compiler-explorer.com/, будут загружаться с уже выбранным языком.
Compiler Explorer поддерживается замечательными людьми, перечисленными в файле AUTHORS.
Мы хотели бы поблагодарить участников, перечисленных в файле CONTRIBUTORS, которые помогли сформировать Compiler Explorer .
Мы также хотели бы выразить особую благодарность этим людям за их вклад в Compiler Explorer :
Многие замечательные спонсоры, как частные лица, так и компании, помогли финансировать и продвигать Compiler Explorer.