The upcoming C++26 programming language standard may be delayed after a last-minute dispute over a security-focused feature called Contracts caused its Draft International Standard ballot to fail in October. The disagreement has split the language's technical maintainers, with one faction supporting C++ creator Bjarne Stroustrup's opposition to the feature and another arguing that blocking it this late damages the development process itself. The fight risks forcing the new version to ship in 2027 instead of its expected 2026 release date.

The October ballot for C++26's Draft International Standard—the second-to-last approval stage in the International Organization for Standardization's process—saw 13 votes in favor, 9 against, and 12 abstentions, falling short of ISO's requirement that no more than 25 percent of votes be negative. Contracts was identified as the primary reason members of national standards bodies voted against ratification. The feature would let developers add preconditions, postconditions, and assertions to their code to verify that specified conditions are met, helping catch programming mistakes that might otherwise create undefined behavior. Design by Contract has existed in languages like Ada and Eiffel for years, and developers have tried to add it to C++ for at least ten years, though it was pulled from C++20 due to worries about risky defaults.

Stroustrup and his colleagues wrote in a paper last August that the revised Contracts proposal (P2900) "aim to change the nature of C++ and are an existential threat to C++, adding complexity and bloat." According to the paper, the implementation is messy, outdated, inadequately tested, and could be better built as a library. But Andreas Fertig, a member of the C++ standardization committee, feels that the criticisms have already been addressed and that rejecting the proposal so late in the release cycle harms C++ itself. Fertig wrote that "the losing parties refused to accept their loss" and questioned whether the group can rebuild trust after an established system based on trust and collaboration was shaken.

The Contracts dispute reflects broader tensions around C++'s vulnerability to security holes, which has driven some projects to switch to Rust. Adding runtime checks might compromise C++'s core strength—speed—according to Stroustrup's concerns about the feature. Harry Bott, CEO of the C++ Alliance, told The Register that "the draft being sent back isn't a failure of the process—it's the process working as intended," though he acknowledged room for improvement. The ballot failure at such a late stage is rare in C++ history.

The ISO C++ working group WG21 meets next week in Búzios, Brazil, facing several options to resolve the standoff. They can remove Contracts from the specification entirely so the rest of C++26 can ship, though that will require undoing extensive library hardening already completed using Contracts. Another path is moving Contracts into a separate technical specification where refinement work can continue. Or they could make minor revisions, hold another vote, and hope for a different outcome. If the dispute isn't resolved quickly, the new version will likely be called C++27 rather than C++26, with the official designation becoming ISO/IEC 14882:2027 instead of 2026. The tension between security enhancements and performance optimization will likely define programming language evolution beyond this single vote. Standards bodies must weigh whether perfect consensus should trump timely delivery when technical disagreements run this deep.