mrhooray / crc-rs

Rust implementation of CRC(16, 32, 64) with support of various standards
Apache License 2.0
187 stars 49 forks source link

Release 3.1.0 in violation of semantic versioning? #114

Closed d-e-s-o closed 6 months ago

d-e-s-o commented 6 months ago

Release 3.1.0 broke the build of lzma-rs (possibly among others). The reason seems to be the changed trait bound of crc::Digest:

As per my understanding this is not in line with semantic versioning requirements. Would it be possible to yank this version and fix this or publish it as 4.0 instead?

Thanks for being considerate of the wider eco system.

akhilles commented 6 months ago

Thanks for reporting this, just yanked 3.1.0 and will investigate further.

akhilles commented 6 months ago

Yup, this'll do it: https://github.com/gendx/lzma-rs/blob/168221a91f66000cf2424a62f9ffd18cf5fd91b7/src/encode/util.rs#L7. I suspect this is a somewhat uncommon use of the API, but it's still a breaking change that's not acceptable.

Unfortunately, I don't see an easy way to replace Width with Implementation when there are generic call sites explicitly referencing Width.

Will either have to rename Implementation to Width or release 4.0.0.

akhilles commented 6 months ago

I have a solution for this that doesn't break semver: https://github.com/mrhooray/crc-rs/pull/115. Will do some more testing (incl. against lzma-rs before release 3.1.0).