Betrieb und Modifikationen einer eigenen Compiler-Explorer Instanz (divoc_ptt)

Published: Sept. 6, 2020, noon

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) about this event: https://talks.mrmcd.net/ptt/talk/RCKRHP/