Wie geht die Standardisierung von C++?

Seite 3: Technische Spezifikationen (TS)

Inhaltsverzeichnis

Neben diesem Vorgehen für Internationale Standards (IS) können die ISO-Gremien auch technische Spezifikationen (TS) erarbeiten. Das wird in C++ häufig bei umfangreicheren Features – wie den Concepts oder dem Dateisystem – gemacht, wenn unsicher ist, ob die Spezifikation des Features bei der Verabschiedung des nächsten Sprachstandards den hohen Ansprüchen des Komitees wohl gerecht werden kann. Dann wären neben der Hauptspezifikation des Features auch alle Verweise darauf in letzter Minute aus dem C++-Standard zu entfernen. Mithilfe einer TS kann eine Arbeitsgruppe an einem neuen Feature deutlich unabhängiger arbeiten. Sobald das Komitee davon überzeugt ist, dass die Spezifikation des Features in der TS so weit ausgereift ist, dass es die Fertigstellung des nächsten C++-Standards nicht gefährdet, wird die TS an den entsprechenden Stellen im Entwurf des internationalen Standards eingefügt.

Ein konkretes Beispiel wäre das schon vor einiger Zeit vorgestellte Feature "Design by Contract", zu dem drei Vorschläge und vier Gegenvorschläge eingingen. Es fand noch keine abschließende Zustimmung, da noch nicht alle Experten es für ausgereift hielten. Nun wartet der C++20-Zug nicht auf die Fertigstellung des Features, sondern rollt gemäß Fahrplan aus, und das Feature muss auf den nächsten Standard warten. Um das Genfer Ticket für C++23 zu erhalten, muss es erst alle Phasen des Standardisierungsprozesses durchlaufen haben.

Vor dem Corona-Ausbruch im Frühjahr 2020 traf sich das Standardkomitee regelmäßig. Diese Treffen fanden früher zweimal jährlich und vor der Verabschiedung eines neuen Standards auch dreimal im Jahr statt. Seit 2016 gab es aufgrund der massiv gestiegenen Aktivität jährlich sogar drei Sitzungen. Da das US-amerikanische Komitee ANSI (American National Standards Institute) mit Abstand die meisten Experten stellt, sind die ISO-Sitzungen aus praktischen Gründen zugleich auch Sitzungen des entsprechenden ANSI-Komitees. Daher fanden die Sitzungen traditionellerweise auch mindestens einmal pro Jahr in den USA und mindestens einmal in einem anderen Land statt.

Aufgrund der im März von der Regierung Trump eingeführten Reisebeschränkungen waren die letzten drei Sitzungen in Europa verortet (Köln, Belfast, Prag), und eine geplante vierte (in der bulgarischen Hafenstadt Varna) wurde nur wegen der Pandemie verschoben. Bei den letzten Sitzungen war typischerweise etwa ein Dutzend Nationen vertreten, darunter Experten aus Bulgarien, Deutschland, Finnland, Frankreich, Großbritannien, Kanada, den Niederlanden, Polen, Russland, Spanien, der Schweiz, der Tschechischen Republik und den USA. Dies mag im Verhältnis zu den insgesamt 165 Mitgliedsstaaten als wenig erscheinen, stellt aber schon eine Verbesserung zur Vergangenheit dar, als sich nur sieben bis acht Nationen aktiv an der C++-Standardisierung beteiligt hatten und osteuropäische Länder noch nicht vertreten waren.

Die Sitzungen dauern immer von Montagmorgen bis Samstag gegen Mittag. Während der Eröffnung werden kurz die relevanten Richtlinien umrissen, alle stimmberechtigten Teilnehmer verabschieden das Protokoll der vorigen Sitzung und einzelne Teilnehmer berichten über Aktivitäten des Komitees und anderer relevanter Organisationen. Daraufhin werden die Diskussionsrunden der Arbeitsgruppen im Komitee organisiert. Diese Diskussionsrunden erstrecken sich dann bis Freitag. Die Arbeitsgruppenleiter reichen abschließend ihre sogenannten Motions ein, das sind formale Anträge auf Änderungen am Standard. Für solche Änderungen muss es in der Arbeitsgruppe einen deutlichen Konsens geben. Dafür sind mindestens zwei Drittel an Jastimmen erforderlich, angestrebt ist sogar eine Zustimmungsrate von drei Vierteln.

Am Samstag findet unter Leitung des Vorsitzenden die offizielle Abstimmung mit dem gesamten Komitee statt. Früher war das ein zweistufiges Verfahren: Erst erfolgte die Abstimmung der US-amerikanischen Delegation und danach eine Abstimmung nach Ländern. Herb Sutter als der derzeitige Vorsitzende hat dieses Vorgehen vor einigen Jahren dahin gehend geändert, dass zunächst eine Abstimmung unabhängig von der Staatszugehörigkeit stattfindet (wobei in der US-Delegation nur eine Stimme pro Institution und nicht pro Experte zulässig ist). Das Ziel dieser Abstimmung ist es, zu ermitteln, ob der vom Komitee erarbeitete Standardentwurf gute Chancen auf Akzeptanz durch die nationalen Komitees hat.

Falls der Vorsitzende feststellt, dass die Gegenstimmen von Vertretern mehrerer Nationen kommen, findet noch eine in Länder untergliederte Abstimmung statt. Letzteres ist jedoch selten der Fall und kam 2019 in Köln nicht vor. Auch hier ist ein deutlicher Konsens erforderlich, das heißt zwei Drittel an Jastimmen sowohl unter den Experten als auch unter den Nationen. Um das mühsame Auszählen der Stimmen zu vermeiden, fragt der Vorsitzende zunächst nach Einwänden gegen eine einstimmige Zustimmung und klärt damit, ob eine Abstimmung überhaupt erforderlich ist.