uncompyle6 2.10.1 2016-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 2016-05-30 Elaine Gordon

- Add fuzzy offset deparse lookup
- 3.6 bugfixes
   - 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 (Gregrory)
- 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 2016-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 2016-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:
  * improprer 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 keywoard-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 incompatiblity 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
- Simpify 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 varible 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 verifification 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 improvments

uncompyle6 2.5.0 2016-06-22  Summer Solstace

- 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 libaries 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 addtion 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
