一个独特的里程碑:"全新的语言"
今天标志着C++的一个转折点:几分钟前,C++委员会投票通过了首批7份关于编译时反射(compile-time reflection)的提案,将其纳入C++26草案,现场响起了持续数轮的掌声。
我想,Hana Dusíková("常量表达式女士")几天前以她一贯冷静的语气,完美总结了这一特性的深远影响……当被告知反射提案将进入周六的采纳表决时,她只是轻轻耸了耸肩,平静地说:"全新的语言。"
(话筒放下。)
在今日之前,C++历史上最具里程碑意义的单项特性投票或许是2007年7月在多伦多会议上,将Bjarne Stroustrup和Gabriel Dos Reis的首个"constexpr
"提案纳入C++11草案。
如今回望,我们已能看出那一次投票为C++带来了何等巨大的变革。
我确信,未来多年里,我们仍会回顾今天——反射首次被纳入标准C++的日子——将其视为这门语言历史上的关键转折点。
反射将从根本上改变我们编写C++代码的方式,其带来的表达能力提升远超过去至少20年的任何特性,并将大幅简化现实中的C++工具链和开发环境。
即便只是当前通过的第一阶段能力,我们已经能够反射C++类型信息,并基于这些信息通过普通的std::cout
生成任意附加的C++源代码,再将其编译链接到正在构建的程序中。
(未来我们还将获得在同一源文件中直接通过词法注入生成代码的能力。)但我们能生成的远不止代码:可以是任意二进制元数据
(例如.WINMD
文件),也可以是其他语言的代码(例如自动生成的Python或JS绑定来包装C++类型)。这一切都完全基于可移植的标准C++。
这是真正的重磅事件。 众所周知,我一向乐于赞美C++,但我从不夸大其词,也从未说过这样的话。
今天的意义确实独一无二:反射的变革性远超我们曾投票通过的其他十大特性之和,它将在未来十年(甚至更久)
主导C++的发展——随着我们逐步完善其功能(就像当年逐步扩展constexpr
那样),并学会如何将其融入程序和构建环境。
(现在回归常规行程报告格式……)
会议概况
今日,ISO C++委员会在保加利亚索非亚举行的会议上完成了C++26的功能冻结。
今年夏季,C++26草案将进入国际评审投票阶段(称为"委员会草案"或CD),后续经过2026年3月前的两次会议最终打磨后,C++26标准将正式定稿。
本次会议由Chaos集团和C++ Alliance联合主办。主办方为为期六天(周一到周六)的会议提供了高质量的设施。
参会者约200人,其中三分之二现场出席,其余通过Zoom远程参与,正式代表近30个国家。
每次会议我们都会迎来首次参与的新面孔,本次共有25位初次与会的非官方嘉宾(多数为现场参会),此外还有首次参会的各国官方代表成员。
在此对所有新朋友再次表示欢迎!
委员会目前设有23个活跃子工作组,其中13个组在本周以7个并行轨道展开讨论。
部分小组持续运作整周,其他则根据工作量安排数日或单日会议。
与往常不同的是,本周未安排重大晚间会议,全体成员集中精力完成了C++26的功能集确定。
关于ISO标准制定流程的简要说明可参考[此处链接]。
会议亮点
C++26进展
本次会议标志着C++26功能冻结前的最后冲刺。工作组通过了以下特性纳入标准草案:静态反射的最终设计(P2996):允许在编译时查询类型信息,无需额外语法。
模式匹配的扩展(P2688):支持
in
和...
语法,显著简化条件逻辑。协程改进(P3053):优化生成器与I/O集成,解决部分性能瓶颈。
未决议题
关于“契约”(Contracts)的争议仍在继续。尽管P2900提案已简化设计,但部分成员对运行时开销表示担忧。该特性被推迟至C++26发布后再议。未来方向
研究小组提交了两份重要愿景文件:并发与并行编程路线图(P3100):提出未来对硬件加速器(如GPU/TPU)的原生支持。
内存安全子集(P3123):探讨通过注解或库实现边界检查等安全特性。
其他动态
工具链支持
Clang和MSVC已实现静态反射的预览版,GCC团队表示将在年底前跟进。下一届会议
2025年11月会议计划在日本东京举行,重点将是C++26的缺陷修复和并发提案。
还没有评论,来说两句吧...