conference logo

Playlist "Push to Talk"

Betrieb und Modifikationen einer eigenen Compiler-Explorer Instanz

pseyfert

Am CERN habe ich eine kleine Instanz von Compiler-Explorer (aka godbolt.org) betrieben und möchte berichten welche Modifikationen und Hacks dabei entstanden sind.

Compiler-Explorer (godbolt.org) ist unter C++ Entwickler*innen ein sehr
beliebtes Werkzeug. Teilweise um zu lesen was ein Compiler tatsächlich aus dem
eigenen Quelltext macht, teilweise um an Code Fragmenten rumzufrickeln bis der
Compiler endlich zufrieden ist, aber auch als pastebin mit eingebauter
Compiler-diagnostics, … oder um im Internet recht zu haben und in einer
aufgeheizten Diskussion sagen zu können "hier ist der Code, der Compiler frisst
ihn und macht super gute Assembly draus".

Für die tägliche Arbeit an unserem Software-Stack hat mir allerdings viel gefeht:
* einfache Einbindung von header files unserer
in-house Bibliotheken (incl. des aktuellen nightly builds und header files aus
code generation)
* Anwendung unseres clang-format styles für einfacheres
hin-und-her Kopieren
* reibungslosere Bedienung von tools die alle
doch eher frickelig sind
* Auflösung von transitiven Link-Abhängigkeiten für Code-Execution

Challenge accepted: Was als kleiner proof-of-principle im Hackcenter bei der
GPN 2018 anfing lief von Herbst 2018 bis Frühjahr 2020 als Webservice am
CERN für eine Hand voll Nutzer.

Im Vortrag möchte ich nur wenig C++ und Assembly zeigen oder gar wiederholen
was ihr von Matt Godbolt auf YouTube findet. Stattdessen zeige ich was alles
nicht out-of-the-box ging und die Hacks die nötig waren bis alles
zufriedenstellend lief und Nutzer*innen ihren Code kompilieren und ausführen konnten.

Am Rande möchte ich auch Security Bedenken erwähnen die mir kamen - was dabei raus kam
ist allerdings nicht zur Nachahmung empfohlen.

Im Laufe des talks gibt es drei kurze Umfragen (Namen müssen nicht angegeben werden)

- https://t1p.de/yi0o (Wie gut kennt ihr Compiler-Explorer schon?)
- https://t1p.de/derq (Wollt ihr ein detailiertes C++ Beispiel?)
- https://t1p.de/n317 (Wollt ihr eine live Demo wie man eine Instanz startet?)

*Stell deine Fragen zum Talk [in diesem Pad](https://di.c3voc.de/pad/ptt:talk:RCKRHP).*

links:
* [original blogpost](https://pseyfert.web.cern.ch/pseyfert/blog/compiler-explorer-for-lhcb.html)
* [updates blogpost](https://pseyfert.web.cern.ch/pseyfert/blog/compiler-exploring-conted.html)
* [github repo 0: core executable to generate configuration for compilation](https://github.com/pseyfert/compilecommands_to_compilerexplorer)
* [github repo 1: executable to generate configuration extensions for linking and executing](https://github.com/pseyfert/parse-cmake-for-ce4lhcb)
* [github repo 2: some other files used in the configuration](https://github.com/pseyfert/lhcb-compiler-explorer-config)
* [github repo 3: docker setup used in production](https://github.com/pseyfert-cern-gitlab-backup/lb-compiler-explorer)
* [github repo 4: record/backup/archive of what ran in production - hourly snapshots](https://github.com/pseyfert-cern-gitlab-backup/compiler-explorer)