Breaking changes are inevitable. The libc crate follows a nonsemver
scheme (0.2.144 and bump the patch number by one for every release)
which breaks stuff all the time, or at least it used to when it was at
its early stages. There are ways to get around breakages in case of a
crate lib being a transitive dependency but has different versions:
https://github.com/dtolnay/semver-trick
I believe following libgpiod's version scheme directly is what would be
best and intuitive. -sys crates are not usual crates and users know
this. It'd be cool to not have to bump the bindings crate version but I
don't think it's a problem. This is how openssl{,-sys} works, if I am
not mistaken.
All in all, in crates.io follow its conventions unless there's no way to
do so.
Manos