Skip to content

Releases: rocky/x-python

BSides NYC 2025

08 Oct 01:41

Choose a tag to compare

  • Start adding opcodes for Python 3.12. (Much more work is needed though)
  • Improve 3.11 bytecode support.
  • Continue revising the way testing works to be more scalable.
  • Incorporate xdis API
  • Redo packaging because, you know, that's the way Python rolls

1.5.2

22 Jul 17:01

Choose a tag to compare

  • Track xdis api changes
  • Bug fixes

1.5.1

28 Mar 23:33

Choose a tag to compare

  • Add Python 3.11 support
  • Start using branches to support running on older Pythons
  • Use newer xdis
  • Revise tests to work more along the lines of decompilers and xdis. This also lets us share test code.
  • Add Administrative merge code in support of new branches
  • Many bug fixes
  • Start to Modernize style, lint, use "black" and "isort"

Some work to allow continuing on Python 3.12 and beyond

  • Remove use of nose/nosetest
  • Add pyproject.toml

1.5.0

25 Nov 18:00

Choose a tag to compare

  • Better PyPy 3.6-3.8 opcode coverages,
  • Better 3.9 opcode coverage
  • Start handling Python 3.10
  • Add bytecode files and testing for the above.

Nathanman

07 Nov 17:29

Choose a tag to compare

  • Use newer xdis which supports 3.10. We don't have 3.10 opcode interpretation yet though.
    This was a lot of upheaval since we can no longer use floats to represent python versions:
    3.1 == 3.10 in floating point. As xdis uses, we use tuples now.
  • Improve fake version_info for PyPy.
  • Start pypy37 and pypy38 bytecodes, although this is not finished yet. You interpret other bytecode from PyPy though.
  • Tweak FORMAT_VALUE and improve assembly display

1.3.6

04 Sep 13:50

Choose a tag to compare

  • Handle Python 3.7 - 3.9 better
  • fake sys.version, sys.version_info, and sys.hexversion in cross interpreting
  • Handle PyPy 3.5 and other PyPy's better
  • Fix bug in reporting line number
  • Fix bug in Python 2.{4,5} MAKE_CLOSURE
  • Improve ofrmating on IMPORT_NAME on 2.6 and later
  • Type check VM arguments more

1.3.5

25 Jul 00:39

Choose a tag to compare

Note: a lot of stdlib tests have become broken. This is probably ood because it reflects that we are honestly interpreting more and
not running interpreter code as builtin Python functions (e.g. eval and exec used to work this way.)

  • Start interpreter assisted breakpoints.
  • Fill out interpreter inspect more
  • exec is the same as exec
  • make version pydoc frendly
  • propagate interpreter-caught exceptions more properly

1.3.4

28 Jun 21:01

Choose a tag to compare

Small changes.

  • run_eval() renamed to eval_frame() to better match the way CPython does it
  • exec(), and eval() builtins go through compile and eval_frame() so they get interpreted
  • It is okay when exec() and eval() which call eval_frame() leave data on the stack (?)
  • __module__ property set properly on eval_frame()
  • pretty_event_flags() will show VM tracing event flags nicley. This helps trepan-xpy
  • __qualname__ and __name__ are set differently and properly in MAKE_FUNCTION in 3.4+
  • More tests and expanded coverage
  • Work progress in getting 3.6+ GET_AWAITABLE done, but more work is needed.

Fleetwood66+

13 Jun 09:28

Choose a tag to compare

Overall, improved cross-version bytecode interpreting and some bug fixes.

  • Correct BUILD_MAP_UNPACK opcode handling.
  • Set namespace locals and globals to the proper namespace in builtin eval() like we do for locals() and globals() built-in functions
  • Better built-in test for eval(). Note Tk has its own built-in eval()
  • Handle __idiv__ in overwritten insdie //=
  • Improve argument format for CALL_FUNCTION_KW for 3.6+
  • Initialize frame cells from closure, not f_back See nedbat#17

Marilyn + 1

03 Jun 19:45

Choose a tag to compare

Overall, some bugs were fixed especially on the 3.6+ side.

There is better cross version interpreting.

Release before we do a major overhaul on the closure or cell "freeops", e.g. LOAD_DEREF and STORE_DEREF.

  • Fix bug in detecting 3.6+ keyword-only signatures
  • Correct bugs in 3.6+ MAKE_FUNCTION
  • Improve our build_class(); don't try to convert built-in __entry__, __exit__ routines
  • Add Python 2.4 bytecode interpreting
  • Improve logging operator formatting