Sebastian Büttner, Student der Technischen Informatik, Tutor in diversen Informatik-Veranstaltungen des Fachbereiches IEM und im First Level Support ITS Friedberg, nahm in der vergangenen Woche am C++ Standardization Committe Meeting in der Schweiz teil.

Die Meetings fanden auf dem Campus der HSR Hochschule für Technik Rapperswil statt. Die Hochschule ist mit knapp 1500 Studenten recht klein und liegt in einer perfekten Lage am Zürichsee, so konnten die Teilnehmer in den Pausen immer ein schönes Plätzchen nahe am Wasser finden.

Konferenz Rapperswil 1

Der erste Tag der Konferenz begann mit einer Vorbesprechung der anstehenden Themen im Plenum. Jede Arbeitsgruppe stellte den aktuellen Stand kurz vor und gab bekannt, ob Besprechungen für Rapperswil geplant sind. Im Anschluss wurde dann direkt die Arbeit in diesen Arbeitsgruppen gestartet.
Die ISO WG21 (C++) ist wie folgt strukturiert:

  • CWG (Core Working Group) :
    Pflegt Änderungen im Standardwording in den aktuellen Working Draft ein (nur die Sprache an sich betreffend).
  • LWG (Library Working Group):
    Wie CWG, nur für die Standardbibliothek.
  • EWG (Evolution Working Group):
    Proposals werden eingehend besprochen und bearbeitet, bis diese "reif" für die CWG sind.
  • LEWG (Library EWG):
    Wie EWG, nur für die Library.
  • SG1 ... N (Study Groups):
    Für einzelne größere Themenbereiche gibt es sogenannte Study Groups, die sich mit generellen Herangehensweisen an größere Problematiken oder Features beschäftigen. Ohne diese Gruppen würden die beiden Evolution Groups mit Arbeit zu einzelnen Themen überschwemmt. Sobald ein konkreter Vorschlag weit genug ist, wird er als Proposal an eine der Evolution Groups übergeben. Die später erwähnten Modules und Coroutines entstammen z. B. jeweils einer Study Group. Aktuell gibt es z. B. auch eine Study Group die sich u. a. mit Embedded Systems beschäftigt!

Der sich aktuell in Arbeit befindliche C++20 Standard (geplante Fertigstellung Ende 2020) befindet sich kurz vor dem Big-Feature-Freeze. Konkret wird dieser Freeze im November in San Diego vollzogen. Ab dann wird der Standard nur noch technisch ausgearbeitet und kleinere Funktionen werden hinzugefügt.
Für C++20 stehen viele große Features an, dementsprechend war das Meeting von sehr vielen kontroversen Diskussionen geprägt, beispielsweise zu:

  • Concepts:
    Statisch zur Compilezeit constraints an Typen in Template-Instanzierungen stellen. Der Grundsatz davon wurde schon im vorherigen Meeting in Jacksonvolle im Februar in den Working Draft vom IS (=International Standard) gemerged. Zur Debatte steht immer noch - auch nach Rapperswil leider immer noch - eine Kurzschreibweise für die meisten Fälle.
  • Modules:
    Modularisierung von C++ Codebasen, um unter anderem von den heftigen Compilezeiten bei Templates herum zu kommen. Im Endeffekt wird das den textuellen #include-Mechanismus ablösen.
  • Contracts:
    Pre-und Postconditions für Funktionen, um Parameter per Attribut auf gewisse Eigenschaften zu überprüfen und dem Caller gewisse Garantien über den Endzustand geben zu können (in Rapperswil in C++20 gevoted worden!).
  • Coroutines:
    Asynchrones Programmieren (mit und ohne Threads!)

Sebastian war in der EWG (Evolution Working Group), da es für ihn momentan das interessanteste Feld ist. Hier werden neue Proposals (egal ob es sich dabei um ein neues Sprach-Feature handelt oder einen "Bugfix" in der Sprache) erörtert und weiter ausgearbeitet oder, sofern weit genug fortgeschritten an eine der anderen Gruppen weitergereicht - meistens die Core Working Group, die das Ganze dann versucht im Standard unterzubringen und ggf. bei Problemen zum "redesign" zurück an die EWG leitet.

Konferenz Rapperswil 2

Dabei ging es bedeutend lockerer zu als zunächst vermutet. Egal ob auf Englisch oder auf Deutsch, während des Meetings wurde sich grundlegend geduzt, die allgemeinen Umgangsformen waren sehr locker. Während der Woche wurden immer wieder "Polls" durchgeführt, um die Richtung festzulegen, in der sich ein konkreter Proposal entwickeln soll. Dabei durften sogar die "Nicht-Experten" teilnehmen. Wie Bjarne beschreibt, handelt es sich dabei um sogenannte 5-Way-Votes: SF = Strongly in Favor, F = in Favor, N = Neutral, A = Against und SA = Strongly Against, oder wie es auch oft referenziert wird: "Over by dead body".
Um dann einen Konsens zu erreichen muss das Voting 3:1 (SF+F gegen A+SA) ausgehen.

Die Tage in den Arbeitsgruppen waren in je 3 Sessions aufgeteilt mit je einer Unterbrechung von 10-15 Minuten für Kaffee holen:
"Morning"-Session von 8:30 - 12:30 Uhr, "Afternoon"-Session von 13:30 - 17:30 Uhr und  "Evening"-Session von 19:00 - ca. 22:30 Uhr.
In der Regel kam kein Teilnehmer vor 23:30 Uhr im Hotel an, um dann die Paper für den nächsten Tag noch mal anzusehen.

Für Freizeit war daher leider recht wenig Platz in diesem Plan. Am Dienstag wurde die Evening Session allerdings ländermäßig durch ein "Social Event" ersetzt, das wenige hundert Meter von der Meeting Location im Schloss Rapperswil stattfand. Der Abend bestand aus guten, interessanten Unterhaltungen, gutem Essen und Wein und der einzigartigen Möglichkeit sich im Alphorn spielen zu probieren.

Konferenz Rapperswil 5

Sebastians Resümee:
"Die Konferenz war überragend! Und überraschend anders als erwartet. Ich habe in den (kurzen) Pausen mit vielen interessanten Leuten gesprochen - z. B. mit Bjarne Stroustrup ("dem" C++ Erfinder), Herb Sutter (Microsoft, dem aktuellen WG21 Chair), Daveed Vandevoorde (LLVM/Clang Compiler Entwickler), Gor Nishanov (Microsoft, Compiler Entwickler), Chandler Carruth (Google), Nico Josuttis, Eric Niebler, Andrew Sutter, uvm ... An den ersten 3 Tagen habe ich mich erst mal etwas zurück gehalten und mich versucht einzufinden, wie die Arbeit in der EWG abläuft. Ab dann war das Mitdiskutieren dann kein Problem mehr. Was mir wirklich gut gefallen hat ist, dass es für die Akzeptanz einer Meinung keinerlei Rolle gespielt hat, wie lange man schon Mitglied im Komitee ist, von welcher Firma man kommt oder ob man noch Student ist, oder eben nicht ... Momentan kann ich nur sagen, dass mich die Arbeit im Komitee positiv überrascht hat (und ich hatte schon recht hohe Erwartungen). ... Im Großen und Ganzen hat mich diese Erfahrung absolut darin bestätigt, dass ich auch in meiner beruflichen Laufbahn in diesem Komitee weiter mitarbeiten möchte. Derzeit sieht es außerdem so aus, dass ich im November auch am Meeting in San Diego teilnehmen werde."