linebender/bevy_vello

Don't include the patch when declaring the Vello version.

StarArawn opened this issue · 1 comments

It makes it harder to patch as the latest vello version is on their main branch but the latest patch version is on a branch called latest. The main branch still declares v0.2.0. To patch vello I now need to fork either vello or bevy_vello.

By specifying a patch version it also means that users wont automatically get fixes upstream in bevy vello instead they'll need to wait for a bevy_vello patch as well.

Bevy Vello has removed the code to work around the issue fixed in Vello 0.2.1, and so allowing a dependency on Vello 0.2.0 is semantically incorrect.

Your second paragraph is rooted in a misunderstanding of how cargo implements semantic versioning. If a new Vello release were to be made, any project using Bevy Vello would still pick this up. The default form of a dependency is a compatible lower-bound, not a forcing fix.

You are running into rust-lang/cargo#5640. The workaround I'd suggest for your case is use a patched version of bevy_vello pointing at the patch you wish to use.

We should consider following the pattern in Vello which Bevy uses, of "eagerly" bumping the version number to something incompatible, to avoid the expectation that this kind of transitive patching is directly supported. This is discussed in bevyengine/bevy#6451