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 操作系统

Download history 146/week @ 2024-04-29 55/week @ 2024-05-06 15/week @ 2024-05-13 18/week @ 2024-05-20 20/week @ 2024-05-27 13/week @ 2024-06-03 12/week @ 2024-06-10 15/week @ 2024-06-17 16/week @ 2024-06-24 5/week @ 2024-07-01 1/week @ 2024-07-08 22/week @ 2024-07-15 3/week @ 2024-07-22 65/week @ 2024-07-29 9/week @ 2024-08-05 8/week @ 2024-08-12

88每月下载量
4个crate中使用(3个直接使用)

MPL-2.0许可协议

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撤回。

适当的时候

如果您实际上正在尝试做一些实际的事情,请查看RustixRelibc

对于几乎所有用例,标准库可能更好,因为支持的操作系统只有Linux,您可能有一个分配器,尽管在我的测试中,tiny-std至少会产生更小的二进制文件。

支持的平台

  1. x86_64
  2. aarch64

核心功能

  1. 带或不带alloc运行
  2. 最小的文件系统覆盖范围
  3. 最小的spawn覆盖范围
  4. 最小的Unix套接字支持
  5. 最小的线程支持
  6. 实验性的io_uring支持

希望的功能(不分顺序)

  1. 通过signalfd处理信号
  2. 线程会很棒,但重写这个特定的轮子可能会爆炸代码大小,并且很难做对。
  3. io-uring文件系统操作

示例

  • PGWM是使用tiny-std构建的最大项目。
    目前,最小的WM构建版本静态链接到790K
  • 二进制项目的工作配置示例可以在test-runners中找到,包括带有和没有分配器/线程的。

许可证

本项目及任何贡献均受MPL-2.0许可证的约束。大量代码直接从rust-std中提取,API旨在尽可能与rust-std相似/兼容,受MIT许可证约束,可在以下位置找到:rust-std-MIT

依赖

~435KB
~12K SLoC