Move Slow and Break Things

Alisdair Meredith

⏱ 90 minute session
beginner
intermediate
advanced
09:30-11:00, Friday, 4th April 2025
One of the principles that has significantly contributed to the successful evolution of C++ over many years is the goal of full backward compatibility and support for existing code written, compiled, and distributed with earlier versions of the language. The commitment to preserving not just source compatibility, but also ABI (binary) compatibility is strong. However, as the language evolves and accumulates new features, we can reveal issues with existing features, and we wish to remove harmful or misleading behavior or to reduce the complexity of growing redundancy.

The C++ Standard has adopted a process to advertise that we would like to remove or change a feature in some future Standard, allowing developers to adapt to such revised rules and to update their code at a time of their choosing, rather than as a cost of updating to the latest Standard. We call this process deprecation.

Eventually, the time comes to remove those deprecated features, even at the cost of sacrificing compatibility with code that has not taken the chance to update. Since backward compatibility is important, we move slowly, over a period of years and multiple Standards, but eventually we will break things.

This session will inform the audience of all the ways their code might break or change meaning when upgrading their code to C++26 and of some remaining deprecated features that could be a consideration for the anticipated C++29.

🏷 C++26
🏷 C++29
🏷 deprecation

Alisdair Meredith

Alisdair Meredith is a software developer at Bloomberg in New York and a previous chair of the C++ Standard Committee's Library Working Group. He has been an active member of the C++ committee for almost two decades. Through a lucky coincidence, his first meeting was the kick-off meeting for the project that would become C++11, as well as fixed the contents of the original library TR. He is currently working on the BDE project, Bloomberg's open source libraries that offer a foundation for C++ development, including a standard library implementation supporting the polymorphic allocator model that was ultimately adopted in C++17.