71 次发布

0.29.0 2024 年 5 月 24 日
0.28.0 2024 年 2 月 24 日
0.27.1 2023 年 8 月 28 日
0.26.2 2023 年 1 月 18 日
0.1.0 2014 年 11 月 11 日

#2Unix APIs 中排名第二

Download history 1621660/week @ 2024-05-02 1631849/week @ 2024-05-09 1735338/week @ 2024-05-16 1723359/week @ 2024-05-23 1867877/week @ 2024-05-30 1784798/week @ 2024-06-06 1773246/week @ 2024-06-13 1778552/week @ 2024-06-20 1756675/week @ 2024-06-27 1659739/week @ 2024-07-04 1816450/week @ 2024-07-11 1850509/week @ 2024-07-18 1865192/week @ 2024-07-25 1744994/week @ 2024-08-01 1909384/week @ 2024-08-08 1826296/week @ 2024-08-15

7,713,187 每月下载量
用于 8,157 包(1,620 个直接使用)

MIT 许可证

1.5MB
32K SLoC

Rust 对 *nix API 的绑定

Cirrus Build Status crates.io maintenance-status

文档(发布版)

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

对于许多系统 API,Nix 提供了比 libc 包 提供的不安全 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-unknown-linux-gnu
  • x86_64-linux-android
  • x86_64-unknown-illumos
  • x86_64-unknown-netbsd
  • armv7-unknown-linux-uclibceabihf
  • powerpc64-unknown-linux-gnu
  • x86_64-fuchsia
  • x86_64-unknown-dragonfly
  • x86_64-unknown-haiku
  • x86_64-unknown-linux-gnux32
  • x86_64-unknown-openbsd
  • x86_64-unknown-redox
  • i686-unknown-hurd-gnu
  • 最低支持的Rust版本(MSRV)

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

    贡献

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

    欢迎加入Gitter上的nix-rust/nix频道(nix-rust/nix),讨论nix开发。

    许可证

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

    依赖项