Mark Shannon
582aaf19e8
bpo-41463: Generate information about jumps from 'opcode.py' rather than duplicating it in 'compile.c' (GH-21714)
...
Generate information about jumps from 'opcode.py' rather than duplicate it in 'compile.c'
2020-08-04 17:30:11 +01:00
Mark Shannon
6e8128f02e
bpo-41323: Perform 'peephole' optimizations directly on the CFG. (GH-21517)
...
* Move 'peephole' optimizations into compile.c and perform them directly on the CFG.
2020-07-30 10:03:00 +01:00
Matthias Bussonnier
bd46174a5a
bpo-41218: Only mark async code with CO_COROUTINE. ( #21357 )
...
3.8.3 had a regression where compiling with
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT woudl agressively mark things are
coroutine even if there were not.
2020-07-06 23:26:52 +02:00
Pablo Galindo
60eb9f1ab5
bpo-39151: Simplify DFS in the assembler (GH-17733)
2020-06-28 01:55:47 +01:00
Pablo Galindo
1ed83adb0e
bpo-40939: Remove the old parser (GH-20768)
...
This commit removes the old parser, the deprecated parser module, the old parser compatibility flags and environment variables and all associated support code and documentation.
2020-06-11 17:30:46 +01:00
Mark Shannon
db64f12e4d
Make sure that keyword arguments are merged into the arguments dictionary when dict unpacking and keyword arguments are interleaved. (GH-20553)
2020-06-01 10:42:42 +01:00
Pablo Galindo
ee40e4b856
bpo-40334: Don't downcast from Py_ssize_t to int (GH-19671)
2020-04-23 03:43:08 +01:00
Pablo Galindo
c5fc156852
bpo-40334: PEP 617 implementation: New PEG parser for CPython (GH-19503)
...
Co-authored-by: Guido van Rossum <guido@python.org>
Co-authored-by: Lysandros Nikolaou <lisandrosnik@gmail.com>
2020-04-22 23:29:27 +01:00
Victor Stinner
da7933ecc3
bpo-40268: Add _PyInterpreterState_GetConfig() (GH-19492)
...
Don't access PyInterpreterState.config member directly anymore, but
use new functions:
* _PyInterpreterState_GetConfig()
* _PyInterpreterState_SetConfig()
* _Py_GetConfig()
2020-04-13 03:04:28 +02:00
Zackery Spytz
08050e959e
bpo-40147: Fix a compiler warning on Windows in Python/compile.c (GH-19389)
...
Change the type of nkeywords to Py_ssize_t.
2020-04-06 07:47:47 +01:00
Pablo Galindo
254ec78341
bpo-40147: Move the check for duplicate keywords to the compiler (GH-19289)
2020-04-03 20:37:13 +01:00
Furkan Önder
cb6534e1a8
bpo-40067: Improve error messages for multiple star expressions in assignments (GH-19168)
...
Co-Authored-By: Batuhan Taşkaya <isidentical@gmail.com>
Co-Authored-By: Pablo Galindo <Pablogsal@gmail.com>
2020-03-26 01:54:31 +00:00
Victor Stinner
87d3b9db4a
bpo-39882: Add _Py_FatalErrorFormat() function (GH-19157)
2020-03-25 19:27:36 +01:00
Andy Lester
7668a8bc93
Use calloc-based functions, not malloc. (GH-19152)
2020-03-24 23:26:44 -05:00
Batuhan Taşkaya
9052f7a41b
bpo-39562: Allow executing asynchronous comprehensions in the asyncio REPL (GH-18968)
...
Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
2020-03-19 11:35:44 +00:00
Pablo Galindo
d112c600ab
bpo-39220: Do not optimise annotation if 'from __future__ import annotations' is used (GH-17866)
...
Do not apply AST-based optimizations if 'from __future__ import annotations' is used in order to
prevent information lost in the final version of the annotations.
2020-03-18 23:02:09 +00:00
Serhiy Storchaka
6b97598fb6
bpo-39988: Remove ast.AugLoad and ast.AugStore node classes. (GH-19038)
2020-03-17 23:41:08 +02:00
Serhiy Storchaka
61cb3d02b8
bpo-39987: Simplify setting lineno in the compiler. (GH-19037)
2020-03-17 18:07:30 +02:00
Batuhan Taşkaya
8689209e03
bpo-39969: Remove ast.Param node class as is no longer used (GH-19020)
2020-03-15 19:32:17 +00:00
Pablo Galindo
90235810ec
bpo-39965: Correctly raise SyntaxError if await is used outside async functions when PyCF_ALLOW_TOP_LEVEL_AWAIT is set (GH-19010)
2020-03-15 04:29:22 +00:00
Andy Lester
76d5877b72
closes bpo-39922: Remove unused args from four functions. (GH-18893)
2020-03-10 19:18:12 -07:00
Serhiy Storchaka
13d52c2686
bpo-34822: Simplify AST for subscription. (GH-9605)
...
* Remove the slice type.
* Make Slice a kind of the expr type instead of the slice type.
* Replace ExtSlice(slices) with Tuple(slices, Load()).
* Replace Index(value) with a value itself.
All non-terminal nodes in AST for expressions are now of the expr type.
2020-03-10 18:52:34 +02:00
Brandt Bucher
d5aa2e941c
bpo-39890: Don't mutate the AST when compiling starred assignments (GH-18833)
2020-03-08 03:44:18 +00:00
Batuhan Taşkaya
d82e469048
bpo-39639: Remove the AST "Suite" node and associated code (GH-18513)
...
The AST "Suite" node is no longer used and it can be removed from the ASDL definition and related structures (compiler, visitors, ...).
Co-Authored-By: Victor Stinner <vstinner@python.org>
Co-authored-by: Brett Cannon <54418+brettcannon@users.noreply.github.com>
Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
2020-03-04 16:16:46 +00:00
Serhiy Storchaka
8c579b1cc8
bpo-32856: Optimize the assignment idiom in comprehensions. (GH-16814)
...
Now `for y in [expr]` in comprehensions is as fast as a simple
assignment `y = expr`.
2020-02-12 12:18:59 +02:00
Victor Stinner
a102ed7d2f
bpo-39573: Use Py_TYPE() macro in Python and Include directories (GH-18391)
...
Replace direct access to PyObject.ob_type with Py_TYPE().
2020-02-07 02:24:48 +01:00
Mark Shannon
8a4cd700a7
bpo-39320: Handle unpacking of **values in compiler (GH-18141)
...
* Add DICT_UPDATE and DICT_MERGE bytecodes. Use them for ** unpacking.
* Remove BUILD_MAP_UNPACK and BUILD_MAP_UNPACK_WITH_CALL, as they are now unused.
* Update magic number for ** unpacking opcodes.
* Update dis.rst to incorporate new bytecodes.
* Add blurb entry.
2020-01-27 09:57:45 +00:00
Mark Shannon
13bc13960c
bpo-39320: Handle unpacking of *values in compiler (GH-17984)
...
* Add three new bytecodes: LIST_TO_TUPLE, LIST_EXTEND, SET_UPDATE. Use them to implement star unpacking expressions.
* Remove four bytecodes BUILD_LIST_UNPACK, BUILD_TUPLE_UNPACK, BUILD_SET_UNPACK and BUILD_TUPLE_UNPACK_WITH_CALL opcodes as they are now unused.
* Update magic number and dis.rst for new bytecodes.
2020-01-23 09:25:17 +00:00
Ammar Askar
e92d39303f
Fix compiler warning on Windows (GH-18012)
...
Python-ast.h contains a macro named Yield that conflicts with the Yield macro
in Windows system headers. While Python-ast.h has an "undef Yield" directive
to prevent this, it means that Python-ast.h must be included before Windows
header files or we run into a re-declaration warning. In commit c96be811fa
an include for pycore_pystate.h was added which indirectly includes Windows
header files. In this commit we re-order the includes to fix this warning.
2020-01-15 10:48:40 -06:00
Mark Shannon
9af0e47b17
bpo-39156: Break up COMPARE_OP into four logically distinct opcodes. (GH-17754)
...
Break up COMPARE_OP into four logically distinct opcodes:
* COMPARE_OP for rich comparisons
* IS_OP for 'is' and 'is not' tests
* CONTAINS_OP for 'in' and 'is not' tests
* JUMP_IF_NOT_EXC_MATCH for checking exceptions in 'try-except' statements.
2020-01-14 10:12:45 +00:00
Mark Shannon
88dce26da6
Fix handling of line numbers around finally-blocks. ( #17737 )
2019-12-30 09:53:36 +00:00
Brandt Bucher
6dd9b64770
bpo-38328: Speed up the creation time of constant list and set display. (GH-17114)
2019-11-26 15:16:53 +09:00
Mark Shannon
fee552669f
Produce cleaner bytecode for 'with' and 'async with' by generating separate code for normal and exceptional paths. ( #6641 )
...
Remove BEGIN_FINALLY, END_FINALLY, CALL_FINALLY and POP_FINALLY bytecodes. Implement finally blocks by code duplication.
Reimplement frame.lineno setter using line numbers rather than bytecode offsets.
2019-11-21 09:11:43 +00:00
Pablo Galindo
6c3e66a34b
bpo-38640: Allow break and continue in always false while loops (GH-16992)
2019-10-30 11:53:26 +00:00
Hansraj Das
01171ebd96
Typo fix: "empy" should be "empty". (GH-16666)
2019-10-08 19:24:02 -07:00
T. Wouters
99b54d6817
Revert "Fix depth-first-search computation in compile.c (GH-16042)" (GH-16050)
...
This reverts commit 355f3e1e5c
.
bpo-38135
2019-09-12 15:05:33 +01:00
Mark Shannon
355f3e1e5c
Fix depth-first-search computation in compile.c (GH-16042)
2019-09-12 06:42:23 -07:00
Zackery Spytz
ce6a070414
bpo-34880: Add the LOAD_ASSERTION_ERROR opcode. (GH-15073)
...
Fix assert statement misbehavior if AssertionError is shadowed.
2019-08-25 12:44:09 +03:00
Serhiy Storchaka
ef61c524dd
bpo-37830: Fix compilation of break and continue in finally. (GH-15320)
...
Fix compilation of "break" and "continue" in the
"finally" block when the corresponding "try" block
contains "return" with a non-constant value.
2019-08-24 13:11:52 +03:00
Min ho Kim
c4cacc8c5e
Fix typos in comments, docs and test names ( #15018 )
...
* Fix typos in comments, docs and test names
* Update test_pyparse.py
account for change in string length
* Apply suggestion: splitable -> splittable
Co-Authored-By: Terry Jan Reedy <tjreedy@udel.edu>
* Apply suggestion: splitable -> splittable
Co-Authored-By: Terry Jan Reedy <tjreedy@udel.edu>
* Apply suggestion: Dealloccte -> Deallocate
Co-Authored-By: Terry Jan Reedy <tjreedy@udel.edu>
* Update posixmodule checksum.
* Reverse idlelib changes.
2019-07-30 18:16:13 -04:00
Pablo Galindo
18c5f9d44d
bpo-37500: Make sure dead code does not generate bytecode but also detect syntax errors (GH-14612)
...
https://bugs.python.org/issue37500
Add a new field to the compiler structure that allows to be configured
so no bytecode is emitted. In this way is possible to detect errors by
walking the nodes while preserving optimizations.
https://bugs.python.org/issue37500
2019-07-15 02:15:01 -07:00
Pablo Galindo
4a2edc34a4
bpo-37221: Add PyCode_NewWithPosOnlyArgs to be used internally and set PyCode_New as a compatibility wrapper (GH-13959)
...
Add PyCode_NewEx to be used internally and set PyCode_New as a compatibility wrapper
2019-07-01 12:35:05 +02:00
Jörn Heissler
c8a35417db
bpo-35224: Reverse evaluation order of key: value in dict comprehensions (GH-14139)
...
… as proposed in PEP 572; key is now evaluated before value.
https://bugs.python.org/issue35224
2019-06-22 07:40:55 -07:00
Victor Stinner
37d66d7d4b
bpo-37253: Add _PyCompilerFlags_INIT macro (GH-14018)
...
Add a new _PyCompilerFlags_INIT macro to initialize PyCompilerFlags
variables, rather than initializing cf_flags and cf_feature_version
explicitly in each variable.
2019-06-13 02:16:41 +02:00
Pablo Galindo
cd74e66a8c
bpo-37122: Make co->co_argcount represent the total number of positonal arguments in the code object (GH-13726)
2019-06-01 18:08:04 +01:00
Pablo Galindo
a0c01bf136
bpo-37115: Support annotations in positional-only arguments (GH-13698)
2019-05-31 15:19:50 +01:00
Eric V. Smith
6f6ff8a565
bpo-37050: Remove expr_text from FormattedValue ast node, use Constant node instead (GH-13597)
...
When using the "=" debug functionality of f-strings, use another Constant node (or a merged constant node) instead of adding expr_text to the FormattedValue node.
2019-05-27 15:31:52 -04:00
Victor Stinner
331a6a56e9
bpo-36763: Implement the PEP 587 (GH-13592)
...
* Add a whole new documentation page:
"Python Initialization Configuration"
* PyWideStringList_Append() return type is now PyStatus,
instead of int
* PyInterpreterState_New() now calls PyConfig_Clear() if
PyConfig_InitPythonConfig() fails.
* Rename files:
* Python/coreconfig.c => Python/initconfig.c
* Include/cpython/coreconfig.h => Include/cpython/initconfig.h
* Include/internal/: pycore_coreconfig.h => pycore_initconfig.h
* Rename structures
* _PyCoreConfig => PyConfig
* _PyPreConfig => PyPreConfig
* _PyInitError => PyStatus
* _PyWstrList => PyWideStringList
* Rename PyConfig fields:
* use_module_search_paths => module_search_paths_set
* module_search_path_env => pythonpath_env
* Rename PyStatus field: _func => func
* PyInterpreterState: rename core_config field to config
* Rename macros and functions:
* _PyCoreConfig_SetArgv() => PyConfig_SetBytesArgv()
* _PyCoreConfig_SetWideArgv() => PyConfig_SetArgv()
* _PyCoreConfig_DecodeLocale() => PyConfig_SetBytesString()
* _PyInitError_Failed() => PyStatus_Exception()
* _Py_INIT_ERROR_TYPE_xxx enums => _PyStatus_TYPE_xxx
* _Py_UnixMain() => Py_BytesMain()
* _Py_ExitInitError() => Py_ExitStatusException()
* _Py_PreInitializeFromArgs() => Py_PreInitializeFromBytesArgs()
* _Py_PreInitializeFromWideArgs() => Py_PreInitializeFromArgs()
* _Py_PreInitialize() => Py_PreInitialize()
* _Py_RunMain() => Py_RunMain()
* _Py_InitializeFromConfig() => Py_InitializeFromConfig()
* _Py_INIT_XXX() => _PyStatus_XXX()
* _Py_INIT_FAILED() => _PyStatus_EXCEPTION()
* Rename 'err' PyStatus variables to 'status'
* Convert RUN_CODE() macro to config_run_code() static inline function
* Remove functions:
* _Py_InitializeFromArgs()
* _Py_InitializeFromWideArgs()
* _PyInterpreterState_GetCoreConfig()
2019-05-27 16:39:22 +02:00
Matthias Bussonnier
565b4f1ac7
bpo-34616: Add PyCF_ALLOW_TOP_LEVEL_AWAIT to allow top-level await (GH-13148)
...
Co-Authored-By: Yury Selivanov <yury@magic.io>
2019-05-21 16:12:02 -04:00
Chris Angelico
ad098b6750
Annotate the unexplained assignment in exception unbinding (GH-11448)
2019-05-21 09:34:19 -04:00