#bare-metal #libc #unsafe #tiny #stable #targets

no-std tinyrlibc

为裸机目标编写的微小且不完整的 C 库,用稳定版(但不安全)的 Rust 编写

7 个不稳定版本

0.4.0 2024年3月22日
0.3.0 2022年10月19日
0.2.2 2022年3月18日
0.2.1 2021年5月17日
0.1.2 2019年9月1日

#1516 in 嵌入式开发

自定义许可协议

58KB
1.5K SLoC

Rust 1K SLoC // 0.0% comments C 298 SLoC // 0.3% comments

微小 Rust libc

简介

这是一个 微小 的 libc 实现,主要(但不是全部)用 Rust 编程语言编写。它适用于需要 C 库的裸机嵌入式 Rust 应用程序(可能是因为它们想使用某些用 C 编写的第三方库),但不想链接到完整的 newlib,或者尝试过但遇到了 newlib 和 compiler_builtins 定义诸如 memset 等符号的问题。

这个包的创建主要是为了让 nrfxlib 二进制接口库能够与 Rust 一起工作。

已实现的特性

  • abs
  • strol
  • atoi
  • isspace
  • isdigit
  • isalpha
  • isupper
  • strcmp
  • strncmp
  • strncasecmp
  • strcpy
  • strncpy
  • strlen
  • strtol
  • strtoll
  • strtoul
  • strtoull
  • strtoimax
  • strtoumax
  • strstr
  • strchr
  • snprintf
  • vsnprintf
  • alloc (可选)
    • malloc
    • calloc
    • realloc
    • free
  • signal (可选)
    • signal
    • raise
    • abort

非标准辅助函数

  • itoa
  • utoa

待办事项

  • nrfxlib 需要的其他任何内容
  • 任何人准备提交的其他任何内容

许可协议

因为这个库将从各个地方(一些 newlib,一些 relibc 等)收集一些片段,每个函数都有自己的文件,每个文件都有自己的许可协议。任何新的许可协议都应附加到 LICENCE.md 文件。

依赖项

~0–400KB