Commit d811228
authored
use
### What does this PR try to resolve?
This PR uses `zlib-rs` via the `flate2` crate. It is used for
(de)compressing gzip files (e.g. in `cargo package`).
Using zlib-rs is significantly faster, and produces output of roughly
similar size. For the `windows-bindgen` crate
(a very large crate), the speedup is over 60%, or about 2 seconds.
```
> time cargo package -p windows-bindgen --no-verify
Packaging windows-bindgen v0.61.0 (/home/folkertdev/rust/windows-rs/crates/libs/bindgen)
Updating crates.io index
Packaged 76 files, 31.2MiB (8.2MiB compressed)
________________________________________________________
Executed in 3.30 secs fish external
usr time 3.19 secs 424.00 micros 3.19 secs
sys time 0.05 secs 61.00 micros 0.05 secs
> time ~/rust/cargo/target/release/cargo package -p windows-bindgen --no-verify
Packaging windows-bindgen v0.61.0 (/home/folkertdev/rust/windows-rs/crates/libs/bindgen)
Updating crates.io index
Packaged 76 files, 31.2MiB (8.3MiB compressed)
________________________________________________________
Executed in 1.25 secs fish external
usr time 1.15 secs 0.00 micros 1.15 secs
sys time 0.04 secs 589.00 micros 0.04 secs
```
### How should we test and review this PR?
Generally CI/the test suite should handle correctness.
Something to look out for is zlib-rs producing larger binaries than
before. So far we're seeing output sizes that are roughly the same
(sometimes a bit better, sometimes a bit worse) as the status quo.
We've not specifically looked at decompression yet, mostly because we
could not come up with a good command to benchmark. In general zlib-rs
is much faster than stock zlib there too.
### Additional information
For the time being, `cargo` still depends on stock zlib via e.g. `curl`
and `git`. As far as I know it is the intention to eventually move away
from these C dependencies, at which point the dependency on stock zlib
also disappears.zlib-rs for gzip compression in rust code (#15417)File tree
4 files changed
+21
-6
lines changed- src/doc/src/reference
4 files changed
+21
-6
lines changedSome generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
45 | 45 | | |
46 | 46 | | |
47 | 47 | | |
48 | | - | |
| 48 | + | |
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
| 60 | + | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
190 | | - | |
| 190 | + | |
191 | 191 | | |
192 | 192 | | |
193 | 193 | | |
| |||
0 commit comments