#leptonica #image #safe #memory-safety #api #memory-safe #version

leptonica-plumbing

leptonica-sys 的安全包装

13 个版本 (6 个稳定版本)

1.4.0 2024年4月12日
1.3.0 2024年1月19日
1.1.0 2023年11月4日
1.0.1 2023年2月26日
0.1.0 2021年3月10日

图像 中排名第 83

Download history 722/week @ 2024-04-26 726/week @ 2024-05-03 839/week @ 2024-05-10 739/week @ 2024-05-17 795/week @ 2024-05-24 817/week @ 2024-05-31 542/week @ 2024-06-07 793/week @ 2024-06-14 947/week @ 2024-06-21 766/week @ 2024-06-28 778/week @ 2024-07-05 754/week @ 2024-07-12 697/week @ 2024-07-19 589/week @ 2024-07-26 641/week @ 2024-08-02 550/week @ 2024-08-09

每月下载量 2,666
9 个 crate 中使用 (通过 tesseract-plumbing)

MIT 许可证

28KB
560

leptonica-plumbing

Crate 用于暴露 leptonica-sys api 的安全版本。

此设计旨在以安全的方式暴露 Leptonica 的 C API。

通过偏离 API 来增加价值不是目标。这留给构建在 leptonica-plumbing 之上的库。

动机

我是 leptesstesseract-rs 的维护者。

我发现它们与 leptonica-systesseract-sys 的交互有很多重复。在 leptesstesseract-rs 中有多层抽象使得推理其内存安全性变得困难。

拥有一个简单的安全层可以提高上述库的正确性和可维护性。

测试

为了测试内存泄漏,请使用 valgrind 进行测试。

cargo test --release && valgrind --leak-check=yes --error-exitcode=1 --leak-check=full --show-leak-kinds=all "$(find target/*/deps/ -executable -name 'leptonica_plumbing-*')"

您可能会发现 Leptonica 总是泄漏 16B 的内存。

为了使用手动编译的 Leptonica 进行测试,请使用额外的环境变量

LD_LIBRARY_PATH="$(pwd)/../../DanBloomberg/leptonica/local/lib" PKG_CONFIG_PATH="$(pwd)/../../DanBloomberg/leptonica/local/lib/pkgconfig" cargo test

这两个可以组合使用

LD_LIBRARY_PATH="$(pwd)/../../DanBloomberg/leptonica/local/lib" PKG_CONFIG_PATH="$(pwd)/../../DanBloomberg/leptonica/local/lib/pkgconfig" bash -c 'cargo test --release && valgrind --leak-check=yes --error-exitcode=1 --leak-check=full --show-leak-kinds=all "$(find target/*/deps/ -executable -name 'leptonica_plumbing-*')"'

依赖关系

~1.2–3.5MB
~71K SLoC