rhai: Can't use older Rhai versions anymore

Related to #828 (the proposed solution to which I wanted to benchmark), there’s another issue with the breaking change (which is automatically used unless pinned due to semantic versioning of minor versions):

Even if I pin the rhai crate version, Rust will automatically pick the latest rhai_codegen version which is not compatible with older versions:

rhai v1.16.3
├── ahash v0.8.7
│   ├── cfg-if v1.0.0
│   ├── const-random v0.1.17
│   │   └── const-random-macro v0.1.16 (proc-macro)
│   │       ├── getrandom v0.2.12
│   │       │   ├── cfg-if v1.0.0
│   │       │   └── libc v0.2.153
│   │       ├── once_cell v1.19.0
│   │       └── tiny-keccak v2.0.2
│   │           └── crunchy v0.2.2
│   ├── getrandom v0.2.12
│   │   ├── cfg-if v1.0.0
│   │   └── libc v0.2.153
│   ├── once_cell v1.19.0
│   └── zerocopy v0.7.32
│   [build-dependencies]
│   └── version_check v0.9.4
├── bitflags v2.4.2
├── num-traits v0.2.17
│   [build-dependencies]
│   └── autocfg v1.1.0
├── once_cell v1.19.0
├── rhai_codegen v1.17.0 (proc-macro)
│   ├── proc-macro2 v1.0.78
│   │   └── unicode-ident v1.0.12
│   ├── quote v1.0.35
│   │   └── proc-macro2 v1.0.78 (*)
│   └── syn v2.0.48
│       ├── proc-macro2 v1.0.78 (*)
│       ├── quote v1.0.35 (*)
│       └── unicode-ident v1.0.12
├── serde v1.0.196
│   └── serde_derive v1.0.196 (proc-macro)
│       ├── proc-macro2 v1.0.78 (*)
│       ├── quote v1.0.35 (*)
│       └── syn v2.0.48 (*)
├── smallvec v1.13.1
│   └── serde v1.0.196 (*)
└── smartstring v1.0.1
    ├── serde v1.0.196 (*)
    └── static_assertions v1.1.0
    [build-dependencies]
    ├── autocfg v1.1.0
    └── version_check v0.9.4

Pinning an older version of rhai_codegen doesn’t work either:

# cargo tree -v -p rhai
    Updating crates.io index
error: failed to select a version for the requirement `rhai_codegen = "~1.16.0"`
candidate versions found which didn't match: 1.17.0, 1.6.0, 1.5.0, ...
location searched: crates.io index
required by package `foo v1.0.0 (/Users/egger/Desktop/Source/foo)`
perhaps a crate was updated and forgotten to be re-vendored?

About this issue

  • Original URL
  • State: closed
  • Created 5 months ago
  • Comments: 17

Most upvoted comments

I plan to yank rhai_codegen 1.17.0 and put out rhai_codegen 2.0.0.

Rhai 1.17.0 should be bumped to 1.17.1 which locks to rhai_codegen 2.0.0.

Just pin rhai_codegen also. Those two crates go in pairs.

Yeah, one needs to know that rhai_codegen 1.6.0 needs to be used, which is not obvious or great. Ideally rhai would depend on a fixed version of rhai_codegen and not run into the same semver foul as rhai itself.