Python Meta Circular Interpreter (2019)

(rahul.gopinath.org)

35 points | by leonry 3 days ago ago

7 comments

  • upghost 7 hours ago

    Er, to be clear, this just seems to be an interpreter -- not a meta circular interpreter. I don't see any evidence that it is able to evaluate its own definitions or its own API. It doesn't have any tools to handle class definitions, object instantiation, or method invocation, so I'm not sure by what definition of "meta circular" this interpreter fits.

    Not trying to knock the project. Very cool code! Just don't understand how it qualifies as a "meta circular".

  • albertzeyer an hour ago

    Somewhat similar: My PyCPython project (https://github.com/albertz/PyCPython), where I wrote a C interpreter in Python, and then tried to interpret CPython. I never really completed this project though.

  • albertzeyer 7 hours ago

    In Python, some of the stated use cases, like extracting coverage, extracting the call graph, etc, you can get via tracing already (sys.settrace, https://docs.python.org/3/library/sys.html#sys.settrace).

    And I would argue, the other stated use cases are maybe interesting to play around with, but nothing you really would want in production (I suppose).

    Some of the other use cases, you can also achieve by module import hooks and rewriting the AST. (E.g. see how PyTest rewrites the assertion AST to produce nice error messages: https://github.com/pytest-dev/pytest/blob/main/src/_pytest/a...)

    • stabbles 6 hours ago

      the pytest example screams for @assert as a macro, if only the language supported it