You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In principle it should be possible, though in practice it depends on the IR produced by rustc.
At the very least, we would need to provide a mock of std::thread (and maybe std::sync::atomic) to ensure that GenMC can track thread creation and atomic accesses (this is what is done for C/C++).
Beyond that, we would also need to ensure that there are no ffi calls in the produced code, and that the IR interpreter does not choke on any of the instructions (rustc exercises different parts of LLVM IR than clang, and these parts might contain instructions that are not tested/properly supported).
One could also design a different runtime for Rust altogether, but this is considerably more work.
If you are willing to try it out, let me know how it goes. I'd be happy to help in determining what changes are precisely required in order to make it work.
Activity
michaliskok commentedon May 19, 2024
In principle it should be possible, though in practice it depends on the IR produced by
rustc.At the very least, we would need to provide a mock of
std::thread(and maybestd::sync::atomic) to ensure that GenMC can track thread creation and atomic accesses (this is what is done for C/C++).Beyond that, we would also need to ensure that there are no ffi calls in the produced code, and that the IR interpreter does not choke on any of the instructions (
rustcexercises different parts of LLVM IR thanclang, and these parts might contain instructions that are not tested/properly supported).One could also design a different runtime for Rust altogether, but this is considerably more work.
If you are willing to try it out, let me know how it goes. I'd be happy to help in determining what changes are precisely required in order to make it work.
Michalis