summaryrefslogtreecommitdiffstats
path: root/third_party/rust/nix/README.md
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /third_party/rust/nix/README.md
parentInitial commit. (diff)
downloadfirefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz
firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip
Adding upstream version 115.7.0esr.upstream/115.7.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/nix/README.md')
-rw-r--r--third_party/rust/nix/README.md105
1 files changed, 105 insertions, 0 deletions
diff --git a/third_party/rust/nix/README.md b/third_party/rust/nix/README.md
new file mode 100644
index 0000000000..2c42b905f7
--- /dev/null
+++ b/third_party/rust/nix/README.md
@@ -0,0 +1,105 @@
+# Rust bindings to *nix APIs
+
+[![Cirrus Build Status](https://api.cirrus-ci.com/github/nix-rust/nix.svg)](https://cirrus-ci.com/github/nix-rust/nix)
+[![crates.io](https://img.shields.io/crates/v/nix.svg)](https://crates.io/crates/nix)
+
+[Documentation (Releases)](https://docs.rs/nix/)
+
+Nix seeks to provide friendly bindings to various *nix platform APIs (Linux, Darwin,
+...). The goal is to not provide a 100% unified interface, but to unify
+what can be while still providing platform specific APIs.
+
+For many system APIs, Nix provides a safe alternative to the unsafe APIs
+exposed by the [libc crate](https://github.com/rust-lang/libc). This is done by
+wrapping the libc functionality with types/abstractions that enforce legal/safe
+usage.
+
+
+As an example of what Nix provides, examine the differences between what is
+exposed by libc and nix for the
+[gethostname](https://man7.org/linux/man-pages/man2/gethostname.2.html) system
+call:
+
+```rust,ignore
+// libc api (unsafe, requires handling return code/errno)
+pub unsafe extern fn gethostname(name: *mut c_char, len: size_t) -> c_int;
+
+// nix api (returns a nix::Result<OsString>)
+pub fn gethostname() -> Result<OsString>;
+```
+
+## Supported Platforms
+
+nix target support consists of two tiers. While nix attempts to support all
+platforms supported by [libc](https://github.com/rust-lang/libc), only some
+platforms are actively supported due to either technical or manpower
+limitations. Support for platforms is split into three tiers:
+
+ * Tier 1 - Builds and tests for this target are run in CI. Failures of either
+ block the inclusion of new code.
+ * Tier 2 - Builds for this target are run in CI. Failures during the build
+ blocks the inclusion of new code. Tests may be run, but failures
+ in tests don't block the inclusion of new code.
+ * Tier 3 - Builds for this target are run in CI. Failures during the build
+ *do not* block the inclusion of new code. Testing may be run, but
+ failures in tests don't block the inclusion of new code.
+
+The following targets are supported by `nix`:
+
+Tier 1:
+ * aarch64-apple-darwin
+ * aarch64-unknown-linux-gnu
+ * arm-unknown-linux-gnueabi
+ * armv7-unknown-linux-gnueabihf
+ * i686-unknown-freebsd
+ * i686-unknown-linux-gnu
+ * i686-unknown-linux-musl
+ * mips-unknown-linux-gnu
+ * mips64-unknown-linux-gnuabi64
+ * mips64el-unknown-linux-gnuabi64
+ * mipsel-unknown-linux-gnu
+ * powerpc64le-unknown-linux-gnu
+ * x86_64-unknown-freebsd
+ * x86_64-unknown-linux-gnu
+ * x86_64-unknown-linux-musl
+
+Tier 2:
+ * aarch64-apple-ios
+ * aarch64-linux-android
+ * arm-linux-androideabi
+ * arm-unknown-linux-musleabi
+ * armv7-linux-androideabi
+ * i686-linux-android
+ * powerpc-unknown-linux-gnu
+ * s390x-unknown-linux-gnu
+ * x86_64-apple-ios
+ * x86_64-linux-android
+ * x86_64-apple-darwin
+ * x86_64-unknown-illumos
+ * x86_64-unknown-netbsd
+
+Tier 3:
+ * armv7-unknown-linux-uclibceabihf
+ * x86_64-fuchsia
+ * x86_64-unknown-dragonfly
+ * x86_64-unknown-haiku
+ * x86_64-unknown-linux-gnux32
+ * x86_64-unknown-openbsd
+ * x86_64-unknown-redox
+
+## Minimum Supported Rust Version (MSRV)
+
+nix is supported on Rust 1.56.1 and higher. Its MSRV will not be
+changed in the future without bumping the major or minor version.
+
+## Contributing
+
+Contributions are very welcome. Please See [CONTRIBUTING](CONTRIBUTING.md) for
+additional details.
+
+Feel free to join us in [the nix-rust/nix](https://gitter.im/nix-rust/nix) channel on Gitter to
+discuss `nix` development.
+
+## License
+
+Nix is licensed under the MIT license. See [LICENSE](LICENSE) for more details.