lzma-rs icon indicating copy to clipboard operation
lzma-rs copied to clipboard

Provide features to import parts of the crate

Open gendx opened this issue 5 years ago • 3 comments

For now, dependents of lzma-rs import all of LZMA, LZMA2 and XZ, even if they only need LZMA for example. This could lead to unnecessary dependencies if for example SHA-256 checksums are added for the XZ layer (https://github.com/gendx/lzma-rs/issues/32).

In the next breaking release, the code could be split with Cargo features:

  • by default, lzma is available,
  • the lzma2 feature enables lzma2 on top of it,
  • the xz feature enables all of lzma, lzma2 and xz,
  • the sha256 feature enables support for SHA-256 checksums (instead of returning an Err) - only relevant for xz.

gendx avatar Apr 28 '20 16:04 gendx

  • The enable_logging feature shouldn't bring the env_logger dependency - env_logger should be a dev-dependency only.

gendx avatar Jul 16 '20 10:07 gendx

This doesn't need to be a breaking release if default imports everything. It would be an opt-out rather than opt-in but can be done without a major version increment.

Might I also suggest having encode being it's own feature as well?

chyyran avatar Jun 01 '22 04:06 chyyran

This doesn't need to be a breaking release if default imports everything. It would be an opt-out rather than opt-in but can be done without a major version increment.

If something already depends on lzma-rs with default-features = false, it would break them. So this is a breaking change. But given that lzma-rs is still not stable (currently version 0.2.0), I think that it's totally fine to increment the major version (i.e. 0.3.x).

Might I also suggest having encode being it's own feature as well?

Sounds good, especially given that the current implementation doesn't try to compress much (see #9).

gendx avatar Jun 05 '22 20:06 gendx