rhaiscript / book

The Rhai Book.
https://rhai.rs/book
22 stars 22 forks source link

GIT-based or "*" version #28

Open peter-kehl opened 1 month ago

peter-kehl commented 1 month ago

https://rhai.rs/book/start/install.html#admonition-use-latest-release-version and https://rhai.rs/book/start/install.html#admonition-use-latest-development-version are unfortunate, at least. Neither works when publishing a (depending) crate to crates.io. The GIT-based-only way is easy to spot, but the "*" is less obvious/known. However, see https://doc.rust-lang.org/nightly/cargo/reference/specifying-dependencies.html#wildcard-requirements > "Note: crates.io does not allow bare * versions.".

Even worse, top level "*" will lead to incompatible changes if (ever) there are higher major versions. And, it can currently lead to less-obvious incompatibilities (even worse, potentially in runtime, since it's scripting....) with any old crates referencing old "0.*.*" versions - but those would not be mixed up if the user would specify "1.*" or (less error-prone) "1.18.*".

Please

  1. replace "*" with (more flexible, but more incompatibility-prone) "1.*" and/or (more robust) "1.18.0" (in which case add this file to a list of tasks to do when you release a minor version), and
  2. add a note that with a GIT-only-based dependency it can't be published to crates.io.

If that sounds OK, I'm willing to provide a PR. Thank you (indeed) for Rhai.

schungx commented 1 month ago

Thanks for bringing this up. We understand this. The * shortcut is for quick-n-dirty usage.

Users who publish crates will find out soon enough that they must use concrete version numbers. The shortcut is useful because not everyone publishes to crates.io if they work on a private project.

Personally I don't think it is a big deal, but you're welcome to provide a PR the puts in a caveat saying * version numbers cannot be published.