cortex-m icon indicating copy to clipboard operation
cortex-m copied to clipboard

0.7.5 release appears to still depend on bare-metal 0.2.5

Open workingjubilee opened this issue 3 years ago • 3 comments

Unfortunately the recent 0.7.5 release was cut from the staging branch. https://github.com/rust-embedded/cortex-m/blob/e0bfe3ae21903e9dbd80e903e726f7341662e12b/Cargo.toml#L14-L22

Thus, it did not include recent dependency updates that are present on other branches, like the bump of bare-metal from 0.2 to 1.0, so these risk needless duplication when depending on this crate and also other ecosystem crates that do use the latest. It is not a critical priority for me, but I thought you might want to know.

workingjubilee avatar Jun 21 '22 02:06 workingjubilee

Unless I'm missing something, this was intentional - it was cut from the 0.7.x backports branch, while master is for 0.8.0 onwards and contains breaking changes (such as bumping bare-metal to 1.0, which is a breaking change, right?).

The plan is still to update to bare-metal 1.0 in the 0.8 release "soon".

adamgreig avatar Jun 21 '22 18:06 adamgreig

Hmm. Formally speaking, SemVer specifies,

Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.

and that

How do I know when to release 1.0.0?

If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you’re worrying a lot about backwards compatibility, you should probably already be 1.0.0.

But obviously it is not my crate, I just enjoy that sort of trivia.

In a more practical sense, I think "release candidate" versions are useful for propagating experimental releases that haven't quite finished baking yet but the ecosystem would find useful to build off of.

workingjubilee avatar Jun 23 '22 15:06 workingjubilee

Cargo uses a slightly variant definition of semantic versioning:

This compatibility convention is different from SemVer in the way it treats versions before 1.0.0. While SemVer says there is no compatibility before 1.0.0, Cargo considers 0.x.y to be compatible with 0.x.z, where y ≥ z and x > 0.

In effect, everything in the 0.7 branch must remain compatible, so we save breaking changes like this for 0.8. But yes, we'd like to put out an alpha release of 0.8 soon which would include this.

adamgreig avatar Jun 23 '22 22:06 adamgreig