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
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
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-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
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
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
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
odr-type-variant case149_xcheck_odr_variant
overload-added case169_overload_added
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
public-class-private-base-class case188_public_class_private_base_class
public-class-representation-changed case126_sycl_device_impl_ptr
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
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-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