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