The libc crate is now at v0.2.0

Hmm, the old libc had c_char = u8 for linux-aarch64 only, i8 for everything else. The new libc has u8 for linux-aarch64/arm and android (probably assuming arm). Benefit of the doubt presumes the new libc is more accurate, hopefully so.

But it's a tricky issue that you may have different c_char in CStr depending on the compiler version, while the c_char you get from libc depends on which external crate you grab. You can use std::os::raw::c_char to match the builtin libc and CStr, but you need the crate's c_char to call its functions. Hmm...