6个版本
新版本 0.3.0 | 2024年8月24日 |
---|---|
0.2.1 | 2024年5月5日 |
0.2.0 | 2023年11月7日 |
0.1.2 | 2023年8月10日 |
#218 in 无标准库
65KB
1.5K SLoC
Tiny std
类似于一个糟糕的、可能存在bug的、针对Linux的迷你标准库。
注意:v0.1.0在稳定版> = 1.72 / 夜间版> = 08-17时损坏
2023年8月16日至2023年8月17日之间rustc的一些更新导致tiny-std编译错误,导致memset调用无限递归,编译器有时将其作为优化的一部分插入更多详细信息。
通过将敏感于重写的代码拆分到具有 #![no_builtins]
的单独crate中,在v0.1.1中修复了此问题,而没有API更改。
因此,版本 0.1.0
已从crates.io撤下。
适当的时候
如果您确实在尝试做一些实质性的工作,请检查Rustix 或 Relibc。
标准库对于几乎所有的用例来说可能更好,因为支持的操作系统只有Linux,您很可能有一个分配器,尽管在我的测试中,tiny-std至少会产生一个更小的二进制文件。
支持的平台
- x86_64
- aarch64
核心功能
- 带或不带alloc运行
- 最小的文件系统覆盖
- 最小的spawn覆盖
- 最小的Unix套接字支持
- 最小的线程支持
- 实验性的io_uring支持
希望的功能(不分先后顺序)
- 通过signalfd处理信号
- 线程会很好,但重新发明那个特定的轮子可能会使代码大小爆炸,并且很难做正确。
- io-uring文件系统操作
示例
- PGWM 是使用
tiny-std
构建的最大项目。
目前,最小的WM以790K的静态pie链接构建。 - 有关二进制项目的运行设置的一些示例在 test-runners 中,包括带有和不带有分配器/线程的。
许可证
本项目和任何贡献均受MPL-2.0许可协议的约束。大量代码直接源自rust-std,API设计旨在尽可能与rust-std相似/兼容,该API受MIT许可协议约束,可在以下链接找到:rust-std-MIT。