Wie geht die Standardisierung von C++?

Seite 2: Internationaler Standardisierungsprozess

Inhaltsverzeichnis

Die International Organization for Standardization mit Sitz in Genf ist die Vereinigung nationaler Normungsorganisationen. Ihr Gründungsjahr war 1947, die offiziellen Amts- und Arbeitssprachen sind bis heute britisches Englisch, Französisch und Russisch. Derzeit sind 165 Länder Mitgliedsstaaten bei der ISO. Im Subkomitee für Programmiersprachen sind etwa 21 Länder als stimmberechtigte Mitglieder vertreten, wobei die genaue Zahl Schwankungen unterliegt (s. Abb. 2). Weitere Länder nehmen als Beobachter an den Standardisierungsprozessen teil, auch Organisationen wie Ecma International und die Linux Foundation haben Vertreter bei der ISO (mehr Informationen finden sich im Kasten "Subkomitee für Programmiersprachen").

Weltkarte mit den ISO-Mitgliedsstaaten, Sommer 2020 (Abb. 2)

(Bild: iso.org/members.html)

Um beim Übersetzen des Organisationsnamens nicht unterschiedliche Akronyme in verschiedenen Sprachen zu haben, hat man sich auf die gemeinsame Kurzform ISO – vom griechischen "isos" für "gleich" – verständigt. In der Zusammenarbeit mit den nationalen Komitees arbeiten von der ISO anerkannte Experten Entwürfe aus, und die ISO schlägt sie den entsprechenden Expertengremien der nationalen Komitees vor. In vielen Fällen spiegeln die Strukturen der nationalen Organisationen die der ISO wider.

"Planmäßige Abfahrt" – Herb Sutters Zugmodell

"After C++11, several members wanted a shorter cycle and Herb Sutter, the convener, suggested we adopt a train model. That is, the train leaves at its scheduled time and anyone not on board will have to wait for the next scheduled departure. People liked that and there was a long discussion about what would be the right interval between standards revisions."

– Bjarne Stroustrup, Thriving in a Crowded and Changing World, S. 21 [1]

Die Entwicklung eines internationalen Standards erfolgt in mehreren Phasen. In der anfänglichen Antragsphase wird eine Projektbeschreibung – New Work Item Proposal (NP) – verfasst und den nationalen Gremien vorgeschlagen. Stimmen mindestens fünf Nationen dem Projekt zu, beginnt die offizielle Arbeit am Standard. In der folgenden Komiteephase werden Committee Drafts (CDs) erarbeitet, die eine Zustimmungsrate von mindestens zwei Dritteln der zur Abstimmung berechtigten nationalen Komitees erfordern. Nicht alle nationalen Komitees sind bei den Programmiersprachen aktiv, und die Programmiersprachen haben auch unterschiedlich stark besetzte Ausschüsse. Daher nehmen deutlich weniger Nationen an der Abstimmung teil, als insgesamt in der ISO vertreten sind. In der Vergangenheit stimmten bei den Standardisierungen von C++ etwa zehn bis zwölf Nationen ab, künftig werden es womöglich mehr.

Daneben können und sollen die nationalen Komitees (unabhängig von ihrem Status als stimmberechtigtes oder beobachtendes Mitglied) Kommentare zu erwünschten und erforderlichen Änderungen einbringen. Die Experten der ISO müssen auf diese Kommentare reagieren und versuchen, den Standard entsprechend nachzubessern. In Einzelfällen kommt es auch vor, dass die ISO-Experten die im nationalen Kommentar vorgeschlagene Änderung nach einer Prüfung zurückweisen, da sie zu der Erkenntnis gelangt sind, dass der Status quo besser oder die Änderung noch nicht ausgereift ist. In einem größeren Projekt – wie bei der Standardisierung von C++ – können auch mehrere aufeinanderfolgende CDs verfasst werden.

In der Überprüfungsphase wird ein Draft for International Standard (DIS) erstellt, der neben den zwei Dritteln an Zustimmung der stimmberechtigten Teilnehmer der jeweiligen Abstimmung auch erfordert, dass nicht mehr als ein Viertel der nationalen Komitees dagegen stimmt. Wenn es im Idealfall keine Gegenstimmen gibt, kann das Dokument die letzte Phase überspringen und wird direkt als internationaler Standard veröffentlicht. In dieser Phase befand sich C++20, während die Printversion dieses Artikels entstand: Die Mitglieder des Ausschusses für Programmiersprachen hatten bis zum 14. August 2020 Zeit, im Namen des Deutschen Instituts für Normung (DIN) über den C++20-Draft (DIS) mit der offiziellen Dokumentenbezeichnung N2638 abzustimmen.

Soweit sie an der Abstimmung teilgenommen haben, haben alle Stimmberechtigten für den Standard gestimmt, ohne weitere Kommentare abzugeben. Der Entwurf (DIS) von C++20 wurde am 4. September 2020 einstimmig angenommen und hat damit dem Vorsitzenden der zuständigen WG21-Arbeitsgruppe Herb Sutter zufolge die endgültige technische Genehmigung erhalten. Die finale redaktionelle Überarbeitung und formelle Veröffentlichung erfolgte Ende 2020.

Hätte der DIS auf diesem Weg nicht genügend Zustimmung erfahren, wäre der Prozess in die Bestätigungsphase gegangen, in der die stimmberechtigten Mitglieder das Standarddokument als Final Draft for International Standard (FDIS) nicht mehr kommentieren, sondern nur noch bestätigen oder ablehnen dürfen. Die Kriterien sind die gleichen wie beim DIS: Mindestens eine Zweidrittelmehrheit an Zustimmungen und höchstens ein Viertel an Ablehnungen (nicht mehr als derzeit fünf Gegenstimmen) führen zur Annahme des vorgeschlagenen Standards.