#zlib #bindings #zlib-ng #low-level #libz #api #programs

sys libz-sys

对系统库zlib的底层绑定(也称为zlib)

45个稳定版本

1.1.19 2024年8月12日
1.1.18 2024年5月24日
1.1.16 2024年3月21日
1.1.12 2023年7月26日
0.1.0 2014年11月27日

压缩类别中排名15

Download history 584307/week @ 2024-05-02 575190/week @ 2024-05-09 586368/week @ 2024-05-16 600875/week @ 2024-05-23 623145/week @ 2024-05-30 614936/week @ 2024-06-06 679541/week @ 2024-06-13 703486/week @ 2024-06-20 722611/week @ 2024-06-27 621669/week @ 2024-07-04 662633/week @ 2024-07-11 686480/week @ 2024-07-18 723989/week @ 2024-07-25 704245/week @ 2024-08-01 736939/week @ 2024-08-08 734257/week @ 2024-08-15

每月下载3,031,738
用于3,097个crate(直接使用92个)

MIT/Apache

1MB
16K SLoC

C 15K SLoC // 0.2% comments Rust 1K SLoC // 0.0% comments

libz-sys

将libz库链接到Rust程序(也称为zlib)的通用库。

文档

这也为构建libz-ng-sys crate提供源码,该crate以原生方式构建zlib-ng(非zlib-compat模式)。有关详细信息,请参阅README-zng.md

高级API

此crate提供对原始的低级C API的绑定。要使用DEFLATE、zlib或gzip流的高级安全API,请参阅flate2flate2还支持替代实现,包括较慢但纯Rust的实现。

zlib-ng

此crate支持在zlib-compat模式下构建高性能的zlib-ng,或广泛使用的标准zlib。

默认情况下,libz-sys使用标准zlib,主要是因为这样做可以在有可用的情况下使用共享的系统zlib库。

任何为zlib设计的应用程序或库都应在zlib-compat模式下与zlib-ng一起工作,只要它不对压缩数据的确切大小或输出做出假设(例如,“压缩这些数据将产生这么多字节”),并且您不还动态地拉入标准zlib的副本(这将产生冲突的符号)。尽管如此,为了实现最大兼容性,构建中的每个库crate都必须选择允许zlib-ng;如果您的依赖图中任何库crate需要标准zlib,则libz-sys将使用标准zlib。

依赖于libz-sys的库crate应使用

libz-sys = { version = "1.1", default-features = false, features = ["libc"] }

(如果不需要相应的函数,则省略libc特性。)

这允许依赖您的库的更高层次的crate在需要时选择使用zlib-ng。

构建zlib-ng需要cmake,除非启用了zlib-ng-no-cmake-experimental-community-maintained特性,在这种情况下将使用cc。请注意,此选项启用了针对给定目标支持的所有编译器特性,这可能在较旧的编译器或没有某些头文件的目标上无法编译。

不需要与zlib C API兼容的crate,并且仅从Rust使用zlib或支持zlib-ng的本地C API(以zng_前缀)可以使用libz-ng-sys,这允许zlib和zlib-ng在同一程序中共存。有关详细信息,请参阅README-zng.md

最小支持Rust版本(MSRV)策略

此crate使用与flate2 crate相同的MSRV策略:此crate支持Rust的当前和上一个稳定版本。较旧版本的Rust可能可以工作,但我们不保证它们将继续工作。

许可协议

该项目可以在以下任一协议下使用:

任选其一。

贡献

除非您明确说明,否则您提交给libz-sys的任何有意贡献,根据Apache-2.0许可协议定义,应作为上述双重许可发布,没有任何额外的条款或条件。

依赖