Skip to content

Rule families

Every atomic, ecosystem-neutral compatibility rule the catalog demonstrates or references, deduplicated across duplicate/variant restatements and composed scenarios. See Rule coverage for the aggregate counts this table is drawn from. ← back to all examples

Rule Canonical case Duplicate(s) Variant(s) Scenario(s)
abi-tag-changed case113_abi_tag_changed — — —
access-level case34_access_level — — —
accidental-export-removed-still-breaking case182_accidental_export_removed_still_breaking — — —
allocator-nested-typedef-removed case95_allocator_nested_typedef_removed — — —
anon-struct case36_anon_struct — — —
api-depends-on-consumer-env case97_api_depends_on_consumer_env — — —
api-pointee-const-abi-neutral case186_c_api_pointee_const_abi_neutral — — —
atomic-qualifier-changed case116_atomic_qualifier_changed — — —
audit-accidental-export case143_audit_accidental_export — — case150_xcheck_export_public_pair
audit-private-header-leak case144_audit_private_header_leak — — case147_scan_depth_ladder, case151_xcheck_provider_matrix
audit-public-not-exported — — — case150_xcheck_export_public_pair
audit-rtti-for-internal case146_audit_rtti_for_internal — — —
audit-unversioned-export case145_audit_unversioned_export — — —
base-became-virtual case167_base_became_virtual — — —
base-class case37_base_class — — —
base-class-member-added case43_base_class_member_added — — —
base-class-position-changed case60_base_class_position_changed — — —
bit-int-width-changed case115_bit_int_width_changed — — —
bitfield-changed case63_bitfield_changed — — —
calling-convention-changed case64_calling_convention_changed — — —
calling-convention-changed-via-macro case209_calling_convention_changed_via_macro — — —
calling-convention-function-like-macro-changed case213_calling_convention_function_like_macro_changed — — —
calling-convention-macro-redefined-after-use case214_calling_convention_macro_redefined_after_use — — —
calling-convention-macro-undefined-after-use case212_calling_convention_macro_undefined_after_use — — —
calling-convention-respelled-via-macro case210_calling_convention_respelled_via_macro — — —
cet-protection-weakened case179_cet_protection_weakened — — —
char-signedness-flip case155_char_signedness_flip — — —
char8t-migration case114_char8t_migration — — —
class-became-final case125_class_became_final — — —
class-gained-non-virtual-method case204_class_gained_non_virtual_method — — —
class-gained-vtable-pointer case203_class_gained_vtable_pointer — — —
compat-addition case03_compat_addition — — case107_task_scheduler_init_removed, case108_task_class_removed, case110_concurrent_unordered_map_api_drift, case78_task_arena_attach_tag, case92_bundle_provider_changed
compatible-type-added — — — case108_task_class_removed, case109_flow_graph_policy_renames, case191_header_only_graph_field_type, case78_task_arena_attach_tag
concept-tightening case105_concept_tightening — — —
constructor-overload-ambiguity — — — case111_enumerable_thread_specific_lambda_ambiguity
covariant-return-changed case72_covariant_return_changed — — —
cpo-kind-changed case88_cpo_kind_changed — — —
cpp-vtable case09_cpp_vtable — — —
cpu-dispatch-isa-dropped case83_cpu_dispatch_isa_dropped — — —
ctor-became-explicit case106_ctor_became_explicit — — —
cxx-standard-floor-raised case98_cxx_standard_floor_raised — — —
cyclic-type-member-added case44_cyclic_type_member_added — — —
data-object-size-changed case127_data_object_size_changed — — —
default-argument-removed case123_default_argument_removed — — —
default-template-arg-changed case87_default_template_arg_changed — — —
dependency-leak case18_dependency_leak — — —
deprecation-documented-without-attribute case206_deprecation_documented_without_attribute — — —
detail-base-class-changed case74_detail_base_class_changed — — —
detail-embedded-by-value case75_detail_embedded_by_value — — —
detail-pimpl-vtable-changed case76_detail_pimpl_vtable_changed — — —
detail-templated-base-changed case77_detail_templated_base_changed — — —
embedded-type-size-increased case07_struct_layout — case14_cpp_class_size case121_kernel_btf_struct_field_added, case191_header_only_graph_field_type, case94_empty_tag_gained_state
empty-base-optimization-lost case140_empty_base_optimization_lost — — —
empty-tag-type-gains-state — — — case94_empty_tag_gained_state
enum-member-added case25_enum_member_added — — —
enum-member-removed case19_enum_member_removed — — —
enum-member-value-changed case08_enum_value_change — case20_enum_member_value_changed —
enum-rename case31_enum_rename — — —
enum-size-flag-flip case152_enum_size_flag_flip — — —
enum-underlying-size-changed case57_enum_underlying_size_changed — — —
env-runtime-floor-raised case170_env_runtime_floor_raised — — —
exceptions-mode-flip case130_exceptions_mode_flip — — —
executable-stack-flag-changed case49_executable_stack case136_executable_stack_removed — —
experimental-graduated case99_experimental_graduated — — —
experimental-removed-without-replacement case100_experimental_removed_without_replacement — — —
export-loss-strong-binding-stays-breaking case218_export_loss_strong_binding_stays_breaking — — —
export-loss-weak-binding-demoted case217_export_loss_weak_binding_demoted — — —
exported-function-removed case01_symbol_removal case12_function_removed — case107_task_scheduler_init_removed, case108_task_class_removed, case110_concurrent_unordered_map_api_drift, case78_task_arena_attach_tag, case82_sycl_overload_set_removed, case90_bundle_intra_dep_removed, case92_bundle_provider_changed, case93_bundle_manifest_drift, case192_call_graph_break_survives_suppression, case193_ordinary_exported_fn_call_not_reachable
exported-template-default-changed case229_exported_template_default_changed — — —
exported-type-removed — — — case107_task_scheduler_init_removed, case108_task_class_removed, case78_task_arena_attach_tag, case82_sycl_overload_set_removed
field-layout case40_field_layout — — —
field-qualifiers case30_field_qualifiers — — —
field-rename case35_field_rename — — —
flexible-array-member-changed case70_flexible_array_member_changed — — —
frozen-runtime-signature-changed case102_frozen_runtime_signature_changed — — —
func-became-inline case59_func_became_inline — — —
glibcxx-dual-abi-flip case104_glibcxx_dual_abi_flip — — —
global-var-type case11_global_var_type — — —
header-build-context-mismatch — — — case148_xcheck_header_build_mismatch
header-constant-value-changed case124_header_constant_value_changed — — —
header-only-template-default-added case224_header_only_template_default_added — — —
header-only-template-default-changed case223_header_only_template_default_changed — — —
header-only-template-default-removed case225_header_only_template_default_removed — — —
header-only-template-default-unchanged case226_header_only_template_default_unchanged — — —
hidden-friend-removed case96_hidden_friend_removed — — —
ifunc-transition case29_ifunc_transition — — —
inherited-override-reuses-slot case185_inherited_override_reuses_slot — — —
inline-accessor-renamed-pimpl-member case89_inline_accessor_renamed_pimpl_member — — —
inline-function-outlined case16_inline_to_non_inline — case47_inline_to_outlined —
inline-function-removed case157_inline_function_removed — — —
inline-namespace-moved case71_inline_namespace_moved — — —
inline-namespace-version-bumped case101_inline_namespace_version_bumped — — —
internal-declaration-identity-reconciled — — — case197_header_graph_identity_reconciled
internal-declaration-moved-reconciled — — — case196_header_graph_move_reconciled
internal-declaration-renamed-reconciled — — — case194_header_graph_rename_reconciled, case221_public_api_internal_type_renamed
internal-enum-churn-scoped case184_internal_enum_churn_scoped — — —
internal-struct-field-added-scoped case118_internal_struct_field_added_scoped — — —
internal-struct-field-removed-scoped case119_internal_struct_field_removed_scoped — — —
internal-struct-reordered-scoped case120_internal_struct_reordered_scoped — — —
internal-symbol-required-by-public-api — — — case192_call_graph_break_survives_suppression
internal-template-signature-changed case85_internal_template_signature_changed — — —
internal-version-node-churn case183_internal_version_node_churn — — —
language-linkage-changed case66_language_linkage_changed — — —
leaf-struct-through-pointer case48_leaf_struct_through_pointer — — —
long-double-abi-changed case177_long_double_abi_changed — — —
lto-mode-flip case154_lto_mode_flip — — —
method-became-static case21_method_became_static — — —
method-const-changed case22_method_const_changed — — —
missing-template-instantiation case79_missing_template_instantiation — — case93_bundle_manifest_drift
multi-dim-array-change case45_multi_dim_array_change — — —
namespace-pollution case53_namespace_pollution — — —
needed-added case138_needed_added — — —
nested-namespace-template-default-changed case227_nested_namespace_template_default_changed — — —
new-entry-point-instead-of-parameter-added case200_new_entry_point_instead_of_parameter_added — — —
no-change case04_no_change — — —
no-unique-address case117_no_unique_address — — —
noexcept-change case15_noexcept_change — — —
nontype-template-param-default-changed case228_nontype_template_param_default_changed — — —
odr-type-variant — — — case149_xcheck_odr_variant
overload-added case169_overload_added — — —
overload-added-beside-initializer-list case216_overload_added_beside_initializer_list — — —
overload-set-removed — — — case82_sycl_overload_set_removed
param-defaults case32_param_defaults — — —
param-type-change case02_param_type_change — — case91_bundle_intra_signature_drift
pimpl-shared-to-unique case80_pimpl_shared_to_unique — — —
pointer-chain-type-change case46_pointer_chain_type_change — — —
pointer-level case33_pointer_level — — —
pointer-parameter-gained-restrict case207_pointer_parameter_gained_restrict — — —
polymorphic-nonvirtual-dtor case165_polymorphic_nonvirtual_dtor — — —
preproc-conditional-field case164_preproc_conditional_field — — —
protected-visibility case51_protected_visibility — — —
public-api-gains-internal-dependency case160_public_api_internal_dep_added — case190_public_inline_function_references_internal_constant case191_header_only_graph_field_type, case194_header_graph_rename_reconciled, case195_header_graph_ambiguous_rename_not_reconciled, case196_header_graph_move_reconciled, case197_header_graph_identity_reconciled, case221_public_api_internal_type_renamed
public-class-private-base-class case188_public_class_private_base_class — — —
public-class-representation-changed — — — case126_sycl_device_impl_ptr
public-consumer-compiled-dependency-changed case222_public_consumer_compiled_dependency_changed — — —
public-function-marked-deprecated case205_public_function_marked_deprecated — — —
public-function-parameter-added case199_public_function_parameter_added — — —
public-function-parameters-reordered case201_public_function_parameters_reordered — — —
public-function-private-parameter-type case189_public_function_private_parameter_type — — —
public-header-declaration-order-changed case202_public_header_declaration_order_changed — — —
public-integer-model-width-changed — — — case112_lp64_ilp64
public-macro-removed case156_public_macro_removed — — —
public-struct-field-reorder case198_public_struct_field_reorder — — —
public-struct-private-field-type case187_public_struct_private_field_type — — case126_sycl_device_impl_ptr
public-typedef-removed case158_public_typedef_removed — — case109_flow_graph_policy_renames
public-virtual-dispatch-set-changed case219_public_virtual_dispatch_set_changed — — —
public-virtual-dispatch-set-reordered case220_public_virtual_dispatch_set_reordered — — —
pure-virtual-added case23_pure_virtual_added — — —
python-kwarg-renamed case163_python_kwarg_renamed — — —
ref-qualifier-added case166_ref_qualifier_added — — —
relro-weakened case134_relro_weakened — — —
restrict-added-to-definition-only case208_restrict_added_to_definition_only — — —
return-double-pointer-lost-const case215_return_double_pointer_lost_const — — —
return-pointee-gained-const case211_return_pointee_gained_const — — —
return-type case10_return_type — — case91_bundle_intra_signature_drift
rpath-leak case52_rpath_leak — — —
rtti-mode-flip case131_rtti_mode_flip — — —
runpath-changed case137_runpath_changed — — —
secondary-vtable-group-changed case174_secondary_vtable_group_changed — — —
serialization-tag-reassigned case81_serialization_tag_reassigned — — —
soname case05_soname — — —
soname-inconsistent case50_soname_inconsistent — — case84_bundle_soname_skew
stack-canary-removed case135_stack_canary_removed — — —
static-tls-introduced case171_static_tls_introduced — — —
struct-packing-changed case56_struct_packing_changed — — —
struct-packing-flip case153_struct_packing_flip — — —
struct-return-convention case129_struct_return_convention — — —
symbol-binding-lost-unique case180_symbol_binding_lost_unique — — —
symbol-binding-strengthened case128_symbol_binding_strengthened — — —
symbol-binding-weakened case27_symbol_binding_weakened — — —
symbol-export-namespace-changed — — — case176_kabi_symbol_namespace_changed
symbol-source-owner-changed case162_symbol_source_owner_changed — — case92_bundle_provider_changed
symbol-type-signature-hash-changed — — — case175_kabi_crc_changed
symbol-version-node-removed case65_symbol_version_removed — case139_symbol_version_node_removed —
symbol-versioning case13_symbol_versioning — — —
tag-struct-renamed case86_tag_struct_renamed — — case109_flow_graph_policy_renames
target-dependency-added case161_target_dependency_added — — —
template-abi case17_template_abi — — —
template-signature-uninstantiated case122_template_signature_uninstantiated — — —
threadsafe-statics-flip case132_threadsafe_statics_flip — — —
tls-model-flip case133_tls_model_flip — — —
tls-var-size-changed case67_tls_var_size_changed — — —
toolchain-flag-drift case103_toolchain_flag_drift — — —
trivial-to-nontrivial case69_trivial_to_nontrivial — — —
type-alignment-changed case42_type_alignment_changed — — —
type-changes case41_type_changes — — —
type-field-added-compatible case62_type_field_added_compatible — — case191_header_only_graph_field_type, case94_empty_tag_gained_state
type-kind-changed case55_type_kind_changed — — —
typedef-opaque case28_typedef_opaque — — —
typedef-underlying-changed case73_typedef_underlying_changed — — case112_lp64_ilp64
union-field-added case26_union_field_added — — —
union-field-added-compatible case26b_union_field_added_compatible — — —
union-field-removed case24_union_field_removed — — —
unnamed-type-in-public-abi case178_unnamed_type_in_public_abi — — —
used-reserved-field case54_used_reserved_field — — —
var-added case61_var_added — — —
var-const case39_var_const — — —
var-removed case58_var_removed — — case108_task_class_removed
versioned-symbol-scheme case141_versioned_symbol_scheme — — —
virtual-dispatch-contract-removed — — — case108_task_class_removed
virtual-method-added case68_virtual_method_added — — —
virtual-method-devirtualized case168_virtual_method_devirtualized — — —
virtual-methods case38_virtual_methods — — —
visibility case06_visibility — — —
vtable-slot-count-binary-only case142_vtable_slot_count_binary_only — — —
vtable-thunk-offset-changed case172_vtable_thunk_offset_changed — — —
vtt-slot-count-changed case173_vtt_slot_count_changed — — —
xcheck-public-to-internal-dependency case181_xcheck_public_to_internal_dependency — — —