Merge 3.6 (issue #28635)

This commit is contained in:
Yury Selivanov 2016-11-28 11:45:58 -05:00
commit 50c13f216e
1 changed files with 34 additions and 0 deletions

View File

@ -2240,3 +2240,37 @@ Changes in the C API
* :c:func:`Py_Exit` (and the main interpreter) now override the exit status
with 120 if flushing buffered data failed. See :issue:`5319`.
CPython bytecode changes
------------------------
There have been several major changes to the :term:`bytecode` in Python 3.6.
* The Python interpreter now uses a 16-bit wordcode instead of bytecode.
(Contributed by Demur Rumed with input and reviews from
Serhiy Storchaka and Victor Stinner in :issue:`26647` and :issue:`28050`.)
* The new :opcode:`FORMAT_VALUE` and :opcode:`BUILD_STRING` opcodes as part
of the :ref:`formatted string literal <whatsnew36-pep498>` implementation.
(Contributed by Eric Smith in :issue:`25483` and
Serhiy Storchaka in :issue:`27078`.)
* The new :opcode:`BUILD_CONST_KEY_MAP` opcode to optimize the creation
of dictionaries with constant keys.
(Contributed by Serhiy Storchaka in :issue:`27140`.)
* The function call opcodes have been heavily reworked for better performance
and simpler implementation.
The :opcode:`MAKE_FUNCTION`, :opcode:`CALL_FUNCTION`,
:opcode:`CALL_FUNCTION_KW` and :opcode:`BUILD_MAP_UNPACK_WITH_CALL` opcodes
have been modified, the new :opcode:`CALL_FUNCTION_EX` and
:opcode:`BUILD_TUPLE_UNPACK_WITH_CALL` have been added, and
``CALL_FUNCTION_VAR``, ``CALL_FUNCTION_VAR_KW`` and ``MAKE_CLOSURE`` opcodes
have been removed.
(Contributed by Demur Rumed in :issue:`27095`, and Serhiy Storchaka in
:issue:`27213`, :issue:`28257`.)
* The new :opcode:`SETUP_ANNOTATIONS` and :opcode:`STORE_ANNOTATION` opcodes
have been added to support the new :term:`variable annotation` syntax.
(Contributed by Ivan Levkivskyi in :issue:`27985`.)