主要内容总结:
- 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 小心避免对已知会被模式匹配为内置函数的函数进行开放编码。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。