C++ 目前正面临一场身份危机,其特征是两类截然不同的用户群之间日益加剧的裂痕:一类是依赖自动化工具和版本化源码管理的“现代”组织,另一类则是将严格的向后兼容性视为重中之重、“遗留”系统的用户。
C++ 委员会近期重申了 ABI 稳定性并拒绝了“传染性”安全标注,这标志着委员会向后者靠拢,实质上是优先考虑了现状。这导致大型科技公司感到疏远,并对该语言的演进失去信心,其中一些公司(如 Google)已开始探索继任语言。
作者认为,委员会对“安全配置(Safety Profiles)”和“模块(Modules)”等即插即用特性的关注,是专门为了迁就那些无法承担大规模重构的遗留代码库。归根结底,这种分歧并非源于语言本身,而是源于缺乏标准化、高质量的工具和构建系统。通过拒绝打破 ABI 并无视对现代基础设施的需求,委员会试图维持这两个互不兼容阵营的共存,这可能会阻碍语言的发展,并拉大那些能够维护现代 C++ 的群体与困在遗留生态系统中的群体之间的差距。
像 Alive2 这样用于验证 LLVM 编译器优化的形式化验证工具,是容易出现缺陷的复杂系统。“误报”相对容易检测,但“漏报”(即工具错误地批准了无效优化)却以难以识别而著称。
作者详细介绍了两种旨在揭示这些隐藏漏洞的方法。首先,他们利用修改后的随机程序生成器 YARPGen 创建了行为已知存在差异的函数对,以检查 Alive2 是否能正确识别这些差异。其次,他们利用了超优化器 Minotaur,该工具经常调用 Alive2 来测试符号候选方案。如果 Minotaur 生成了编译错误的程序,就隐含地暴露了 Alive2 中的漏报。
尽管进行了严密的测试,但作者发现的漏报极少,这表明 Alive2 的可靠性很高。不过,他们指出这种搜索并非详尽无遗;未来的工作应侧重于对函数属性等目前测试不足的功能进行压力测试。归根结底,作者强调,对形式化验证的信任,必须像对待任何其他关键软件系统一样,通过“严苛、繁琐”的工程实践和测试来建立。
2013年一场风暴过后,平洲(Binh Chau)沉船在越南被发现,为研究9世纪末的海上贸易提供了重要窗口。该遗址最初遭到劫掠,但仍出土了一批陶瓷货物,主要包括长沙窑、越窑、邢窑及广东地区瓷器。这些瓷器与著名的唐代“黑石号”(Belitung)沉船所载类似,但年代要晚约50至70年(约公元870年代)。
至关重要的是,平洲沉船显示出东南亚的造船工艺,与“黑石号”的西亚“独桅帆船”(dhow)风格不同。货物上发现的阿拉伯语墨书题款表明,这些商品是由外籍商人在逃离中国唐末黄巢之乱(公元878年)的动荡时运载的。历史叙事表明,随着广州等中国主要港口变得不稳定,海上贸易网络出现分散,现代越南境内的区域枢纽成为中国商品的重要转运点。
尽管出土瓷器的质量较唐代鼎盛时期有所下降,但这一发现为研究唐末五代过渡时期的贸易路线变迁提供了重要证据,彰显了在区域政治动荡背景下国际贸易的韧性。