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 2023年7月25日

#140操作系统

每月下载 25次
3 crate 中使用

MPL-2.0 许可证

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

适当的时候

如果您确实在尝试做些实质性的事情,请检查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构建的最大项目。
    目前,最小的窗口管理器构建为静态pie链接,大小为790K
  • 有关二进制项目的示例配置在test-runners中,包括有和无分配器/线程。

许可证

本项目和任何贡献均采用 MPL-2.0 许可。大量代码直接来自 rust-std,不提及其 API,旨在尽可能与 rust-std 相似/兼容,该 API 采用 MIT 许可,可在以下位置找到 rust-std-MIT

依赖项

~435KB
~12K SLoC