Skip to content

Breaking cases

Listed in BREAKING_KINDS — runtime ABI break.

107 case(s). ← back to all examples

Case Title Verdict Category
case01_symbol_removal Symbol Removal 🔴 BREAKING Breaking
case02_param_type_change Parameter Type Change 🔴 BREAKING Breaking
case06_visibility Symbol Visibility Leak 🔴 BREAKING Breaking
case07_struct_layout Struct Layout Change 🔴 BREAKING Breaking
case08_enum_value_change Enum Value Change 🔴 BREAKING Breaking
case09_cpp_vtable C++ Vtable Change 🔴 BREAKING Breaking
case10_return_type Return Type Change 🔴 BREAKING Breaking
case11_global_var_type Global Variable Type Change 🔴 BREAKING Breaking
case12_function_removed Function Removed from Shared Library 🔴 BREAKING Breaking
case14_cpp_class_size C++ Class Size Change 🔴 BREAKING Breaking
case17_template_abi Template Instantiation ABI Change 🔴 BREAKING Breaking
case18_dependency_leak Dependency ABI Leak 🔴 BREAKING Breaking
case19_enum_member_removed Enum Member Removed 🔴 BREAKING Breaking
case20_enum_member_value_changed Enum Member Value Changed 🔴 BREAKING Breaking
case21_method_became_static Method Became Static 🔴 BREAKING Breaking
case22_method_const_changed Method Const Qualifier Changed 🔴 BREAKING Breaking
case23_pure_virtual_added Virtual Method Became Pure Virtual 🔴 BREAKING Breaking
case24_union_field_removed Union Field Removed 🔴 BREAKING Breaking
case26_union_field_added Union Field Added (Size Grows) 🔴 BREAKING Breaking
case28_typedef_opaque Typedef and Opaque Type Changes 🔴 BREAKING Breaking
case30_field_qualifiers Field Qualifier Changes (const, volatile) 🔴 BREAKING Breaking
case33_pointer_level Pointer Level Change 🔴 BREAKING Breaking
case36_anon_struct Anonymous Struct/Union Change 🔴 BREAKING Breaking
case37_base_class Base Class Changes 🔴 BREAKING Breaking
case38_virtual_methods Virtual Method Changes 🔴 BREAKING Breaking
case39_var_const Variable Const Change 🔴 BREAKING Breaking
case40_field_layout Field Layout Changes 🔴 BREAKING Breaking
case41_type_changes Type-Level Changes 🔴 BREAKING Breaking
case42_type_alignment_changed Type Alignment Changed (standalone alignas) 🔴 BREAKING Breaking
case43_base_class_member_added Base Class Member Added 🔴 BREAKING Breaking
case44_cyclic_type_member_added Cyclic Type Member Added 🔴 BREAKING Breaking
case45_multi_dim_array_change Multi-Dimensional Array Element Type Change 🔴 BREAKING Breaking
case46_pointer_chain_type_change Pointer Chain Type Change 🔴 BREAKING Breaking
case48_leaf_struct_through_pointer Leaf Struct Change Propagated Through Pointer 🔴 BREAKING Breaking
case53_namespace_pollution Namespace Pollution (Generic Symbol Names) 🔴 BREAKING Breaking
case55_type_kind_changed Type Kind Changed (struct → union) 🔴 BREAKING Breaking
case56_struct_packing_changed Struct Packing Changed (pragma pack) 🔴 BREAKING Breaking
case57_enum_underlying_size_changed Enum Underlying Size Changed 🔴 BREAKING Breaking
case58_var_removed Global Variable Removed 🔴 BREAKING Breaking
case59_func_became_inline Function Became Inline (outlined → inline) 🔴 BREAKING Breaking
case60_base_class_position_changed Base Class Position Changed (Multiple Inheritance Reorder) 🔴 BREAKING Breaking
case63_bitfield_changed Bitfield Width Changed 🔴 BREAKING Breaking
case64_calling_convention_changed Calling Convention Changed 🔴 BREAKING Breaking
case65_symbol_version_removed Symbol Version Removed 🔴 BREAKING Breaking
case66_language_linkage_changed Language Linkage Changed (extern "C" removed) 🔴 BREAKING Breaking
case67_tls_var_size_changed TLS Variable Size Changed 🔴 BREAKING Breaking
case68_virtual_method_added Virtual Method Added to Non-Virtual Class 🔴 BREAKING Breaking
case69_trivial_to_nontrivial Trivially Copyable to Non-Trivial (Calling Convention Change) 🔴 BREAKING Breaking
case70_flexible_array_member_changed Flexible Array Member Element Type Changed 🔴 BREAKING Breaking
case71_inline_namespace_moved Inline Namespace Moved 🔴 BREAKING Breaking
case72_covariant_return_changed Covariant Return Type Changed 🔴 BREAKING Breaking
case73_typedef_underlying_changed Typedef Underlying Type Changed 🔴 BREAKING Breaking
case74_detail_base_class_changed Internal detail:: base class layout change leaks via public API 🔴 BREAKING Breaking
case75_detail_embedded_by_value Internal detail:: Struct Embedded by Value 🔴 BREAKING Breaking
case76_detail_pimpl_vtable_changed Internal detail:: Polymorphic Base Vtable Change 🔴 BREAKING Breaking
case77_detail_templated_base_changed Internal detail:: Templated Base Class Layout Change 🔴 BREAKING Breaking
case78_task_arena_attach_tag task_arena::attach Tag Type Replaces Enum 🔴 BREAKING Breaking
case79_missing_template_instantiation Missing Template Instantiation in Shipped Binary 🔴 BREAKING Breaking
case80_pimpl_shared_to_unique Pimpl Alias Switched from shared_ptr to unique_ptr 🔴 BREAKING Breaking
case81_serialization_tag_reassigned Serialization Tag ID Reassigned 🔴 BREAKING Breaking
case82_sycl_overload_set_removed SYCL Overload Set Removed (DPC++ Build Withdrawn) 🔴 BREAKING Breaking
case85_internal_template_signature_changed Internal Template Signature Changed 🔴 BREAKING Breaking
case86_tag_struct_renamed Tag Struct Renamed (empty class re-mangling) 🔴 BREAKING Breaking
case87_default_template_arg_changed Default Template Argument Changed 🔴 BREAKING Breaking
case88_cpo_kind_changed CPO kind changed (BREAKING) 🔴 BREAKING Breaking
case89_inline_accessor_renamed_pimpl_member Inline Accessor References Renamed Pimpl Member 🔴 BREAKING Breaking
case94_empty_tag_gained_state Empty Tag Gained State 🔴 BREAKING Breaking
case95_allocator_nested_typedef_removed Allocator Nested-Typedef Removed 🔴 BREAKING Breaking
case97_api_depends_on_consumer_env API Depends on Consumer Environment 🔴 BREAKING Breaking
case100_experimental_removed_without_replacement Experimental Declaration Removed Without Replacement 🔴 BREAKING Breaking
case101_inline_namespace_version_bumped Inline Namespace Version Bumped 🔴 BREAKING Breaking
case102_frozen_runtime_signature_changed Frozen Runtime Signature Changed 🔴 BREAKING Breaking
case104_glibcxx_dual_abi_flip libstdc++ Dual-ABI Flip 🔴 BREAKING Breaking
case107_task_scheduler_init_removed task_scheduler_init Removed (historical ABI break) 🔴 BREAKING Breaking
case108_task_class_removed task Class Removed (historical ABI break — vtable angle) 🔴 BREAKING Breaking
case109_flow_graph_policy_renames flow::graph Policy Tag Renames 🔴 BREAKING Breaking
case110_concurrent_unordered_map_api_drift concurrent_unordered_map API Drift 🔴 BREAKING Breaking
case112_lp64_ilp64 LP64 → ILP64 Integer-Model Switch (oneMKL MKL_INT 32→64) 🔴 BREAKING Breaking
case113_abi_tag_changed ABI-tag set change ([abi:cxx11] lost on a single symbol) 🔴 BREAKING Breaking
case114_char8t_migration char8_t Migration (C++20 char-family → char8_t) 🔴 BREAKING Breaking
case115_bit_int_width_changed _BitInt(N) Width Change (C23 64 → 128) 🔴 BREAKING Breaking
case116_atomic_qualifier_changed _Atomic Qualifier Added (C11) 🔴 BREAKING Breaking
case117_no_unique_address [[no_unique_address]] Layout Overlay (no dedicated ChangeKind) 🔴 BREAKING Breaking
case121_kernel_btf_struct_field_added Kernel BTF Struct Field Growth 🔴 BREAKING Breaking
case126_sycl_device_impl_ptr SYCL device Impl Pointer — shared_ptr → Raw Pointer 🔴 BREAKING Breaking
case127_data_object_size_changed Exported Data Object Size Changed 🔴 BREAKING Breaking
case129_struct_return_convention Struct-Return Convention Change 🔴 BREAKING Breaking
case139_symbol_version_node_removed Symbol Version Node Removed 🔴 BREAKING Breaking
case140_empty_base_optimization_lost Empty Base Optimization Lost (base subobject moved) 🔴 BREAKING Breaking
case141_versioned_symbol_scheme Versioned-Symbol Scheme (library-wide rename) 🔴 BREAKING Breaking
case142_vtable_slot_count_binary_only Vtable Slot Count Changed (detected from a stripped binary) 🔴 BREAKING Breaking
case166_ref_qualifier_added Method Ref-Qualifier Added (str()str() &) 🔴 BREAKING Breaking
case167_base_became_virtual Base Class Became Virtual (: public Device: public virtual Device) 🔴 BREAKING Breaking
case168_virtual_method_devirtualized Virtual Method Devirtualized (flush() leaves the vtable) 🔴 BREAKING Breaking
case172_vtable_thunk_offset_changed Vtable Thunk Offset Changed (detected from a stripped binary) 🔴 BREAKING Breaking
case173_vtt_slot_count_changed VTT Slot Count Changed (detected from a stripped binary) 🔴 BREAKING Breaking
case174_secondary_vtable_group_changed Secondary Vtable Group Changed 🔴 BREAKING Breaking
case175_kabi_crc_changed kABI CRC Changed 🔴 BREAKING Breaking
case176_kabi_symbol_namespace_changed kABI Export Namespace Changed 🔴 BREAKING Breaking
case177_long_double_abi_changed long double ABI Changed 🔴 BREAKING Breaking
case182_accidental_export_removed_still_breaking Accidental Export Removed — Still Breaking Under Public-Header Scoping 🔴 BREAKING Breaking
case187_public_struct_private_field_type Public Struct Field Retyped to an Internal Type 🔴 BREAKING Breaking
case188_public_class_private_base_class Public Class Gains a Private Base Class 🔴 BREAKING Breaking
case189_public_function_private_parameter_type Public Function Parameter Retyped to an Internal Type 🔴 BREAKING Breaking
case191_header_only_graph_field_type Public Struct Gains a Field of a Private Type (Header-Only Graph) 🔴 BREAKING Breaking
case192_call_graph_break_survives_suppression Call-Graph-Reachable Break Survives Suppression 🔴 BREAKING Breaking
case193_ordinary_exported_fn_call_not_reachable Ordinary Exported Function's Internal Call Is Not Public-Reachable 🔴 BREAKING Breaking