#deflate #zlib #miniz #encoding #replace

miniz_oxide_c_api

DEFLATE压缩和解压缩API,设计为miniz的Rust直接替代品

11个版本

0.3.0 2021年11月11日
0.2.5 2020年3月1日
0.2.4 2019年10月1日
0.2.3 2019年7月22日
0.1.1 2017年10月28日

#622 in 压缩

Download history 1309/week @ 2024-03-14 1816/week @ 2024-03-21 1708/week @ 2024-03-28 1565/week @ 2024-04-04 1690/week @ 2024-04-11 1719/week @ 2024-04-18 1790/week @ 2024-04-25 1506/week @ 2024-05-02 1501/week @ 2024-05-09 1663/week @ 2024-05-16 1714/week @ 2024-05-23 1761/week @ 2024-05-30 1453/week @ 2024-06-06 1372/week @ 2024-06-13 1446/week @ 2024-06-20 1141/week @ 2024-06-27

5,609 每月下载量

MIT 许可证

615KB
10K SLoC

Rust 5.5K SLoC // 0.1% comments C 4K SLoC // 0.4% comments

主库 Crates.io文档

C API Crates.io文档

miniz_oxide

使用纯Rust编写的,不使用任何不安全代码的miniz的DEFLATE/zlib编码器/解码器的替代品。

本项目分为C API外壳和一个Rust crate。Rust crate位于miniz_oxide子目录中。

miniz_oxide 0.5.x版本至少需要rust 1.40.0,0.3.x版本至少需要rust 0.36.0。

为了使用更友好的基于读者和写入器的流式API,可以使用flate2,它可以使用miniz_oxide作为仅限Rust的后端。

miniz_oxide_C_API

C API旨在复制从miniz导出的API,同时也是zlib的一部分。C头文件是用cbindgen生成的。当前的实现尚未在自动化测试之外进行大量测试,文档不够完善,应被视为实验性的。

数据结构不与miniz.h(原始miniz中指定的)具有完全相同的布局,因此应通过包含的函数进行分配。

API文档

待办事项

测试

$ cargo test
$ ./test.sh

基准测试

$ cargo bench --features=benching

或与miniz进行比较

$ ./travis-after-success.sh

在C/C++项目中包含

链接到由build.sh生成的libminiz_oxide_c_api.a。可以使用生成的头文件miniz.h(使用原始的miniz头文件可能或可能不工作),它目前还使用miniz_extra_defs.h进行一些静态定义。

Cargo-fuzz测试

安装fuzzer

$ cargo install cargo-fuzz

运行模糊测试器

$ ./run_fuzz.sh

许可证

本库(不包括用于测试的miniz C代码)采用MIT许可证。该库基于miniz C库,其中使用的部分采用MIT许可证无许可证双重授权。不受无许可证保护的部分是一些Zip64代码,这些代码仅受MIT许可证保护。这以及miniz中的其他Zip功能不是miniz_oxidde和miniz_oxide_c_api rust库的一部分。

依赖项

~77–320KB