Skip to content

Releases: rocky/python-decompile3

BSides NYC 2025

01 Oct 22:54

Choose a tag to compare

  • Submit to Python packaging hassle imposed by Python 3.13+
  • Handle Python 3.10-3.13 more gracefully
  • track xdis API changes
  • bug fixes (many more remain)

3.9.2

22 Jul 15:19

Choose a tag to compare

  • track xdis API changes
  • bug fixes (many more remain)

BlackHat Asia 2024 Ides of March

17 Mar 11:43

Choose a tag to compare

Lots of changes major changes. track xdis API has changes.

Separate Phases more clearly:

  • disassembly
  • tokenization
  • parsing
  • abstracting to AST (more is done in newer projects)
  • printing

Although we do not decompile bytecode greater than 3.8, code supports running from up to 3.12.

Many bugs fixed.

A lot of Linting and coding style modernization.

Work done in preparation for Blackhat Asia 2024

3.9.0

21 May 04:53

Choose a tag to compare

  • Speed up processing long literal collections: dictionary, list, set; we can also handle about 5K of them now
  • Improve handling of async comprehensions: async "for"/"forelse", "async with"
  • Reorganize semantic actions so that n_actions are separate; likewise for comprehensions and generators
  • Improve 3.8 decompilation
  • Support decompiling code fragment of comprehensions
  • Correct various operator precendence, and show operator precedence in -T/--tree++
  • Correct PyPy decompilation, suport pyston-3.8-2.3.3
  • Reorganize parsing modules and classes, to support fragment deparsing
  • Add BINARY_MATRIX_MULTPILY in grammar
  • Add psuedo opcode: LOAD_ARG; JUMP_BACK -> JUMP_LOOP; MAKE_FUNCTION_8 -> MAKE_FUNCTION_CLOSURE
  • Numerous bugs fixed, especially comprehension bugs
  • Code cleanup
  • Black format more files

Cairole - 2

19 Nov 21:29

Choose a tag to compare

  • Sync version number with corresponding uncompile6 version. The big change in 3.7.7 was using xdis >= 6.x
  • use expr_stmt instead of call_stmt when that is what is meant
  • remove float version tests
  • better, but not perfect, list .. if comprehensions
  • PyPy 3.8 testing support
  • Start PyPy 3.7 and PyPy 3.8 decompilation support

Jed + Rocky average

29 Oct 23:21

Choose a tag to compare

  • Better handling of invalid bytecode magic
  • Python 3.8 "try" with a "return" in "finally". Issue #67
  • Support running from 3.9 and 3.10 although we do not support those bytecodes

3.7.6

16 Oct 01:33

Choose a tag to compare

  • Fix fragment comprehension bugs
  • Makefile tolerance for pyston
  • Revise for xdis 6.0.0 - in Python version comparisions use tuples instead of floats

3.7.5

11 Jul 00:37

Choose a tag to compare

Fix various bugs in fragment semantic actions. This mostly got stale with disuse, and make usable again now that it is used in trepan3k.

Day after Fathers Day

21 Jun 06:19

Choose a tag to compare

First PyPI release.

The version number is set to roughly the corresponding uncompyle6 version.