|  | # libz-sys | 
|  |  | 
|  | A common library for linking `libz` to rust programs (also known as zlib). | 
|  |  | 
|  | [Documentation](https://docs.rs/libz-sys) | 
|  |  | 
|  | This also serves as the source for the `libz-ng-sys` crate, which builds | 
|  | zlib-ng natively (not in zlib-compat mode). See | 
|  | [`README-zng.md`](README-zng.md) for details. | 
|  |  | 
|  | # High-level API | 
|  |  | 
|  | This crate provides bindings to the raw low-level C API. For a higher-level | 
|  | safe API to work with DEFLATE, zlib, or gzip streams, see | 
|  | [`flate2`](https://docs.rs/flate2). `flate2` also supports alternative | 
|  | implementations, including slower but pure Rust implementations. | 
|  |  | 
|  | # zlib-ng | 
|  |  | 
|  | This crate supports building either the high-performance zlib-ng (in | 
|  | zlib-compat mode), or the widely available stock zlib. | 
|  |  | 
|  | By default, `libz-sys` uses stock zlib, primarily because doing so allows the | 
|  | use of a shared system zlib library if available. | 
|  |  | 
|  | Any application or library designed for zlib should work with zlib-ng in | 
|  | zlib-compat mode, as long as it doesn't make assumptions about the exact size | 
|  | or output of the deflated data (e.g. "compressing this data produces exactly | 
|  | this many bytes"), and as long as you don't also dynamically pull in a copy of | 
|  | stock zlib (which will produce conflicting symbols). Nonetheless, for maximum | 
|  | compatibility, every library crate in a build must opt into allowing zlib-ng; | 
|  | if any library crate in your dependency graph wants stock zlib, `libz-sys` will | 
|  | use stock zlib. | 
|  |  | 
|  | Library crates depending on `libz-sys` should use: | 
|  | ``` | 
|  | libz-sys = { version = "1.1.0", default-features = false, features = ["libc"] } | 
|  | ``` | 
|  | (Omit the `libc` feature if you don't require the corresponding functions.) | 
|  |  | 
|  | This allows higher-level crates depending on your library to opt into zlib-ng | 
|  | if desired. | 
|  |  | 
|  | Building zlib-ng requires `cmake`. | 
|  |  | 
|  | # License | 
|  |  | 
|  | This project is licensed under either of | 
|  |  | 
|  | * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or | 
|  | http://www.apache.org/licenses/LICENSE-2.0) | 
|  | * MIT license ([LICENSE-MIT](LICENSE-MIT) or | 
|  | http://opensource.org/licenses/MIT) | 
|  |  | 
|  | at your option. | 
|  |  | 
|  | ### Contribution | 
|  |  | 
|  | Unless you explicitly state otherwise, any contribution intentionally submitted | 
|  | for inclusion in `libz-sys` by you, as defined in the Apache-2.0 license, shall be | 
|  | dual licensed as above, without any additional terms or conditions. |