5个不稳定版本
新增 0.3.1 | 2024年8月24日 |
---|---|
0.3.0 | 2024年5月5日 |
0.2.2 | 2023年11月7日 |
0.2.1 | 2023年10月1日 |
0.1.0 | 2023年7月25日 |
#788 in 操作系统
88每月下载量
在4个crate中使用(3个直接使用)
310KB
7K 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来修复了此问题,没有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
。 - 二进制项目的工作配置示例可以在test-runners中找到,包括带有和没有分配器/线程的。
许可证
本项目及任何贡献均受MPL-2.0许可证的约束。大量代码直接从rust-std中提取,API旨在尽可能与rust-std相似/兼容,受MIT许可证约束,可在以下位置找到:rust-std-MIT。
依赖
~435KB
~12K SLoC