Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | gh-121040: Use __attribute__((fallthrough)) (#121044) | Victor Stinner | 2024-06-27 | 1 | -2/+2 |
| | | | | | | | | | | | | | Fix warnings when using -Wimplicit-fallthrough compiler flag. Annotate explicitly "fall through" switch cases with a new _Py_FALLTHROUGH macro which uses __attribute__((fallthrough)) if available. Replace "fall through" comments with _Py_FALLTHROUGH. Add _Py__has_attribute() macro. No longer define __has_attribute() macro if it's not defined. Move also _Py__has_builtin() at the top of pyport.h. Co-Authored-By: Nikita Sobolev <mail@sobolevn.me> | ||||
* | Fixes loop variables to be the same types as their limit (GH-120958) | Steve Dower | 2024-06-24 | 1 | -1/+1 |
| | |||||
* | gh-113993: Allow interned strings to be mortal, and fix related issues ↵ | Petr Viktorin | 2024-06-21 | 1 | -2/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (GH-120520) * Add an InternalDocs file describing how interning should work and how to use it. * Add internal functions to *explicitly* request what kind of interning is done: - `_PyUnicode_InternMortal` - `_PyUnicode_InternImmortal` - `_PyUnicode_InternStatic` * Switch uses of `PyUnicode_InternInPlace` to those. * Disallow using `_Py_SetImmortal` on strings directly. You should use `_PyUnicode_InternImmortal` instead: - Strings should be interned before immortalization, otherwise you're possibly interning a immortalizing copy. - `_Py_SetImmortal` doesn't handle the `SSTATE_INTERNED_MORTAL` to `SSTATE_INTERNED_IMMORTAL` update, and those flags can't be changed in backports, as they are now part of public API and version-specific ABI. * Add private `_only_immortal` argument for `sys.getunicodeinternedsize`, used in refleak test machinery. * Make sure the statically allocated string singletons are unique. This means these sets are now disjoint: - `_Py_ID` - `_Py_STR` (including the empty string) - one-character latin-1 singletons Now, when you intern a singleton, that exact singleton will be interned. * Add a `_Py_LATIN1_CHR` macro, use it instead of `_Py_ID`/`_Py_STR` for one-character latin-1 singletons everywhere (including Clinic). * Intern `_Py_STR` singletons at startup. * For free-threaded builds, intern `_Py_LATIN1_CHR` singletons at startup. * Beef up the tests. Cover internal details (marked with `@cpython_only`). * Add lots of assertions Co-Authored-By: Eric Snow <ericsnowcurrently@gmail.com> | ||||
* | gh-98442: fix locations of with statement's cleanup instructions (#120763) | Irit Katriel | 2024-06-20 | 1 | -1/+3 |
| | | | gh-98442: fix location of with statement's cleanup instructions | ||||
* | gh-120733: rename internal compiler functions according to naming convention ↵ | Irit Katriel | 2024-06-19 | 1 | -30/+23 |
| | | | | (#120734) | ||||
* | gh-120722: Set position on RETURN_VALUE in lambda (#120724) | Jelle Zijlstra | 2024-06-19 | 1 | -1/+1 |
| | |||||
* | GH-120507: Lower the `BEFORE_WITH` and `BEFORE_ASYNC_WITH` instructions. ↵ | Mark Shannon | 2024-06-18 | 1 | -3/+15 |
| | | | | | | | | | (#120640) * Remove BEFORE_WITH and BEFORE_ASYNC_WITH instructions. * Add LOAD_SPECIAL instruction * Reimplement `with` and `async with` statements using LOAD_SPECIAL | ||||
* | gh-93691: fix too broad source locations of for statement iterators (#120330) | Irit Katriel | 2024-06-12 | 1 | -0/+7 |
| | |||||
* | gh-119180: PEP 649 compiler changes (#119361) | Jelle Zijlstra | 2024-06-11 | 1 | -149/+208 |
| | |||||
* | gh-93691: fix too broad source locations of with-statement instructions ↵ | Irit Katriel | 2024-06-07 | 1 | -3/+2 |
| | | | | (#120125) | ||||
* | gh-119744: move a few functions from compile.c to flowgraph.c (#119745) | Irit Katriel | 2024-05-30 | 1 | -147/+8 |
| | |||||
* | gh-119689: generate stack effect metadata for pseudo instructions (#119691) | Irit Katriel | 2024-05-29 | 1 | -43/+14 |
| | |||||
* | gh-119676: remove several pseudo instructions which are use only in codegen ↵ | Irit Katriel | 2024-05-28 | 1 | -13/+5 |
| | | | | (#119677) | ||||
* | gh-119311: Fix name mangling with PEP 695 generic classes (#119464) | Jelle Zijlstra | 2024-05-28 | 1 | -6/+6 |
| | | | | Fixes #119311. Fixes #119395. | ||||
* | gh-119180: Add LOAD_COMMON_CONSTANT opcode (#119321) | Jelle Zijlstra | 2024-05-22 | 1 | -1/+1 |
| | | | | | | | | | | The PEP 649 implementation will require a way to load NotImplementedError from the bytecode. @markshannon suggested implementing this by converting LOAD_ASSERTION_ERROR into a more general mechanism for loading constants. This PR adds this new opcode. I will work on the rest of the implementation of the PEP separately. Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com> | ||||
* | gh-118465: Add __firstlineno__ attribute to class (GH-118475) | Serhiy Storchaka | 2024-05-06 | 1 | -0/+5 |
| | | | | It is set by compiler with the line number of the first line of the class definition. | ||||
* | gh-118513: Fix sibling comprehensions with a name bound in one and global in ↵ | Carl Meyer | 2024-05-03 | 1 | -39/+42 |
| | | | | | | the other (#118526) Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com> Co-authored-by: Kirill Podoprigora <kirill.bast9@mail.ru> | ||||
* | gh-116126: Implement PEP 696 (#116129) | Jelle Zijlstra | 2024-05-03 | 1 | -14/+75 |
| | | | | | Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com> | ||||
* | gh-118216: Don't consider dotted `__future__` imports (#118267) | Crowthebird | 2024-05-02 | 1 | -1/+1 |
| | |||||
* | gh-116767: fix crash on 'async with' with many context managers (GH-118348) | Irit Katriel | 2024-05-01 | 1 | -2/+16 |
| | | | | | | | Account for `add_stopiteration_handler` pushing a block for `async with`. To allow generator functions that previously almost hit the `CO_MAXBLOCKS` limit by nesting non-async blocks, the limit is increased by 1. This increase allows one more block in non-generator functions. | ||||
* | gh-117901: Add option for compiler's codegen to save nested instruction ↵ | Irit Katriel | 2024-04-24 | 1 | -0/+18 |
| | | | | sequences for introspection (#118007) | ||||
* | gh-117680: make _PyInstructionSequence a PyObject and use it in tests (#117629) | Irit Katriel | 2024-04-17 | 1 | -164/+34 |
| | |||||
* | gh-117494: extract the Instruction Sequence data structure into a separate ↵ | Irit Katriel | 2024-04-04 | 1 | -166/+31 |
| | | | | file (#117496) | ||||
* | gh-117411: move PyFutureFeatures to pycore_symtable.h and make it private ↵ | Irit Katriel | 2024-04-02 | 1 | -4/+4 |
| | | | | (#117412) | ||||
* | gh-117288: Allocate fewer label IDs in _PyCfg_ToInstructionSequence (#117290) | Irit Katriel | 2024-03-27 | 1 | -4/+30 |
| | |||||
* | gh-115775: Compiler adds __static_attributes__ field to classes (#115913) | Irit Katriel | 2024-03-26 | 1 | -1/+53 |
| | |||||
* | gh-115756: make PyCode_GetFirstFree an unstable API (GH-115781) | Bogdan Romanyuk | 2024-03-19 | 1 | -1/+1 |
| | |||||
* | gh-111789: Use PyDict_GetItemRef() in Python/compile.c (GH-112083) | Serhiy Storchaka | 2024-02-23 | 1 | -5/+4 |
| | | | Co-authored-by: Łukasz Langa <lukasz@langa.pl> | ||||
* | gh-115376: fix segfault in _testinternalcapi.compiler_codegen on bad input ↵ | Irit Katriel | 2024-02-15 | 1 | -14/+28 |
| | | | | (#115379) | ||||
* | gh-115347: avoid emitting redundant NOP for the docstring with -OO (#115494) | Irit Katriel | 2024-02-15 | 1 | -18/+20 |
| | |||||
* | gh-112066: Use `PyDict_SetDefaultRef` in place of `PyDict_SetDefault`. (#112211) | Sam Gross | 2024-02-07 | 1 | -12/+17 |
| | | | | | This changes a number of internal usages of `PyDict_SetDefault` to use `PyDict_SetDefaultRef`. Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com> | ||||
* | gh-114569: Use PyMem_* APIs for non-PyObjects in compiler (#114587) | Erlend E. Aasland | 2024-01-29 | 1 | -13/+12 |
| | |||||
* | GH-112354: `END_FOR` instruction to only pop one value. (GH-114247) | Mark Shannon | 2024-01-24 | 1 | -0/+10 |
| | | | | * Compiler emits END_FOR; POP_TOP instead of END_FOR. To support tier 2 side exits in loops. | ||||
* | gh-107901: synthetic jumps which are not at end of loop no longer check the ↵ | Irit Katriel | 2024-01-06 | 1 | -20/+20 |
| | | | | eval breaker (#113721) | ||||
* | GH-111485: Generate instruction and uop metadata (GH-113287) | Mark Shannon | 2023-12-20 | 1 | -30/+7 |
| | |||||
* | gh-99606: Make code generated for an empty f-string identical to that of a ↵ | Irit Katriel | 2023-11-26 | 1 | -2/+6 |
| | | | | normal empty string (#112407) | ||||
* | gh-107149: make new opcode util functions private rather than public and ↵ | Irit Katriel | 2023-11-14 | 1 | -8/+8 |
| | | | | unstable (#112042) | ||||
* | gh-111354: Simplify _PyGen_yf by moving some of its work to the compiler and ↵ | Irit Katriel | 2023-11-03 | 1 | -2/+2 |
| | | | | frame state (#111648) | ||||
* | gh-111354: simplify detection of RESUME after YIELD_VALUE at except-depth 1 ↵ | Irit Katriel | 2023-11-02 | 1 | -2/+2 |
| | | | | (#111459) | ||||
* | gh-108082: Use PyErr_FormatUnraisable() (GH-111580) | Serhiy Storchaka | 2023-11-02 | 1 | -3/+2 |
| | | | | | | Replace most of calls of _PyErr_WriteUnraisableMsg() and some calls of PyErr_WriteUnraisable(NULL) with PyErr_FormatUnraisable(). Co-authored-by: Victor Stinner <vstinner@python.org> | ||||
* | gh-111354: define names for RESUME oparg values (#111365) | Irit Katriel | 2023-10-26 | 1 | -3/+3 |
| | |||||
* | gh-105658: fix excess trace events for except block ending with a ↵ | Irit Katriel | 2023-09-14 | 1 | -14/+2 |
| | | | | conditional block (#109384) | ||||
* | GH-105848: Replace KW_NAMES + CALL with LOAD_CONST + CALL_KW (GH-109300) | Brandt Bucher | 2023-09-13 | 1 | -10/+12 |
| | |||||
* | gh-109195: fix source location for super load before LOAD_SUPER_ATTR (#109289) | Carl Meyer | 2023-09-11 | 1 | -1/+1 |
| | |||||
* | gh-106320: Remove private _PyErr_WriteUnraisableMsg() (#108863) | Victor Stinner | 2023-09-04 | 1 | -0/+1 |
| | | | | | | Move the private _PyErr_WriteUnraisableMsg() functions to the internal C API (pycore_pyerrors.h). Move write_unraisable_exc() from _testcapi to _testinternalcapi. | ||||
* | gh-108654: restore comprehension locals before handling exception (#108659) | Carl Meyer | 2023-08-30 | 1 | -14/+53 |
| | | | Co-authored-by: Dong-hee Na <donghee.na92@gmail.com> | ||||
* | gh-105481: remove regen-opcode. Generated _PyOpcode_Caches in regen-cases. ↵ | Irit Katriel | 2023-08-23 | 1 | -0/+1 |
| | | | | (#108367) | ||||
* | gh-108308: Replace PyDict_GetItem() with PyDict_GetItemRef() (#108309) | Victor Stinner | 2023-08-23 | 1 | -7/+27 |
| | | | | | | | | | Replace PyDict_GetItem() calls with PyDict_GetItemRef() or PyDict_GetItemWithError() to handle errors. * Replace PyLong_AS_LONG() with _PyLong_AsInt() and check for errors. * Check for PyDict_Contains() error. * pycore_init_builtins() checks for _PyType_Lookup() failure. | ||||
* | gh-108113: Make it possible to optimize an AST (#108282) | Irit Katriel | 2023-08-23 | 1 | -0/+18 |
| | |||||
* | gh-105724: Add location information to `assert` errors (GH-105935) | Nikita Sobolev | 2023-08-16 | 1 | -1/+1 |
| |