4 ms·
Can you explain a little more about how it works? Does it handle cases like loops correctly (or self-referencing cells)? Is this running a CPython fork, or how
by singhrac 3y ago
Can you explain a little more about how it works? Does it handle cases like loops correctly (or self-referencing cells)?
Is this running a CPython fork, or how does the lineage tracking work? Are the values “x” and “y” in the quickstart example still simple Python int types, or are they a wrapped type?
The papers seem very interesting but even as an early adopter of tools like this I’d like to know what the limits and expectations are, and some docs would really help.
- smacke 3y agoIt's running on top of vanilla CPython, but with heavy instrumentation via sys.settrace as well as ast transformations. x and y are just normal Python ints. The downside is the overhead, but it's paid mainly for top-level / module-level statements, so I've found it to be acceptable in practice. The benefits are on portability -- as it scales for all the major Python versions supported today (3.6 to 3.11), and even for some different Python runtimes such as Cinder. More details in this paper: https://smacke.net/papers/nbslicer.pdf https://smacke.net/papers/nbslicer.pdf But overall I agree I need to get on top of the docs and talk in more depth about the implementation there.