Hi! I transitively use `socket2` as part of a Rust project built with Bazel. I’m noting that `socket2` builds successfully for me at v0.3.15, but not at version v0.3.16 (released today) unless I specify the extra flag `--cfg=libc_align`. I’m a bit hesitant to do so because it feels low-level and platform specific, so I wanted to check and see whether this is expected or whether there’s a better solution? Here is a [repro repo][1]. You do need to have Bazel to repro, but you don’t need any additional setup. The error is: ``` INFO: From Compiling Rust lib socket2 v0.3.16 (7 files): error[E0063]: missing field `__align` in initializer of `libc::in6_addr` --> external/raze__socket2__0_3_16/src/sockaddr.rs:243:25 | 243 | let sin6_addr = in6_addr { | ^^^^^^^^ missing `__align` error: aborting due to previous error For more information about this error, try `rustc --explain E0063`. ERROR: /HOMEDIR/.cache/bazel/_bazel_wchargin/e6b2d93af64d3456b38c9c9d2131e939/external/raze__socket2__0_3_16/BUILD.bazel:33:13: output 'external/raze__socket2__0_3_16/libsocket2--1560485693.rlib' was not created ERROR: /HOMEDIR/.cache/bazel/_bazel_wchargin/e6b2d93af64d3456b38c9c9d2131e939/external/raze__socket2__0_3_16/BUILD.bazel:33:13: not all outputs were created or valid Target @raze__socket2__0_3_16//:socket2 failed to build Use --verbose_failures to see the command lines of failed build steps. INFO: Elapsed time: 0.707s, Critical Path: 0.20s INFO: 2 processes: 1 internal, 1 linux-sandbox. FAILED: Build did NOT complete successfully ``` I dug far enough into the `libc` structure to see the `align`/`no_align` modules and guess that this `cfg` flag would probably fix it; it does. The failing Bazel action, with directory structure and command line invocation, is here (in a Gist because it has some long paths): <https://gist.github.com/wchargin/4da947cf43d2a241cfffb89873788a82> In all cases, the `libc` dependency is at version 0.2.80. But I note that `socket2` v0.3.15 depends on `libc` with default features, whereas in v0.3.16 it depends on the `align` feature: ``` $ cargo tree -e features --manifest-path socket2-0.3.15/Cargo.toml socket2-libc-align-demo v0.0.0 (/HOMEDIR/git/socket2-libc-align-demo/socket2-0.3.15) └── socket2 feature "default" └── socket2 v0.3.15 ├── cfg-if feature "default" │ └── cfg-if v0.1.10 └── libc feature "default" ├── libc v0.2.80 └── libc feature "std" └── libc v0.2.80 $ cargo tree -e features --manifest-path socket2-0.3.16-default/Cargo.toml socket2-libc-align-demo v0.0.0 (/HOMEDIR/git/socket2-libc-align-demo/socket2-0.3.16-default) └── socket2 feature "default" └── socket2 v0.3.16 ├── cfg-if feature "default" │ └── cfg-if v0.1.10 ├── libc feature "align" │ └── libc v0.2.80 └── libc feature "default" ├── libc v0.2.80 └── libc feature "std" └── libc v0.2.80 $ cargo tree -e features --manifest-path socket2-0.3.16-libc-align/Cargo.toml socket2-libc-align-demo v0.0.0 (/HOMEDIR/git/socket2-libc-align-demo/socket2-0.3.16-libc-align) └── socket2 feature "default" └── socket2 v0.3.16 ├── cfg-if feature "default" │ └── cfg-if v0.1.10 ├── libc feature "align" │ └── libc v0.2.80 └── libc feature "default" ├── libc v0.2.80 └── libc feature "std" └── libc v0.2.80 ``` So I’m hoping that you can help me understand what caused this change, why it requires me to build with `--cfg=libc_align`, (maybe) why it’s needed with Bazel but not with Cargo (though I understand if that’s outside your purview/expertise), and whether I should feel comfortable doing so? I want to build for non-Linux platforms, too, eventually. I’m on rustc 1.47.0 (18bf6b4f0 2020-10-07) on Debian-like Linux. Thanks much! [1]: https://github.com/wchargin/socket2-libc-align-demo