#nix #libc #testing #api #bindings #safe #friendly

nightly build nix-test

Nix 的测试辅助工具

1 个不稳定版本

使用旧的 Rust 2015

0.0.1 2015 年 2 月 21 日

76#friendly

MIT 许可证

6KB
233 代码行

Rust 对 *nix API 的绑定

Cirrus Build Status crates.io docs.rs maintenance-status msrv

Nix 旨在提供对各种 *nix 平台 API(Linux、Darwin 等)友好的绑定。目标是不要提供一个 100% 统一的接口,而是在提供平台特定 API 的同时尽可能实现统一。

对于许多系统 API,Nix 提供了相对于 libc crate 中暴露的不安全 API 的安全替代方案。这是通过使用类型/抽象包装 libc 功能来强制执行合法/安全的使用来实现的。

以下是一个 Nix 提供的例子,检查 libc 和 nix 对 gethostname 系统调用的暴露差异

// 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>;

支持的平台

nix 目标支持分为三个等级。虽然 nix 尝试支持所有由 libc 支持的平台,但由于技术或人力限制,只有一些平台得到积极支持。平台支持分为三个等级

  • 第一级 - 在 CI 中运行针对此目标的构建和测试。任一失败都会阻止新代码的包含。
  • 第二级 - 在 CI 中运行针对此目标的构建。构建过程中的失败会阻止新代码的包含。可以运行测试,但测试失败不会阻止新代码的包含。
  • 第三级 - 在 CI 中运行针对此目标的构建。构建过程中的失败 不一定 会阻止新代码的包含。也就是说,根据我们的判断,一个第三级目标可以在任何时候被移除,如果它否则会阻止开发。

未列出的平台将尽力支持,依靠我们的用户报告任何问题。

以下目标是 nix 支持的

第一级 第二级 第三级
  • 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
  • aarch64-apple-ios
  • aarch64-linux-android
  • arm-linux-androideabi
  • arm-unknown-linux-musleabi
  • armv7-linux-androideabi
  • i686-linux-android
  • 系统架构-s390x-未知-类Unix系统
  • 系统架构-x86_64-类Unix系统-android
  • 系统架构-x86_64-未知-illumos
  • 系统架构-x86_64-未知-netbsd
  • 系统架构-armv7-未知-类Unix系统-uclibceabihf
  • 系统架构-powerpc64-未知-类Unix系统-gnu
  • 系统架构-x86_64-fuchsia
  • 系统架构-x86_64-未知-dragonfly
  • 系统架构-x86_64-未知-haiku
  • 系统架构-x86_64-未知-类Unix系统-gnux32
  • 系统架构-x86_64-未知-openbsd
  • 系统架构-x86_64-未知-redox
  • 系统架构-i686-未知-hurd-gnu
  • 最低支持的Rust版本(MSRV)

    nix支持Rust 1.69及以上版本。其MSRV将不会在未来更改,除非升级主版本或副版本。

    贡献

    欢迎贡献。请参阅CONTRIBUTING以获取更多详细信息。

    欢迎加入我们,在Gitter上的nix-rust/nix频道讨论nix开发。

    许可证

    Nix采用MIT许可证。有关详细信息,请参阅LICENSE

    无运行时依赖