I’ve just pushed 0.2.0 of the libc crate to crates.io, which contains an implementation of RFC 1291 which is targeted at stabilizing libc and moving it to 1.0.

As libc can often be found at the core of many applications it may, and because some breaking changes have been made, it may be the case that some code with loose restrictions (e.g. a * dependency) may have compile errors soon. To help mitigate breakage, I’d recommend updating to 0.2.* if you see any problems, because it should be quite easy! To recap, the breaking changes made to libc were:

The module structure of the library has gone away, all items are now only available at the top level via libc::foo

Some types like size_t are now defined in terms of usize and isize on major platforms, helping to reduce the number of as casts needed.

are now defined in terms of and on major platforms, helping to reduce the number of casts needed. Bindings to Windows functions not found in the CRT (e.g. those found in kernel32) were all removed. Many Windows types (like DWORD ) were also removed. These are currently best found in the winapi crate for type definitions and the various *-sys crates for function bindings (e.g. kernel32-sys ).

Most transitions should be quite smooth (I only had to change one of my own crates so far), but if you have any problems please feel free to open an issue in the libc repo!

My API is missing!