rhaiscript / rhai

Rhai - An embedded scripting language for Rust.
https://crates.io/crates/rhai
Apache License 2.0
3.63k stars 174 forks source link

Rhai `no_std` appears to rely on `once_cell/alloc` but does not request it #869

Open cbiffle opened 2 months ago

cbiffle commented 2 months ago

Hi! Playing with Rhai on no_std over here (on an actual platform that doesn't provide std).

Currently, 1.18.0 won't build on a platform that doesn't provide std, because it appears to be relying on the once_cell crate having the alloc feature set (to get once_cell::race::OnceBox), but isn't setting that feature itself -- at least when depended on as

rhai = { version = "1.18.0", default-features = false, features = ["no_std"] }

Adding a redundant dep to once_cell and setting the alloc feature in my build causes it to start working:

# TODO: had to add this because rhai isn't requesting a feature it relies on.
once_cell = { version = "1.19.0", default-features = false, features = ["alloc"] }
cbiffle commented 2 months ago

From the commit history it looks like this might be a known bug; might be worth adding something to the README that the packaged versions require this workaround, lest it trip up more people. Feel free to close if you feel it's fixed.

schungx commented 2 months ago

Hhhmmm... that's strange, as the example under no_std has exactly the same default-features = false, features = ["no_std"] and it builds fine...

schungx commented 3 weeks ago

@cbiffle do you have more info on this?