GitHub - sunfishcode/c-ward: 一个用 Rust 编写的 libc 实现

主要内容总结:

  • c-ward 简介:是用 Rust 编写的 libc 实现,包含两个 crate,c-scape 是no_std的,c-gull 引入 c-scape 并提供使用std的功能,目标是成为 Rust 库之上的 C ABI 层,目前已知仅与*-unknown-linux-gnu*平台 ABI 兼容。
  • 运行时要求:解析用户和 DNS 记录需执行getent并输出到 stdout,常规 glibc 系统由其提供getent并使用 NSS 设置,musl 系统也提供getent但不使用 NSS。
  • 类似 crate:另一个 libc 实现是 relibc,tinyrlibc 是用于裸金属嵌入式平台的极小 libc 函数集。
  • 关于#![no_builtins]:通常 libc 实现会使用#[no_builtins]防止编译器将 libc 函数体识别为实现语义的代码并替换为调用,导致无用递归,而 c-scape 和 c-gull 小心避免对已知会被模式匹配为内置函数的函数进行开放编码。
阅读 7
0 条评论