Skip to content

Subject: Struct and type layout changes

A struct, union, or opaque record's own size, field order, offsets, packing, alignment, or bitfield widths change -- the core "does the compiled layout still match" family.

21 case(s). ← back to all subjects

Cases

Case Title Verdict Category
case07_struct_layout Struct Layout Change 🔴 BREAKING Breaking
case14_cpp_class_size C++ Class Size Change 🔴 BREAKING Breaking
case18_dependency_leak Dependency ABI Leak 🔴 BREAKING Breaking
case24_union_field_removed Union Field Removed 🔴 BREAKING Breaking
case26_union_field_added Union Field Added (Size Grows) 🔴 BREAKING Breaking
case26b_union_field_added_compatible Union Field Added (No Size Change) 🟢 COMPATIBLE Addition (Compatible)
case30_field_qualifiers Field Qualifier Changes (const, volatile) 🔴 BREAKING Breaking
case36_anon_struct Anonymous Struct/Union Change 🔴 BREAKING Breaking
case40_field_layout Field Layout Changes 🔴 BREAKING Breaking
case42_type_alignment_changed Type Alignment Changed (standalone alignas) 🔴 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
case48_leaf_struct_through_pointer Leaf Struct Change Propagated Through Pointer 🔴 BREAKING Breaking
case54_used_reserved_field Used Reserved Field 🟢 COMPATIBLE Quality (Compatible)
case55_type_kind_changed Type Kind Changed (struct → union) 🔴 BREAKING Breaking
case56_struct_packing_changed Struct Packing Changed (pragma pack) 🔴 BREAKING Breaking
case63_bitfield_changed Bitfield Width Changed 🔴 BREAKING Breaking
case70_flexible_array_member_changed Flexible Array Member Element Type Changed 🔴 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
case198_public_struct_field_reorder Public Struct Field Reorder 🔴 BREAKING Breaking