python/cpython

Commits on Sep 20, 2020

Commits on Sep 19, 2020

  1. bpo-41756: Introduce PyGen_Send C API (GH-22196)

    The new API allows to efficiently send values into native generators
    and coroutines avoiding use of StopIteration exceptions to signal 
    returns.
    
    ceval loop now uses this method instead of the old "private"
    _PyGen_Send C API. This translates to 1.6x increased performance
    of 'await' calls in micro-benchmarks.
    
    Aside from CPython core improvements, this new API will also allow 
    Cython to generate more efficient code, benefiting high-performance
    IO libraries like uvloop.

Commits on Sep 18, 2020

Commits on Sep 17, 2020

Commits on Sep 16, 2020

  1. bpo-41746: Add type information to asdl_seq objects (GH-22223)

    * Add new capability to the PEG parser to type variable assignments. For instance:
    ```
           | a[asdl_stmt_seq*]=';'.small_stmt+ [';'] NEWLINE { a }
    ```
    
    * Add new sequence types from the asdl definition (automatically generated)
    * Make `asdl_seq` type a generic aliasing pointer type.
    * Create a new `asdl_generic_seq` for the generic case using `void*`.
    * The old `asdl_seq_GET`/`ast_seq_SET` macros now are typed.
    * New `asdl_seq_GET_UNTYPED`/`ast_seq_SET_UNTYPED` macros for dealing with generic sequences.
    * Changes all possible `asdl_seq` types to use specific versions everywhere.

Commits on Sep 15, 2020

  1. bpo-41631: _ast module uses again a global state (#21961)

    Partially revert commit ac46eb4:
    "bpo-38113: Update the Python-ast.c generator to PEP384 (gh-15957)".
    
    Using a module state per module instance is causing subtle practical
    problems.
    
    For example, the Mercurial project replaces the __import__() function
    to implement lazy import, whereas Python expected that "import _ast"
    always return a fully initialized _ast module.
    
    Add _PyAST_Fini() to clear the state at exit.
    
    The _ast module has no state (set _astmodule.m_size to 0). Remove
    astmodule_traverse(), astmodule_clear() and astmodule_free()
    functions.

Commits on Sep 14, 2020