#space #astrodynamics #satellite

rsofa

Rust 对 IAU SOFA C 库的绑定

10 个版本

0.5.0 2023年12月20日
0.4.5 2021年12月29日
0.4.1 2021年7月13日
0.3.0 2021年3月21日
0.1.0 2020年6月22日

#241 in 科学

每月下载量 25
2 crates 中使用

MIT 许可证

2.5MB
17K SLoC

C 17K SLoC // 0.7% comments Rust 103 SLoC // 0.0% comments

rsofa

Current Crates.io Version

rsofa 是一个库,提供国际天文学联合会 (http://www.iau.org/) 的 SOFA 库 (http://www.iausofa.org/) 的 Rust 实现。

rsofa 不是 SOFA 程序的移植,而是使用 bindgen 创建 SOFA C 库的直接包装器。rsofa 不是国际天文学联合会官方认可的。

尽管仍然是预 1.0 版本,但该软件包代表了 SOFA C 库的完整包装。未来要做的工作只是实现额外的测试覆盖率,以确保与 C 实现一致。然而,考虑到软件包的自动生成性质和直接 C 接口,偏差的可能性很低。

SOFA 版本历史

软件包版本 SOFA 发布
v0.5 2023-10-11
v0.4 2021-05-12
v0.3 2021-01-25
v0.2 2020-07-21
v0.1 2019-07-22

更新过程

每当 IAU SOFA C 库发布新版本时,如果该更新包括库中函数的增加或删除,则应更新 build.rs 文件以反映该变化。应将新函数添加到构建列表中,并删除已弃用的函数。

注意,必须通过复制 ./extern/src/sofa.h 的内容到 ./extern/sofa.h 来更新 ./extern/sofa.h,并调整以下行:

// #include "math.h"

这防止了 bindgen 从 C 的 math.h 头文件生成绑定,这可能导致构建过程中的后续问题。它还指向包括官方发布版本的 sofam.h 的头文件,而不在相同级别重复。

可以使用以下方式手动生成绑定:

cargo install bindgen
bindgen ./extern/src/sofa.h -o ./src/bindings.rs

许可证

包装软件包采用 MIT 许可证。

除了 MIT 许可证外,使用此模块还应遵守 SOFA 的许可证和条款,这些内容在许可证文件中重现。

具体而言,但不限于,任何包含使用 rsofa 获得的结果的已发布作品或商业产品均应承认使用 SOFA 软件获得了这些结果。

无运行时依赖

~0–2MB
~39K SLoC