#linux #arg #parse #arguments-parser #parser #cli

无std tiny-cli

Tiny cli argparser 生成器

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 无标准库

MPL-2.0 许可证

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

适当的时候

如果您确实在尝试做一些实质性的工作,请检查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的静态pie链接构建。
  • 有关二进制项目的运行设置的一些示例在 test-runners 中,包括带有和不带有分配器/线程的。

许可证

本项目和任何贡献均受MPL-2.0许可协议的约束。大量代码直接源自rust-std,API设计旨在尽可能与rust-std相似/兼容,该API受MIT许可协议约束,可在以下链接找到:rust-std-MIT

无运行时依赖