4 个版本
0.1.3 | 2024年5月5日 |
---|---|
0.1.2 | 2023年11月7日 |
0.1.1 | 2023年10月1日 |
0.1.0 | 2023年9月5日 |
#15 in #operating
在 tiny-std 中使用
335KB
7.5K SLoC
微小 std
类似于一个糟糕的、可能存在错误的微小标准库,用于 Linux。
注意:v0.1.0 在稳定版 >= 1.72 / 夜间版 >= 08-17 上损坏
2023年8月16日至2023年8月17日之间对 rustc 的某些更新导致 tiny-std 编译错误,在调用 memset
时导致无限递归,编译器有时将其作为优化的一部分插入 更多详细信息。
这已在 v0.1.1 中通过将敏感于重写的代码拆分到具有 #![no_builtins]
的单独crate中修复。
因此,版本 0.1.0
已从 crates.io 中撤回。
当合适的时候
如果您实际上正在尝试做一些实质性的工作,请查看 Rustix 或 Relibc。
常规 stdlib 可能适用于几乎所有用例,因为支持的唯一操作系统是 Linux,您可能有一个分配器,尽管在我的测试中,tiny-std 至少会生成一个更小的二进制文件。
支持的平台
- x86_64
- aarch64
核心功能
- 带或不带 alloc 运行
- 最小的文件系统覆盖范围
- 最小的 spawn 覆盖范围
- 最小的 Unix 套接字支持
- 最小的线程支持
- 实验性的 io_uring 支持
想要的功能(不分先后顺序)
- 通过 signalfd 处理信号
- 线程会很棒,但重新发明这个特定的轮子可能会爆炸代码大小,并且很难做正确。
- io-uring 文件系统操作
示例
许可证
本项目及任何贡献均受MPL-2.0许可证的约束。许多代码直接来源于rust-std,并且API旨在尽可能与rust-std相似/兼容,该API受MIT许可证约束,可以在以下位置找到:rust-std-MIT。
依赖项
~435KB
~12K SLoC