tikv / rust-prometheus

Prometheus instrumentation library for Rust applications
Apache License 2.0
1.05k stars 182 forks source link

Frequent major releases without breaking changes #449

Closed Noratrieb closed 2 years ago

Noratrieb commented 2 years ago

Prometheus, like all other crates, is supposed to be following cargo semver with regards to versioning. prometheus seems to not fully follow that model.

Looking at the CHANGELOG.md, no breaking changes are made in 0.x versions. But cargo treats 0.x changes as major changes and does therefore not unify two versions like 0.13.0 and 0.14.0. This causes downstream crates of prometheus to use bad depedency specifiers like prometheus = "0". This is bad because it behaves similar to prometheus = "*", allowing breaking changes to happen (see vmalloc/venta#1).

It would be nice if prometheus started following cargo semver, by either only releasing point releases with new features, or go to 1.0.0 and follow the same model as now.

lucab commented 2 years ago

Thanks for the report. prometheus is already following semver. Latest 0.13.1 release is compatible with the previous 0.13.0 one. The ones before had some public-API changes which correctly resulted in semver breaks. Changelog only gives quick one-line summaries, but some improvements/bugfixes do affect the public API. Overall, it is correct to consume (the current version of) this library as prometheus = 0.13.

Noratrieb commented 2 years ago

Ah ok, thanks for the quick response. (I would suggest you put the breaking changes clearly into the changelog then)