* Add support for Python 3.12 PR #122
* Support for Python 3.12, comes with a number of changes
reflecting changes in CPython bytecode itself:
* handle the ability of ``LOAD_ATTR`` to replace
``LOAD_METHOD``
* As a consequence the argument is now a ``tuple[bool, str]``
* similarly ``LOAD_SUPER_ATTR`` which uses the 2 lowest bits as
flag takes
* a ``tuple[bool, bool, str]`` as argument
* ``POP_JUMP_IF_*`` instructions are undirected in Python 3.12
* ``YIELD_VALUE`` now takes an argument
* Support for ``CALL_INSTRINSIC_1/2`` led to the addition of 2
new enums to represent the argument
- Update to 0.14.0
- initial version 0.11.0, required by python-enaml
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bytecode?expand=0&rev=14
- Update to 0.14.0
* New features:
Removed the peephole optimizer PR #107
Basically changes in Python 3.11 made it hard to port and the maintenance cost exceeded the perceived use. It could be re-added if there is a demand for it.
Add support for Python 3.11 PR #107
Support for Python 3.11, comes with a number of changes reflecting changes in CPython bytecode itself:
support for the exception table in ConcreteBytecode
support for pseudo-instruction TryBegin and TryEnd describing the exception table in Bytecode and ControlflowGraph
new keyword arguments in conversion method related to computations required for the exception table
handling of CACHE opcode at the ConcreteBytecode level
handling of the ability of LOAD_GLOBAL to push NULL (the argument is now a tuple[bool, str])
support for end_lineno and column offsets in instructions
support for co_qualname (as qualname on bytecode objects)
and a number of internal changes related to changes in the internal bytecode representation.
Add type annotations and make types stricter PR # 105 In particular, ConcreteInstr does not inherit from Instr anymore and one cannot
use ConcreteInstr in Bytecode object. This is saner than before.
* Bugfixes:
Removed EXC_MATCH from the Compare enumeration starting with Python 3.9. The new JUMP_IF_NOT_EXC_MATCH opcode should be used instead.
Removed IN, NOT_IN, IS, NOT_IS from the Compare enumeration starting with Python 3.9. The new CONTAINS_OP and IS_OP opcodes should be used instead.
Add proper pre and post stack effects to all opcodes (up to Python 3.11) PR #106#107
* Maintenance:
Make the install process PEP517 compliant PR #97
Drop support for Python 3.6 and 3.7 PR #100
OBS-URL: https://build.opensuse.org/request/show/1041911
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bytecode?expand=0&rev=6
- Update to 0.12.0
* All calculations of stacksize now check for stack underflow to
avoid segfault at runtime PR #69
* Fix recursion limitations when compiling bytecode with numerous basic
blocks. PR #57
* Fix handling of line offsets. Issue #67, PR #71
* Forbid an :class:`Instr` to hold an EXTENDED_ARG op_code PR #65
* Forbid the use of :class:`ConcreteInstr` in :class:`Bytecode` and
:class:`ControlFlowGraph` PR #65
This is motivated by the extra complexity that handling possible EXTENDED_ARG
instruction in those representation would bring (stack computation, etc)
* Always remove EXTENDED_ARG when converting :class:`ConcreteBytecode` to
:class:`Bytecode` PR #65
* This is equivalent to say that the :class:`ConcreteBytecode` converted to
:class:`Bytecode` was generated by :meth:`ConcreteBytecode.from_code`
with extended_args=False
* :class:`Instr` now has a new method :meth:`Instr.pre_and_post_stack_effect`
for checking the prerequisite stack size of an operation PR #69
* :meth:`_compute_stack_size` now uses :meth:`Instr.pre_and_post_stack_effect`
to compute the stack size to reject code that will lead to runtime segfault
caused by stack underflow PR #69
OBS-URL: https://build.opensuse.org/request/show/915240
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bytecode?expand=0&rev=4