libpathrs
libpathrs copied to clipboard
C-friendly API to make path resolution safer on Linux.
This was only stabilised in Rust 1.80.0, so this might cause issues when building on older distributions (depending on when libpathrs starts getting packaged). Signed-off-by: Aleksa Sarai
cgo function calls are quite expensive (~20x) and so there might be an argument that we should try to do some Go assembly hacks to try to avoid using cgo....
Lennart suggested this would be something useful since it's quite tricky (though it also requires some kernel work to get this to be completely atomic).
ErrorKind is quite useful for our tests and most library users would probably want it for some uses, but it probably needs to have a better-designed way of distinguishing errors...
`ErrorImpl::InvalidArgument` should be seen as an `EINVAL` from the C API, for instance.
[Al Viro responded favourably](https://lwn.net/Articles/934460/) to blocking mounts over magic-links (or rather, mounts over "ethereal" components like everything in `/proc/self/*`), and this is fairly easy to implement. This would eliminate all...
It might actually make sense to provide a `libpathrs-sys` crate which uses the `cdylib` to provide the regular `libpathrs` API. This is because the Rust crate is licensed LGPLv3-or-later, which...
In order to avoid compatibility issues in the future, we should make use of symbol versioning from the first release in order to avoid having to bump the SONAME when...
While the new API makes error management much nicer, some users might just want to get raw errnos. We can very easily switch to returning raw errnos from a type...
At the moment, everything is hand-rolled. Since the first versions of this library (in 2019), there are now quite a few crates to help make safe C-friendly FFI bindings. We...