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 日 |
#2 在 Unix APIs 中排名第二
7,713,187 每月下载量
用于 8,157 个 包(1,620 个直接使用)
1.5MB
32K SLoC
Rust 对 *nix API 的绑定
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
支持的
第一级 | 第二级 | 第三级 |
---|---|---|
|
|
|
最低支持的Rust版本(MSRV)
nix支持Rust 1.69及以上版本。其MSRV将不会在未来更改,除非增加主版本或副版本。
贡献
非常欢迎贡献。请参阅CONTRIBUTING以获取更多信息。
欢迎加入Gitter上的nix-rust/nix频道(nix-rust/nix),讨论nix
开发。
许可证
Nix采用MIT许可证。有关详细信息,请参阅LICENSE。