2020-06-12 08:26:47 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-xdis: updated to 4.6.1
4.6.1:
The main purpose of this release is to support x-python better.
Fix a bad bug in handling byte constants in 3.x. How could this go so long fixed?
More custom formatting across more opcodes
* CALL_FUNCTION, CALL_FUNCTION_KW, CALL_FUNCTION_VAR, etc
* MAKE_FUNCTION
* LOAD_CONST in some cases
Go over magics numbers, yet again
Update See also links
|
2020-05-23 10:41:11 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-xdis: updated to 4.6.0
4.6.0:
3.8.3 added as a valid 3.8 release
command program pydisasm disassembles more Python source files now
Add better argument formatting on CALL_FUNCTION and MAKE_FUNCTION
bytecode.py now has distb
opcode modules now have variable python_implementation which is either \
"CPython" or "PyPY"
Reformat a number of files using blacken, and lint using flymake
Update __init__.py exports based on what is used in projects uncompyle6, \
decompyle3, trepan3k,
xasm and x-python
Remove duplicate findlinestarts() code. Remove testing on the Python version and \
simplify
this where possible.
get_opcode_module allows either a float and string datatype for the version, and \
coverts
the bytecode datatype when needed
Fix a bugs in marshal and unmarshal
|
2020-05-16 16:07:21 by Adam Ciarcinski | Files touched by this commit (2) |
Log message:
pytest from versioned deps.
|
2020-04-28 13:01:17 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-xdis: updated to 4.5.1
4.5.1:
Stack-effect redux
Fix bug in marshal for 3.8+ (include posonlyargcount)
Go over stack effects from 2.5 to 3.4 using and idea from Maynard
Expand stack-effect testing
|
2020-04-22 22:44:35 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-xdis: updated to 4.4.0
4.4.0:
Incompatibility: load_module() and load_module_from_file_object() now return a \
couple more parameters: is_pypy, and the sip_hash value when that is available. \
The timestamp and file_size returned on these functions is now None when they \
aren't available. Previously timestamp had been 0.
--asm option fixes
Show sip hash in 3.7+ when that is used
Handle PEP 552 bytecode-file variations more properly
Detect more intermediate Python versions in load_code_from_file_object()
3.8+ posonlyargcount in assembly... rename Kw-only field to Keyword-only
Add 3.5 canonic bytecode version Marshal dumps()
convert from byte() to str() in dumps() when needed in 3.x
to_native() convert to bytes from string when needed in 3.x.
clean up loading code by using float version values rather than magic values
|
2020-04-17 07:47:33 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-xdis: updated to 4.3.2
4.3.2:
Deleted release 4.3.0 and 4.3.1 had a bugs in detected by decompilers and in \
handling some 3.8 bytecode.
|
2020-04-16 20:32:33 by Adam Ciarcinski | Files touched by this commit (3) | |
Log message:
py-xdis: updated to 4.3.1
4.3.1:
A portable version of types.CodeType was rewritten, to make it
easier to use
and catch more errors
more complete in tracking Python types.CodeType changes
simpler in implementation by using type inheretence
more general
Previously getting bytecode read from a bytecode file or from a code
object requiring knowing a lot about the Python version of the code
type and of the currently running interpreter. That is gone now.
Use codeType2Portable() to turn a native types.CodeType or a structure read
in from a bytecode file into a portable code type. The portable code
type allows fields to be mutated, and is more flexible in the kinds of
datatypes it allows.
For example lists of thing like co_consts, or varnames can be
Python lists as well as tuples. The line number table is stored as a
dictionary mapping of address to bytecode offset rather than as a
compressed structure. Bytecode can either be a string (which is
advantageous if you are running Python before 3.x) or a sequence of
bytes which is the datatype of a code object for 3.x.
However when you need a type.CodeType that can be can be
eval()'d by the Python interpreter you are running, use the
to_native() method on the portable code type returned. It will
compress and encode the line number table, and turn lists into tuples
and convert other datatypes to the right type as needed.
If you have a complete types.Codetype structure for a particular
Python version whether, it is the one the current Python interpreter
is using or not, use the to_portable() function and it will figure
out based on the version parameter supplied (or use the current Python
interpreter version if none supplieed), which particlar portable code
type is the right one.
If on the other hand, you have a number of code-type fields which may
be incomplete, but still want to work with something that has
code-type characteristics while not worring about which fields are
required an their exact proper datatypes, use the CodeTypeUnion structure.
Internally, we use OO inheritence to reduce the amount of duplicate
code. The load_code_internal() function from unmarshal.py is now a
lot shorter and cleaner as a result of this reorganization.
New Portable Code Methods, Modules and Classes
Python 3.8-ish replace() method has been added to the portable code types
Portable code type classes Code13, Code15 have been added to more precisely \
distinguish Python 1.3 and 1.5 code types. The other portable code classes are \
Code2, Code3, and Code38.
the to_native() conversts a portable code type into a native code type
the decode_lineno_tab() method on portable code types from Python 1.5 on \
decompresses the Python encode line number table into a dictionary mapping \
offset to line number.
Incompatibility
The module xdis.code has been remamed to xdis.codetype and with
that the function iscode() moved as well. In previous versions to
use iscode() you might import it from xdis.code; now simply import
it from xdis. In general function that had been imported from a
module under xdis can now be imported simply from xdis.
The classes Compat3Code and function code2compat() and
code3compat() have been removed. Compat2Code is still around for
dropbox 2.5, but that is deprecated and will be removed when I can
figure out how to remove it from dropbox 2.5.
Other Changes
CI testing for older testing has been fixed now that 2.7 is even more deprecated.
Note Deleted release 4.3.0 had a bug in handling some 3.8 bytecode.
|
2020-03-31 18:26:13 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-xdis: updated to 4.2.4
4.2.4:
Add Instruction instance methods:
#Instruction.is_jump() and #Instruction.jumps_forward()
|
2020-03-17 11:28:07 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-xdis: updated to 4.2.3
4.2.3:
Add Python versions: 3.7.7, 3.8.2, and 3.9.0alpha1,
Create a set for "STORE" instructions
facilitate code type freezing
Warn about cross-decompilation problems for byte types
|
2019-12-31 11:16:56 by Adam Ciarcinski | Files touched by this commit (2) | |
Log message:
py-xdis: updated to 4.2.2
4.2.2:
Add Python versions: 3.6.10, 3.7.6. 3.8.1,
Update 3.9-dev to 3.9.0alpha2
Add interpolation of FUNCTION_CALL_{KW,EX} argument for 3.7-3.9
Better output of complex type values
4.2.1:
Correct and clean up compiler flags. Add 3.5+ ITERABLE_COROUTINE and
3.6+ ASYNC_GENERATOR.
Clean up PYPY 3.6 flags and opcodes Many thanks again to Arman Rigo.
Split PYPY specfic compiler-specific flags into its own thing.
|