#local-time #safety #soundness #api-bindings

rl_localtime

Rust-locked localtime - 一个可靠的 localtime 实现

3 个版本

0.1.2 2022年2月19日
0.1.1 2022年2月11日
0.1.0 2022年2月11日

#639 in Unix APIs

MITNFA 许可证

69KB
2K SLoC

C 1.5K SLoC // 0.2% comments Rust 134 SLoC // 0.0% comments

Rust-locked localtime 实现

项目已废弃

此项目已废弃,因为存在一个纯 Rust 实现 - tz-rs。代码仅用于存档目的。

关于

警告:该项目目前是一个概念验证项目,并未经过深入审计!虽然我相信这解决了不稳定性问题,但我可能引入了其他错误。请自行承担风险,或者,更好的是,帮助改进它!

这是 C localtime_r 实现的分支,通过最小的修改使在 Rust 中并行调用它时设置环境变量变得可靠。它通过调用 Rust 代码来获取环境变量而不是使用原始系统 getenv 来实现这一点。

显然,这 不会 与系统 localtime_r 实现交互。例如,如果您在这个包中调用 localtime,它将不会影响系统库中的静态变量。这被认为是一个特性,因为系统 localtime 库是一个巨大的垃圾堆,如果您使用它,很容易得到 UB -不仅仅是设置环境变量。(NetBSD 实现要好一些。)

此包旨在作为一个更易于实现的替代方案,以在 Rust 中重写整个 localtime_r,因为人们不愿意这样做,因为代码量很大。它只需要更改几行并编写粘合 Rust 代码。

许可证

C 代码,包括我的修改,已发布到公有领域。Rust 代码在 MITNFA 许可证下发布。

依赖项

~225KB