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.
- 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!
That’s ok, libc is ripe for expansion and has quite a bit of room to grow. If you’d like to add an API just follow the instructions in the README and it should land in no time!