5个版本
0.2.4 | 2024年5月5日 |
---|---|
0.2.3 | 2023年11月7日 |
0.2.2 | 2023年10月1日 |
0.1.1 | 2023年9月5日 |
0.1.0 |
|
#140 在 操作系统
每月下载 25次
在 3 crate 中使用
585KB
14K SLoC
微型std
类似于一个糟糕的、可能存在bug的微型标准库,适用于Linux。
注意:v0.1.0在稳定版 >= 1.72 / 夜间版 >= 08-17 上损坏
2023年8月16日和2023年8月17日之间rustc的一些更新导致了tiny-std的误编译,在调用memset
时出现无限递归,编译器有时会在优化过程中插入memset
,有关更多详细信息请参阅这里。
此问题已在v0.1.1中修复,没有API更改,通过将敏感于重写的代码拆分到具有#![no_builtins]
的单独crate中。
因此,版本0.1.0
已被从crates.io撤回。
适当的时候
如果您确实在尝试做些实质性的事情,请检查Rustix或Relibc。
常规标准库可能适用于几乎所有用例,因为支持的唯一操作系统是Linux,您很可能有一个分配器,尽管tiny-std在我的测试中至少会产生更小的二进制文件。
支持的平台
- x86_64
- aarch64
核心功能
- 带或不带alloc运行
- 最小的文件系统覆盖范围
- 最小的spawn覆盖范围
- 最小的Unix套接字支持
- 最小的线程支持
- 实验性的io_uring支持
期望的功能(不分顺序)
- 通过signalfd处理信号
- 线程会很好,但重新发明这个特定的轮子可能会爆炸代码体积,并且很难做对。
- io-uring文件系统操作
示例
- PGWM 是使用
tiny-std
构建的最大项目。
目前,最小的窗口管理器构建为静态pie链接,大小为790K
。 - 有关二进制项目的示例配置在test-runners中,包括有和无分配器/线程。
许可证
本项目和任何贡献均采用 MPL-2.0 许可。大量代码直接来自 rust-std,不提及其 API,旨在尽可能与 rust-std 相似/兼容,该 API 采用 MIT 许可,可在以下位置找到 rust-std-MIT。
依赖项
~435KB
~12K SLoC