angr / claripy

An abstraction layer for constraint solvers.
BSD 2-Clause "Simplified" License
273 stars 90 forks source link

Refactor into Rust #404

Open twizmwazin opened 2 weeks ago

twizmwazin commented 2 weeks ago

This is an idea I want to experiment with. Basically the idea is that for each class in claripy, make a native class that becomes its base class. Then, one-by-one translate member variables and methods into the base class until the python class is empty. At each step of the way, keep the whole thing integrated and working (hence this PR, I want to test angr in conjunction with my changes). There's going to probably be little or negative performance gains in the early stages of this, but when large sections (ie, the frontend) are fully translated, that's when a speedup might be noticeable.

When converting, I'm not going to try to aggressively narrow the types on the rust side. Many structs will likely have exclusively PyObjects as their member types. Later we can narrow the allowed types.

ltfish commented 2 weeks ago

Excited!