gendx / lzma-rs

An LZMA decoder written in pure Rust
MIT License
127 stars 27 forks source link

Provide features to import parts of the crate #42

Open gendx opened 4 years ago

gendx commented 4 years ago

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:

gendx commented 4 years ago
chyyran commented 2 years ago

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?

gendx commented 2 years ago

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).