Rust ports via #4740 introduce new challenges for the CrossHair backend, which only supports pure Python. As pieces are cut over to Rust, CrossHair will have to realize previously symbolic values, and in some cases, may fail outright.
This ticket is for developing a strategy to support both goals. (or to decide on abandoning one, though personally I don't see a reason to do so)
I suspect in all solutions, we'll need parallel pure-Python implementations for Rust-based logic. My first questions are all follow-ups to that assumption:
- Scale: How much are hoping to convert to Rust? Two dimensions to consdier: (1) the total amount of "logic" that we might want to optimize with Rust, and (2) the size of its delineating API surface.
- Where: What repo stores the Python implementations? Hypothesis? The crosshair plugin?
- Validation: How do we ensure the implementations are identical? (both of our tools are good at this, fortunately!)
A few nice things:
- We've already got old versions in git, so we don't need to implement a lot of new things.
- Because we no longer care about performance for the Python implementation, we might be able to make more symbolic friendly decisions in how that logic is implemented. There are some cases where this could honestly be a pretty big win for CrossHair.
Rust ports via #4740 introduce new challenges for the CrossHair backend, which only supports pure Python. As pieces are cut over to Rust, CrossHair will have to realize previously symbolic values, and in some cases, may fail outright.
This ticket is for developing a strategy to support both goals. (or to decide on abandoning one, though personally I don't see a reason to do so)
I suspect in all solutions, we'll need parallel pure-Python implementations for Rust-based logic. My first questions are all follow-ups to that assumption:
A few nice things: