First, some background:
I’m trying to fix a rust bug which I’ve reported here. The short description of the bug is that loading a new version of a dynamic library while the program was still running worked in 1.19.0, but now doesn’t work in 1.20.0.
Why would I want to do such a weird thing? If there is a problem with my program that is only apparent when the program is in a particular state that takes time to reach, then if I can reload the code responsible at runtime, I can quickly try different options and see their effects instantly (modulo compilation time). I don’t need to manually put the program back in the problematic state. It’s really nice having such a tight feedback loop, but right now it doesn’t work.
I haven’t dug around in the compiler before, so I’m trying to find the commit that introduced problem by using
git bisect. If you hand
git bisect run a command which exits with code 0 only when the code is good, it will find which commit the bug happened in.
Because the nature of the bug requires at least two crates to replicate, (and in the automated case, at least three,) and because I’m currently using hardcoded paths based on where cargo puts things, it would be nice if I could still use cargo with a given rust commit’s version of
rustc. Is this possible or will I have to make a version that can be run with just
rustc and a shell script?