HN 日本語サマリー

← 一覧へ戻る
プログラミング

C++26 DISは否決された、C++はどのように生き残るのか?

C++26 Disapproved (andreasfertig.com)

375 pointsby thatxliner280 コメント

要約

2026年10月23日、C++26のDIS(Draft International Standard)投票が否決されるという前代未聞の事態が発生しました。これは、ISO国内委員会(NB)による投票で、特に「契約(Contracts)」機能に関する反対意見が多数を占めたことが原因です。この結果は、C++標準化プロセスにおける信頼と協力の基盤を揺るがすものであり、今後のC++の標準化に不確実性をもたらしています。

全文翻訳

C++26 DISは否決された、C++はどのように生き残るのか?

2026年10月23日、想像を絶することが起こりました。それは単なる形式的な手続きであるはずでした。C++26はISO国内委員会(NB)による投票にかけられる予定でした。選択肢は常に承認、拒否、または棄権です。コメントも許可されています。1998年以来、このプロセスは静かに、そしてスムーズに進んできました。しかし、2026年10月23日はそうではありませんでした。12週間の投票期間を経て、結果が出ました:否決!

ここで、私はC++標準化委員会のメンバーであり、同僚と共にドイツの投票を代表していることを申し添えたいと思います。ISOの規則では、特定の投票はISO内部のものであり、その結果、または結果の内訳は公開されない場合があると規定されています。この記事は私の個人的な見解です。

現状

私の知る限り、これはC++の歴史上、DIS投票が否決された初めてのケースです。ISOシステムを検索したところ、承認されなかったDISは、2006年8月11日付のISO/IEC DIS 26926 C++/CLI言語仕様の1件しか見つかりませんでした。私の検索権限がすべてを表示するには不十分である可能性もありますが、すべてのISOプログラミング言語は私に見えるはずです。ISO/IEC DIS 26926の悲しい結末:プロジェクトは中止されました。この投票の重要性を明確にするために、これを最初に言及します。

以下では、日常的なISO用語の様々な用語を使用します。 https://isocpp.org/std/iso-iec-jtc1-procedures には、ISO標準の様々な段階の概要があります。DISは最後の前の段階です。概要が示すように、3分の2の多数決が必要です。この多数決は達成されませんでした。

拒否の理由は、国内委員会(NB)から提出されたコメントから明らかです:契約(contracts)です。簡単に言えば、多くのNBがこの機能はまだリリース準備ができていないと考えています。

プロセス

ここからが複雑になります。C++標準化委員会、別名WG21は、ISOの規則に従いますが、いくつかの追加規則もあります。そのうちの1つは、新しい情報が入手可能になったらいつでも意見を聞くというものです(あるいは、そうでした)。意見が聞かれ、それでも機能が望ましく変更されなかった場合、その人は結果を尊重し、他の多くの人が同意しないことを受け入れます。

しかし、NBレベルの投票機関は他の個人で構成される場合もあり、NBは当然、異なる投票をする自由があります。

以前の慣行では、NBは新しい情報が入手された場合、またはプロセスに誤りや類似の問題が特定された場合にのみ、標準に反対票を投じていました。これは2026年10月23日に変更されました。

この複雑な状況を判断するのは困難です。C++26を契約なしで望むNBは、新しい情報があると主張しています。私自身はこの見解を共有するのは難しいと感じています。古い議論を持つ新しい論文は、私にとって新しい情報ではありません。

契約(Contracts)のC++における歴史

この機能は長い間、要望リストにありました。私は2019年にケルンで行われたC++20の会議で、当時とは異なる形式の契約が標準に含まれるのを目撃しました。同じ会議で、この機能がC++20から再び削除されたときもその場にいました。その結果、2020年から約2024年まで、契約とその様々な側面に対処するための研究グループが結成されました。その後、研究グループはその作業と提案を、言語拡張の中心的な機関である進化ワーキンググループ(EWG)に提出しました。そこで、数回の会議でさらに議論された後、多数決でC++26に含められることになりました。

次の段階として、WG21は2026年3月にC++26のドラフトについて投票しました。これには契約も含まれていました。ここでも、反対票なしではありませんでしたが、大きな多数決が達成されました。

そして、次の段階であるDISに至ります。この段階では、「いいえ」の票が十分にあり、3分の2の多数決に達しませんでした。

今後どうなるか?

大きな問題:今後どうなるのか? ISOには当然、このためのプロセスがあります。それは様々な選択肢を提供しています:

  1. 改訂されたドラフトを新しいDIS投票に提出する。
  2. 改訂されたドラフトを委員会(CD段階)に提出する。
  3. 改訂されたドラフトをテクニカル仕様として発行する。
  4. プロジェクトをキャンセルする。

これらの可能性はすべて、次期C++標準の遅延を意味します。それがまだC++26と呼ばれるかどうかは不確かですが、それははるかに小さな問題です。

すべての4つの選択肢の難しさは、WG21内で多数決が必要であるということです。しかし、このワーキンググループは、C++26を契約付きで次の投票段階に進めることを決定しました。そして、それは必要な3分の2以上の多数決でそうしました。この機能は突然現れたものではなく、長年にわたる多くの人々の作業と、おそらく個人的なコミットメントによって開発されてきました。このグループが、これまで複数回承認されてきた作業を単に放棄したいとは想像しがたいです。これは、契約に不満を持つグループにも当てはまります。このグループも、一部は代替実装にまで努力を費やしてきました。DIS投票で「いいえ」を投じた後、契約が削除されない限り結果が変わるとは想像しがたいです。

最後の選択肢であるC++26の削除でさえ、WG21での多数決が必要です。私の理解では、このステップはC++23にリバートし、変更なしでC++29に進むことを意味します。これはさらに多くの人々の作業に影響を与えるでしょう。WG21は、すでにC++26に正常に含まれている機能をC++29に組み込むというタスクを負うことになります。これは少なくとも1人の提唱者によって裏付けられたペーパーを通じてのみ可能であるため、その人がモチベーションや時間がない場合、機能が省略される可能性があります。

もちろん、投票結果の確実性は、それぞれの道が実際に取られた場合にのみ達成できます。

残念ながら、前進する方法は現在、不確実です。おそらくこれが、ISO/IEC DIS 26926がこの活動の終わりをマークした理由を説明しているのでしょう。前進するにはコンセンサスが必要です。コンセンサスには常に信頼が必要です。残念ながら、その信頼は今、揺らいでいます。

次期C++標準、ひいてはC++の未来は、現在行き詰まっています。

良いニュースは、次の会議が11月16日に開催されることです。これはほんの数日先です。最優先事項は、この行き詰まりを打破することです。これは、C++29にも影響を与える可能性が非常に高いです。実際、現在、このプロジェクトを継続する理由はありません。

私の個人的な意見

通常、私の記事は技術に焦点を当てており、個人的な意見は含まれていません。否決されたDISに関して、私はそれを大惨事とみなし、C++コミュニティ全体に申し訳なく思っているとしか言えません。契約を好むか、重要だと考えるか、あるいは大きな弱点があると見なすかに関わらず、このトピックは何年もかけて取り組まれ、現在の形で複数回多数決を得ています。「いいえ」と投票することで、主に信頼と敬意を持った協力に基づいた確立されたシステムが揺るがされました。すべてのISO標準は、単なる妥協のセットです。誰もが時々負け、誰もが時々勝ちます。全体として、結果はすべての参加者が最善を尽くしたものです。DIS投票中、敗北した側は敗北を受け入れることを拒否しました。どのように前進するかを主に決定する問題は、グループが信頼を再構築できるかどうかです。

アンドレアス