事件内容
C++26国际标准草案DIS投票未过,40.9%反对票创下SC22语言史先例
Go 分类 全部 人工智能硬件商业安全开发工具云计算其他 首页 / 开发工具 C++26国际标准草案DIS投票未过,40.9%反对票创下SC22语言史先例 开发工具 2026年10月26日 作者:Ada Vector 版权所有:ic.work 核心摘要 Summary C++26国际标准草案在ISO投票中仅获60%赞成,因契约机制争议遭遇史无前例的滑铁卢。静态反射与std::execution等无争议特性被迫连坐延期,暴露出专家共识与国家级安全焦虑的深层脱节。 01 史上首次流产:门槛双双失守 02 契约之争:未定义行为治理的路线决裂 03 象牙塔共识与国家级投票的技术断层 04 四条岔路与巴西会议的最后拆车 内容导图 Mind Map - 100% + C++26草案流产 历史性否决引爆交付危机
历经四十多年演化、支撑全球核心基础设施的 C++ 遭遇了标准化历史上最严重的一次程序危机。在 2026 年 10 月 23 日截止的 ISO 国际标准草案(DIS)投票中,C++26 成为 C++ 历史上、也是 ISO/IEC JTC 1/SC 22 下辖所有编程语言标准中,第一个在 DIS 阶段折戟的草案。
这意味着工业界期待已久的静态反射、并发框架 std::execution、标准库硬化机制与契约(Contracts)全数被卡在未获批准的草案中。阻击这场技术换代的导火索,并不是那些改动庞大的编译器基础设施,而是关于契约机制(Contracts)究竟如何保证安全的技术哲学大决裂。
按照 ISO/IEC 导则程序,一份国际标准草案若想通过,必须同时满足两个硬性条件:第一,参与表决的正式成员(P 成员)赞成票比例不得低于三分之二(66.7%);第二,所有投票体中的反对票比例不得超过 25%。
C++26 两条线全未守住。在 20 个参与投票的 P 成员中,赞成票仅有 12 票,赞成率仅为60%,距离及格线还差 2 票。而在全部 22 个投票体中,有 9 个国家直接投出了反对票,反对率高达40.9%,远超 25% 的上限。在 ISO 体系下,触碰其中任意一条红线即可判为不通过,而 C++26 却以双重不达标的悬殊差距滑铁卢。
投下反对票的 9 个国家包括丹麦、芬兰、伊朗、意大利、日本、卢森堡、罗马尼亚、西班牙与瑞典,且每一国都附带了正式的技术抗议意见。法国与爱尔兰选择弃权,但同样递交了审查报告;美国与波兰则保持弃权。负责 C 语言标准的委员会召集人 Robert Seacord 公开表示,在其记忆中 SC22 下辖从没有任何一个语言草案遭遇这种败局。曾经在 WG21 领导小组中任职的 Daveed Vandevoorde 更是直言,以往的 C++ 草案在这一阶段甚至从未收获过哪怕一张反对票。
这次表决受挫的致命影响,在于 ISO 的全包表决机制。尽管业界的怨气几乎全冲着契约机制而去,但与契约一同被锁在草案里的,还有筹备多年的静态反射机制以及革新异步并发底层的 std::execution。因为草案未获批准,整个 C++26 的正式交付时间表全线停摆。
引发 9 国联手否决的真正核心,是重新打包进草案的契约设计案 P2900R14。契约并非新概念,早在 2019 年 C++20 定稿前夕的科隆会议上,委员会就通过 P1823R0 在最后时刻强行剔除了当时的契约方案。如今时隔六年,历史近乎原样重演。
争议的焦点在于:在工业界对内存安全极度敏感的当下,契约到底是一个用来写文档的可选检查器,还是一面消除未定义行为(Undefined Behavior, UB)的坚固护栏?
在现行 P2900 草案里,代码允许开发者为函数定义前置条件、后置条件和断言。但草案同时定义了四种求值语义:ignore(忽略)、observe(观察)、enforce(强制检查)以及 quick-enforce。编译器(如 GCC 16)通过编译开关来决定启用哪种模式。库设计者希望契约像编译期的 Concepts 一样,在运行时充当机器可读的接口契约与文档说明;但语言缔造者与系统安全阵营对此深恶痛绝。
C++ 之父 Bjarne Stroustrup 联合 J-Daniel Garcia、Vinnie Falco、John Spicer 与 Ville Voutilainen 共同提交了编号为 P4334R0 的抗议文件,直指契约设计存在根本性缺陷。另一份编号为 P4332R0 的报告更尖锐地指出:允许被关闭或仅被观察的可选检查,根本不配作为消除未定义行为的基础,直接站在了 P3100 演进方向的对立面。
反对派的逻辑非常务实:一旦契约求值在生产发布构建中被静默忽略或设置为观察,原本依赖前置条件成立的代码段就可能在违规状态下继续跑下去,导致更诡异的内存崩溃与未定义行为。在外部舆论和监管机构对内存安全群起发难的环境下,C++ 委员会若推出一套在违规时可以不退出的半吊子安全机制,无异于自毁长城。
这场事故最为反常的地方,在于专家委员会内部的技术表决与国家标准化机构的行政投票发生了戏剧性的脱节。
在 WG21 委员会内部,支持契约的派系并非弱势。在早期的关键节点上,P2900R14 曾以 100 票赞成、14 票反对(12 票弃权)的悬殊比例过审;在推进到 DIS 的投票中,专家们更是投出了 114 票赞成对 12 票反对(3 票弃权)的压倒性共识。支持派随后在 P4433R0 中明确控诉:反对派在技术委员会内部全面落败后,绕过了数百名专家的集体智慧,转而在各个国家成员体层面进行游说与程序性阻击。
这种脱节暴露了 ISO 既有治理体系在面对现代软件技术演化时的巨大摩擦。国家标准体层面的投票并不完全由身处一线编写代码的工程师决定,甚至极易受到流程机制的偶然性摆布。
以最终投出弃权票的波兰为例,其在波兰标准化委员会 KT 331 内展开表决时,险些因为投票人数达不到法定门槛(Quorum)而彻底废票。由于部分具有投票权的委员早已跳槽离职,联络邮箱频遭退信,导致活跃成员在最后几天不得不在社交平台上四处寻人补票。这种脆弱的人员更迭与程序规则,最终反噬了技术共识本身。
根据 JTC 1 导则 2.6.4(c) 条款,面对被否决的 DIS 草案,标准委员会面前只剩下四条走廊:
死局的解铃地落在了2026年11月16日至21日的巴西布济乌斯(Búzios)全会上。这是投票结果公布后 WG21 委员会各方专家的首次面对面交锋。
目前的风向正在迅速向拆车妥协倾斜。P4238R1 提案作者之一 J. Daniel Garcia 已经公开建议:最现实的短期解决方案就是切除引发重大争议的那一个特性,换取标准其余部分的快速过审。Daveed Vandevoorde 同样倾向于建议从草案中全面剔除契约,只做微调以保留标准库硬化机制。
从工程现实来看,生产环境不必过度惊慌。GCC 16 目前虽然支持 -std=c++26 并在其中提供了实验性的契约支持,而 Clang 在 -std=c++2c 下甚至尚未合并契约实现。编译器的实验性支持不等于工业界的规范承诺。根据以往经验,上一代 C++23 直到 2024 年 10 月 19 日才最终作为 ISO/IEC 14882:2024 正式出版;因此即便本次修改导致最终版本拖延至 2027 年才能走完印制流程,规范名依然大概率保留为 C++26。
两院撕扯,玉石俱焚;所谓安全护栏,终究难敌共识塌方。
Ghostty 1.4.0 历时 7 个月正式发布,成为首个 100% 完整实现 Kitty 图形协议的非 Kitty 终端,并将回滚缓冲区的物理内存占用削减 70% 至 90%。伴随全功能演进而来的是集中披露的 10 个安全漏洞,暴露出富功能终端正面临类似浏览器的远程攻击风险,旧版用户需立即升级。
开源项目 otya128/winevdm(OTVDM)通过内置 CPU 模拟器与 Wine API 转换层,无需安装 Windows 3.1 虚拟机即可把 16 位老程序直接映射为 64 位 Windows 桌面上的原生窗口。它借用微软内置的安装程序重定向机制解决了 32 位老软件被 16 位安装壳卡死的问题,但每次 Windows 11 版本更新仍在考验这套跨代兼容方案的脆弱边界。
webframe 通过复用系统内置 Webview 实现了极致轻量化,但评估发现其在内存占用、网络沙箱隔离及生产级任务兼容性上存在明显短板,目前更像极客玩具。
Nietzschian Debugger 通过拒绝直接给出修复方案,转而利用苏格拉底式追问强制开发者自行排障。这类对抗式教学法引发热议,实证研究则提示其可能增加认知负荷与重复错误。
微软推出 TSP 标准协议,旨在将 Pylance 的类型分析逻辑与编辑器解耦。这一举措不仅提升了异步分析性能,更通过兼容 Pyrefly 等开源后端,在加固 VS Code AI 编码平台地位的同时,化解了闭源生态的行业争议。
前GitHub首席执行官Thomas Dohmke正式推出专为AI编程智能体设计的代码托管平台Entire,以评分制回路替代传统代码审查,并宣称并发写入吞吐达GitHub的89倍。这不仅是一次工具升级,更是软件工程信任链从人类逐行审查向模型自动裁决的根本位移。
© 2026 ic.work. All Rights Reserved.