gems-uff / noworkflow

Supporting infrastructure to run scientific experiments without a scientific workflow management system.
http://gems-uff.github.io/noworkflow
MIT License
115 stars 28 forks source link

Dynamic Slicing of python programs #38

Open JoaoFelipe opened 9 years ago

JoaoFelipe commented 9 years ago

http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6899220&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6899220

leomurta commented 9 years ago

Nice conference! What did you learn out of this paper?

JoaoFelipe commented 9 years ago

I found this paper by snowballing a paper that I cited in the gdse paper. Since the deadline is tomorrow and I have a lot work to do this week, I just performed a speed reading for now to be able to cite this in the related work. They changed the CPython implementation to perform the slicing in the bytecode. In the bytecode, they capture control flow instructions and memory access instructions. I think its similar to what we do in two steps: we first capture control flow instructions and memory access statically for each line, then, during the execution, we match the static instructions with the dynamic line. For the complex data dependence, they have as advantage the object id during each operation. So it is simpler to infer dependencies from all variables that stores the object id.

It seems to be a simpler, possibly faster (C code with less things to check during execution) and more reliable way (bytecode is more restrict than python) to perform the program slicing, but I don't like the idea of changing the CPython implementation. Every new release of CPython may require a merge and a new release of their program slicing tool.