reqwest introduces a lot of transitive dependencies
Closed this issue ยท 4 comments
First of all, thanks a lot for this crate! We use it in sticker2 to write Tensorboard summaries during training and it works great ๐ . However, adding rust-tfrecord
as a dependency added a lot of transitive dependencies. The main culprit is reqwest
:
โ โโโ reqwest v0.10.8
โ โ โโโ base64 v0.12.3
โ โ โโโ bytes v0.5.6
โ โ โโโ encoding_rs v0.8.24
โ โ โ โโโ cfg-if v0.1.10
โ โ โโโ futures-core v0.3.5
โ โ โโโ futures-util v0.3.5
โ โ โ โโโ futures-core v0.3.5
โ โ โ โโโ futures-io v0.3.5
โ โ โ โโโ futures-task v0.3.5
โ โ โ โ โโโ once_cell v1.4.1
โ โ โ โโโ memchr v2.3.3
โ โ โ โโโ pin-project v0.4.23
โ โ โ โ โโโ pin-project-internal v0.4.23
โ โ โ โ โโโ proc-macro2 v1.0.13 (*)
โ โ โ โ โโโ quote v1.0.6 (*)
โ โ โ โ โโโ syn v1.0.22 (*)
โ โ โ โโโ pin-utils v0.1.0
โ โ โ โโโ slab v0.4.2
โ โ โโโ http v0.2.1
โ โ โ โโโ bytes v0.5.6
โ โ โ โโโ fnv v1.0.7
โ โ โ โโโ itoa v0.4.5
โ โ โโโ http-body v0.3.1
โ โ โ โโโ bytes v0.5.6
โ โ โ โโโ http v0.2.1 (*)
โ โ โโโ hyper v0.13.7
โ โ โ โโโ bytes v0.5.6
โ โ โ โโโ futures-channel v0.3.5
โ โ โ โ โโโ futures-core v0.3.5
โ โ โ โโโ futures-core v0.3.5
โ โ โ โโโ futures-util v0.3.5 (*)
โ โ โ โโโ h2 v0.2.6
โ โ โ โ โโโ bytes v0.5.6
โ โ โ โ โโโ fnv v1.0.7
โ โ โ โ โโโ futures-core v0.3.5
โ โ โ โ โโโ futures-sink v0.3.5
โ โ โ โ โโโ futures-util v0.3.5 (*)
โ โ โ โ โโโ http v0.2.1 (*)
โ โ โ โ โโโ indexmap v1.3.2 (*)
โ โ โ โ โโโ slab v0.4.2
โ โ โ โ โโโ tokio v0.2.22
โ โ โ โ โ โโโ bytes v0.5.6
โ โ โ โ โ โโโ fnv v1.0.7
โ โ โ โ โ โโโ futures-core v0.3.5
โ โ โ โ โ โโโ iovec v0.1.4
โ โ โ โ โ โ โโโ libc v0.2.70
โ โ โ โ โ โโโ lazy_static v1.4.0
โ โ โ โ โ โโโ memchr v2.3.3
โ โ โ โ โ โโโ mio v0.6.22
โ โ โ โ โ โ โโโ cfg-if v0.1.10
โ โ โ โ โ โ โโโ iovec v0.1.4 (*)
โ โ โ โ โ โ โโโ libc v0.2.70
โ โ โ โ โ โ โโโ log v0.4.8 (*)
โ โ โ โ โ โ โโโ net2 v0.2.34
โ โ โ โ โ โ โ โโโ cfg-if v0.1.10
โ โ โ โ โ โ โ โโโ libc v0.2.70
โ โ โ โ โ โ โโโ slab v0.4.2
โ โ โ โ โ โโโ num_cpus v1.13.0 (*)
โ โ โ โ โ โโโ pin-project-lite v0.1.7
โ โ โ โ โ โโโ slab v0.4.2
โ โ โ โ โโโ tokio-util v0.3.1
โ โ โ โ โ โโโ bytes v0.5.6
โ โ โ โ โ โโโ futures-core v0.3.5
โ โ โ โ โ โโโ futures-sink v0.3.5
โ โ โ โ โ โโโ log v0.4.8 (*)
โ โ โ โ โ โโโ pin-project-lite v0.1.7
โ โ โ โ โ โโโ tokio v0.2.22 (*)
โ โ โ โ โโโ tracing v0.1.19
โ โ โ โ โโโ cfg-if v0.1.10
โ โ โ โ โโโ log v0.4.8 (*)
โ โ โ โ โโโ tracing-core v0.1.15
โ โ โ โ โโโ lazy_static v1.4.0
โ โ โ โโโ http v0.2.1 (*)
โ โ โ โโโ http-body v0.3.1 (*)
โ โ โ โโโ httparse v1.3.4
โ โ โ โโโ itoa v0.4.5
โ โ โ โโโ pin-project v0.4.23 (*)
โ โ โ โโโ socket2 v0.3.12 (*)
โ โ โ โโโ time v0.1.43 (*)
โ โ โ โโโ tokio v0.2.22 (*)
โ โ โ โโโ tower-service v0.3.0
โ โ โ โโโ tracing v0.1.19 (*)
โ โ โ โโโ want v0.3.0
โ โ โ โโโ log v0.4.8 (*)
โ โ โ โโโ try-lock v0.2.3
โ โ โโโ hyper-tls v0.4.3
โ โ โ โโโ bytes v0.5.6
โ โ โ โโโ hyper v0.13.7 (*)
โ โ โ โโโ native-tls v0.2.4
โ โ โ โ โโโ log v0.4.8 (*)
โ โ โ โ โโโ openssl v0.10.30
โ โ โ โ โ โโโ bitflags v1.2.1
โ โ โ โ โ โโโ cfg-if v0.1.10
โ โ โ โ โ โโโ foreign-types v0.3.2
โ โ โ โ โ โ โโโ foreign-types-shared v0.1.1
โ โ โ โ โ โโโ lazy_static v1.4.0
โ โ โ โ โ โโโ libc v0.2.70
โ โ โ โ โ โโโ openssl-sys v0.9.58 (*)
โ โ โ โ โโโ openssl-probe v0.1.2
โ โ โ โ โโโ openssl-sys v0.9.58 (*)
โ โ โ โโโ tokio v0.2.22 (*)
โ โ โ โโโ tokio-tls v0.3.1
โ โ โ โโโ native-tls v0.2.4 (*)
โ โ โ โโโ tokio v0.2.22 (*)
โ โ โโโ ipnet v2.3.0
โ โ โโโ lazy_static v1.4.0
โ โ โโโ log v0.4.8 (*)
โ โ โโโ mime v0.3.16
โ โ โโโ mime_guess v2.0.3
โ โ โ โโโ mime v0.3.16
โ โ โ โโโ unicase v2.6.0
โ โ โ [build-dependencies]
โ โ โ โโโ version_check v0.9.2
โ โ โ [build-dependencies]
โ โ โ โโโ unicase v2.6.0 (*)
โ โ โโโ native-tls v0.2.4 (*)
โ โ โโโ percent-encoding v2.1.0
โ โ โโโ pin-project-lite v0.1.7
โ โ โโโ serde v1.0.110 (*)
โ โ โโโ serde_urlencoded v0.6.1
โ โ โ โโโ dtoa v0.4.5
โ โ โ โโโ itoa v0.4.5
โ โ โ โโโ serde v1.0.110 (*)
โ โ โ โโโ url v2.1.1
โ โ โ โโโ idna v0.2.0
โ โ โ โ โโโ matches v0.1.8
โ โ โ โ โโโ unicode-bidi v0.3.4
โ โ โ โ โ โโโ matches v0.1.8
โ โ โ โ โโโ unicode-normalization v0.1.12 (*)
โ โ โ โโโ matches v0.1.8
โ โ โ โโโ percent-encoding v2.1.0
โ โ โโโ tokio v0.2.22 (*)
โ โ โโโ tokio-tls v0.3.1 (*)
โ โ โโโ url v2.1.1 (*)
Of course, there are duplicates, but it's still many additional dependencies. From git grep
-ing, it seems that reqwest is only used for blocking GET
requests. Would you be opposed to replacing these by the curl
crate, which would reduce the number of dependencies a lot? For downstream crates it would already help a lot if reqwest was removed from build-dependencies
/build.rs
, because dev-dependencies
are not used IIRC.
I can do a PR if this would be ok for you.
Small update: by using curl
in place of reqwest
in the build-dependencies
of tfrecord
, the number of transitive dependencies of sticker2 changes from 292 to 230.
I agree some deps are not necessary and it's definitely a large bloating. curl
looks good to me except it introduces curl-sys
that might breaks the compatibility on non-UNIX land. I'm looking at ureq
to see if it can help.
Now ureq
is shipped to v0.4.1. Please see if it works for you.
Thanks a lot, that really helped. Down from 292 to 248.