mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2024-11-24 05:30:15 +00:00
415 lines
12 KiB
Plaintext
415 lines
12 KiB
Plaintext
uncompyle6 2.11.4 2017-08-15
|
|
|
|
* scanner and parser now allow 3-part version string lookups,
|
|
e.g. 2.7.1 We allow a float here, but if passed a string like '2.7'. or
|
|
* unpin 3.5.1. xdis 3.5.4 has been releasd and fixes the problems we had. Use that.
|
|
* some routnes here moved to xdis. Use the xdis version
|
|
* README.rst: Link typo Name is trepan2 now not trepan
|
|
* xdis-forced change adjust for COMPARE_OP "is-not" in
|
|
semanatic routines. We need "is not".
|
|
* Some PyPy tolerance in validate testing.
|
|
* Some pyston tolerance
|
|
|
|
uncompyle6 2.11.3 2017-08-09
|
|
|
|
Very minor changes
|
|
|
|
- RsT doc fixes and updates
|
|
- use newer xdis, but not too new; 3.5.2 breaks uncompyle6
|
|
- use xdis opcode sets
|
|
- xdis "exception match" is now "exception-match"
|
|
|
|
uncompyle6 2.11.2 2017-07-09
|
|
|
|
- Start supporting Pypy 3.5 (5.7.1-beta)
|
|
- use xdis 3.5.0's opcode sets and require xdis 3.5.0
|
|
- Correct some Python 2.4-2.6 loop detection
|
|
- guard against badly formatted bytecode
|
|
|
|
uncompyle6 2.11.1 2017-06-25
|
|
|
|
- Python 3.x annotation and function signature fixes
|
|
- Bump xdis version
|
|
- Small pysource bug fixes
|
|
|
|
uncompyle6 2.11.0 2017-06-18 Fleetwood
|
|
- Major improvements in fragment tracking
|
|
* Add nonterminal node in extractInfo
|
|
* tag more offsets in expressions
|
|
* tag array subscripts
|
|
* set YIELD value offset in a <yield> expr
|
|
* fix a long-standing bug in not adjusting final AST when melding other deparse ASTs
|
|
- Fixes yet again for make_function node handling; document what's up here
|
|
- Fix bug in snowflake Python 3.5 *args kwargs
|
|
|
|
uncompyle6 2.10.1 2017-06-3 Marylin Frankel
|
|
|
|
- fix some fragments parsing bugs
|
|
- was returning the wrong type sometimes in deparse_code_around_offset()
|
|
- capture function name in offsets
|
|
- track changes to ifelstrmtr node from pysource into fragments
|
|
|
|
uncompyle6 2.10.0 2017-05-30 Elaine Gordon
|
|
|
|
- Add fuzzy offset deparse look up
|
|
- 3.6 bug fixes
|
|
- fix EXTENDED_ARGS handling (and in 2.6 and others)
|
|
- semantic routine make_function fragments.py
|
|
- MAKE_FUNCTION handling
|
|
- CALL_FUNCTION_EX handling
|
|
- async property on defs
|
|
- support for CALL_FUNCTION_KW (moagstar)
|
|
- 3.5+ UNMAP_PACK and BUILD_UNMAP_PACK handling
|
|
- 3.5 FUNCTION_VAR bug
|
|
- 3.x pass statement insdie while True
|
|
- Improve 3.2 decompilation
|
|
- Fixed -o argument processing (grkov90)
|
|
- Reduce scope of LOAD_ASSERT as expr to 3.4+
|
|
- "await" statement fixes
|
|
- 2.3, 2.4 "if 1 .." fixes
|
|
- 3.x annotation fixes
|
|
|
|
uncompyle6 2.9.11 2017-04-06
|
|
|
|
- Better support for Python 3.5+ BUILD_MAP_UNPACK
|
|
- Start 3.6 CALL_FUNCTION_EX support
|
|
- Many decompilation bug fixes. (Many more remain). See ChangeLog
|
|
|
|
uncompyle6 2.9.10 2017-02-25
|
|
|
|
- Python grammar rule fixes
|
|
- Add ability to get grammar coverage on runs
|
|
- Handle Python 3.6 opcode BUILD_CONST_KEYMAP
|
|
|
|
uncompyle6 2.9.9 2016-12-16
|
|
|
|
- Remaining Python 3.5 ops handled
|
|
(this also means more Python 3.6 ops are handled)
|
|
- Python 3.5 and 3.6 async and await handled
|
|
- Python 3.0 decompilation improved
|
|
- Python 3 annotations fixed
|
|
- Better control-flow detection
|
|
- Code cleanups and misc bug fixes
|
|
|
|
uncompyle6 2.9.8 2016-12-16
|
|
|
|
- Better control-flow detection
|
|
- pseudo instruction THEN in 2.x
|
|
to disambiguate if from and
|
|
- fix bug in --verify option
|
|
- DRY (a little) control-flow detection
|
|
- fix syntax in tuples with one element
|
|
- if AST rule inheritence in Python 2.5
|
|
- NAME_MODULE removal for Python <= 2.4
|
|
- verifycall fixes for Python <= 2.4
|
|
- more Python lint
|
|
|
|
uncompyle6 2.9.7 2016-12-16
|
|
|
|
- Start to handle 3.5/3.6 build_map_unpack_with_call
|
|
- Some Python 3.6 bytecode to wordcode conversion fixes
|
|
- option -g: show start-end range when possible
|
|
- track print_docstring move to help (used in python 3.1)
|
|
- verify: allow RETURN_VALUE to match RETURN_END_IF
|
|
- some 3.2 compatibility
|
|
- Better Python 3 control flow detection by adding Pseudo ELSE opcodes
|
|
|
|
uncompyle6 2.9.6 2016-12-04
|
|
|
|
- Shorten Python3 grammars with + and *
|
|
this requires spark parser 1.5.1
|
|
- Add some AST reduction checks to improve
|
|
decompile accuracy. This too requires
|
|
spark parser 1.5.1
|
|
|
|
uncompyle6 2.9.6 2016-11-20
|
|
|
|
- Correct MANIFEST.in
|
|
- More AST grammar checking
|
|
- --linemapping option or linenumbers.line_number_mapping()
|
|
Shows correspondence of lines between source
|
|
and decompiled source
|
|
- Some control flow adjustments in code for 2.x.
|
|
This is probably an improvement in 2.6 and before.
|
|
For 2.7 things are just shuffled around a little. Sigh.
|
|
Overall I think we are getting more precise in
|
|
or analysis even if it is not always reflected
|
|
in the results.
|
|
- better control flow debugging output
|
|
- Python 2 and 3 detect structure code is more similar
|
|
- Handle Docstrings with embedded tiple quotes (""")
|
|
|
|
uncompyle6 2.9.5 2016-11-13
|
|
|
|
- Fix Python 3 bugs:
|
|
* improper while 1 else
|
|
* docstring indent
|
|
* 3.3 default values in lambda expressions
|
|
* start 3.0 decompilation (needs newer xdis)
|
|
- Start grammar misparse checking
|
|
|
|
|
|
uncompyle6 2.9.4 2016-11-02
|
|
|
|
- Handle Python 3.x function annotations
|
|
- track def keyword-parameter line-splitting in source code better
|
|
- bump min xdis version to mask previous xdis bug
|
|
|
|
uncompyle6 2.9.3 2016-10-26
|
|
|
|
Release forced by incompatibility change in xdis 3.2.0.
|
|
|
|
- Python 3.1 bugs:
|
|
* handle "with ... as"
|
|
* handle "with"
|
|
* Start handling def (...) -> yy (has bugs still)
|
|
|
|
- DRY Python 3.x via inheritance
|
|
- Python 3.6 work (from Daniel Bradburn)
|
|
* Handle 3.6 buildstring
|
|
* Handle 3.6 handle single and multiple fstring better
|
|
|
|
|
|
uncompyle6 2.9.2 2016-10-15
|
|
|
|
- use source-code line breaks to assist in where to break
|
|
in tuples and maps
|
|
- Fix Python 1.5 decompyle bugs
|
|
- Fix some Python 2.6 and below bugs
|
|
- DRY fragments.py code a little
|
|
|
|
uncompyle6 2.9.1 2016-10-09
|
|
|
|
- Improved Python 1.5 decompiling
|
|
- Handle old-style pre Python 2.2 classes
|
|
|
|
uncompyle6 2.9.0 2016-10-09
|
|
|
|
- Use xdis 3.0.0 protocol load_module.
|
|
this Forces change in requirements.txt and _pkg_info_.py
|
|
- Start Python 1.5 decompiling; another round of work is needed to
|
|
remove bugs
|
|
- Simplify python 2.1 grammar
|
|
- Fix bug with -t ... Wasn't showing source text when -t option was given
|
|
- Fix 2.1-2.6 bug in list comprehension
|
|
|
|
uncompyle6 2.8.4 2016-10-08
|
|
|
|
- Python 3 disassembly bug fixes
|
|
- Python 3.6 fstring bug fixes (from moagstar)
|
|
- Python 2.1 disassembly
|
|
- COME_FROM suffixes added in Python3
|
|
- use .py extension in verification disassembly
|
|
|
|
uncompyle6 2.8.3 2016-09-11 live from NYC!
|
|
|
|
NOTE: this is possibly the last release before a major reworking of
|
|
control-flow structure detection is done.
|
|
|
|
- Lots of bug fixes in decompilation:
|
|
* 3.0 .. 3.4 whileTrue bug
|
|
* 3.x function declaration deparsing:
|
|
. 3.0 .. 3.2 *args processing
|
|
. 3.0 .. 3.2 call name and kwargs bug
|
|
. 3.0 .. getting parameter of *
|
|
. 3.0 .. handling variable number of args
|
|
. 3.0 .. "if" structure bugs
|
|
* 3.5+ if/else bugs
|
|
* 2.2-2.6 bugs
|
|
. try/except control flow
|
|
. a == b == c -like detection
|
|
. generator detection
|
|
. "while .. and" statement bugs
|
|
. handle "except <cond>, <var>"
|
|
. use older raise format in 2.x
|
|
- scanner "disassemble" is now "ingest". True disassembly is done by xdis
|
|
- Start accepting Python 3.1 bytecode
|
|
- Add --weak-verify option on test_pyenvlib and test_pythonlib. This
|
|
catches more bugs more easily
|
|
- bump xdis requirement so we can deparse dropbox 2.5 code
|
|
- Added H. Goebel's changes before 2.4 in DECOMPYLE-2.4-CHANGELOG.txt
|
|
|
|
uncompyle6 2.8.2 2016-08-29
|
|
|
|
- Handle Python 3.6 format string conversions !r, !s, !a
|
|
- Start to handle 3.1 bytecode
|
|
- Fix some PyPy translation bugs
|
|
- We now only handle 3.6.0a3+ since that is incompatible with 3.6 before that
|
|
|
|
uncompyle6 2.8.1 2016-08-20
|
|
|
|
- Add Python 2.2 decompilation
|
|
|
|
- Fix bugs
|
|
* PyPy LOOKUP_METHOD bug
|
|
* Python 3.6 FORMAT_VALUE handles expressions now
|
|
|
|
uncompyle6 2.8.0 2016-08-03
|
|
|
|
- Start Python 3.6 support (moagstar)
|
|
more work on PEP 498 needed
|
|
- tidy bytecode/word output
|
|
- numerous decompiling bugs fixed
|
|
- grammar testing started
|
|
- show magic number in deparsed output
|
|
- better grammar and semantic action segregation based
|
|
on python bytecode version
|
|
|
|
uncompyle6 2.7.1 2016-07-26
|
|
|
|
- PyPy bytecodes for 2.7 and 3.2 added
|
|
- Instruction formatting improved slightly
|
|
- 2.7 bytecode "continue" bug fixed
|
|
|
|
uncompyle6 2.7.0 2016-07-15
|
|
|
|
- Many Syntax and verification bugs removed
|
|
tested on standard libraries from 2.3.7 to 3.5.1
|
|
and they all decompile and verify fine.
|
|
I'm sure there are more bugs though.
|
|
|
|
uncompyle6 2.6.2 2016-07-11 Manhattenhenge
|
|
|
|
- Extend bytecodes back to 2.3
|
|
- Fix bugs:
|
|
* 3.x and 2.7 set comprehensions,
|
|
* while1 loops
|
|
* continue statements
|
|
- DRY and segregate grammar more
|
|
|
|
uncompyle6 2.6.1 2016-07-08
|
|
|
|
- Go over Python 2.5 bytecode deparsing
|
|
all library programs now deparse
|
|
- Fix a couple bugs in 2.6 deparsing
|
|
|
|
uncompyle6 2.6.0 2016-07-07
|
|
|
|
- Improve Python 2.6 bytecode deparsing:
|
|
stdlib now will deparse something
|
|
- Better <2.6 vs. 2.7 grammar separation
|
|
- Fix some 2.7 deparsing bugs
|
|
- Fix bug in installing uncompyle6 script
|
|
- Doc improvements
|
|
|
|
uncompyle6 2.5.0 2016-06-22 Summer Solstice
|
|
|
|
- Much better Python 3.2-3.5 coverage.
|
|
3.4.6 is probably the best;3.2 and 3.5 are weaker
|
|
- Better AST printing with -t
|
|
- Better error reporting
|
|
- Better fragment offset tracking
|
|
- Some (much-needed) code refactoring
|
|
|
|
uncompyle6 2.4.0 2016-05-18 (in memory of Lewis Bernstein)
|
|
|
|
- Many Python 3 bugs fixed:
|
|
* Python 3.2 to 3.5 libraries largely
|
|
uncompyle and most verify
|
|
- pydisassembler:
|
|
* disassembles all code objects in a file
|
|
* can select showing bytecode before
|
|
or after uncompyle mangling, option -U
|
|
- DRY scanner code (but more is desired)
|
|
- Some code cleanup (but more is desired)
|
|
- Misc Bugs fixed:
|
|
* handle complex number unmarshaling
|
|
* Running on Python 2 to works on Python 3.5 bytecodes now
|
|
|
|
uncompyle6 2.3.5 and 2.3.6 2016-05-14
|
|
|
|
- Python 2 class decorator fix (thanks to Tey)
|
|
- Fix fragment parsing bugs
|
|
- Fix some Python 3 parsing bugs:
|
|
* Handling single in * parameter
|
|
* "while True"
|
|
* escape from for inside if
|
|
* yield expressions
|
|
- Correct history based on info from Dan Pascu
|
|
- Fix up pip packaging, ugh.
|
|
|
|
uncompyle6 2.3.4 2016-05-5
|
|
|
|
- More Python 3.5 parsing bugs addressed
|
|
- decompiling Python 3.5 from other Python versions works
|
|
- test from Python 3.2
|
|
- remove "__module__ = __name__" in 3.0 <= Python 3.2
|
|
|
|
uncompyle6 2.3.3 2016-05-3
|
|
|
|
- Fix bug in running uncompyle6 script on Python 3
|
|
- Speed up performance on deparsing long lists by grouping in chunks of 32 and 256 items
|
|
- DRY Python expressions between Python 2 and 3
|
|
|
|
uncompyle6 2.3.2 2016-05-1
|
|
|
|
- Add --version option standalone scripts
|
|
- Correct License information in package
|
|
- expose fns uncompyle_file, load_file, and load_module
|
|
- Start to DRY Python2 and Python3 grammars Separate out 3.2, and 3.5+
|
|
specific grammar code
|
|
- Fix bug in 3.5+ constant map parsing
|
|
|
|
uncompyle6 2.3.0, 2.3.1 2016-04-30
|
|
|
|
- Require spark_parser >= 1.1.0
|
|
|
|
uncompyle6 2.2.0 2016-04-30
|
|
|
|
- Spark is no longer here but pulled separate package spark_parse
|
|
- Python 3 parsing fixes
|
|
- More tests
|
|
|
|
uncompyle6 2.2.0 2016-04-02
|
|
|
|
- Support single-mode (in addition to exec-mode) compilation
|
|
- Start to DRY Python 2 and Python 3 grammars
|
|
- Fix bug in if else ternary construct
|
|
- Fix bug in uncomplye6 -d and -r options (via lelicopter)
|
|
|
|
|
|
uncompyle6 2.1.3 2016-01-02
|
|
|
|
- Limited support for decompiling Python 3.5
|
|
- Improve Python 3 class deparsing
|
|
- Handle MAKE_CLOSURE opcode
|
|
- Start to DRY opcode code.
|
|
- increase test coverage
|
|
- fix misc small bugs and some improvements
|
|
|
|
uncompyle6 2.1.2 2015-12-31
|
|
|
|
- Fix cross-version Marshal loading
|
|
- Handle Python 3.3 . dotted class names
|
|
- Limited 3.5 support: allows deparsing other versions
|
|
- Refactor code more, misc bug fixes
|
|
|
|
uncompyle6 2.1.1 2015-12-27
|
|
|
|
- packaging issues
|
|
|
|
uncompyle6 2.1.0 2015-12-27
|
|
|
|
- Python 3.x deparsing much more solid
|
|
- Better cross-version deparsing
|
|
|
|
Some bugs squashed while other run rampant. Some code cleanup while
|
|
much more is yet needed. More tests added, but many more are needed.
|
|
|
|
|
|
uncompyle6 2.0.0 2015-12-11
|
|
|
|
Changes from uncompyle2
|
|
|
|
- Can give code fragments given an instruction offset. See
|
|
https://github.com/rocky/python-uncompyle6/wiki/Deparsing-technology-and-its-use-in-exact-location-reporting
|
|
- Runs under Python3. Decompiles Python 2.5-2.7 and some Python 3.2-3.4
|
|
- Allows for multiple Python grammars, specifically Python2 vs Python 3
|
|
- Add a cross-version Python disassembler command-line utility
|
|
- Add some py.test and start reorganizing tests
|
|
|
|
SPARK:
|
|
add option to show grammar rules applied
|
|
allow Python-style # comments in grammar
|
|
Runs on Python 3 and Python 2
|