summaryrefslogtreecommitdiffstats
path: root/Python
Commit message (Collapse)AuthorAgeFilesLines
* gh-103082: use IS_VALID_OPCODE instead of _PyOpcode_OpName to check if an ↵Irit Katriel2023-08-141-4/+4
| | | | opcode is defined (#107882)
* gh-106797: Remove warning logs from Python/generated_cases.c.h and ↵Dong-hee Na2023-08-122-4/+4
| | | | | executor_cases.c.h (gh-107889) gh-106797: Remove warning logs from Python/generated_cases.c.h
* GH-107674: Avoid allocating boxed ints for `sys.settrace` line events ↵Mark Shannon2023-08-101-6/+38
| | | | (GH-107780)
* gh-106149: move CFG and basicblock definitions into flowgraph.c, use them as ↵Irit Katriel2023-08-102-404/+465
| | | | opaque types in compile.c (#107639)
* GH-107774: Add missing audit event for PEP 669 (GH-107775)Mark Shannon2023-08-101-0/+3
|
* GH-106485: Dematerialize instance dictionaries when possible (GH-106539)Brandt Bucher2023-08-094-19/+42
|
* GH-105848: Simplify the arrangement of CALL's stack (GH-107788)Brandt Bucher2023-08-096-626/+567
|
* GH-107724: Fix the signature of `PY_THROW` callback functions. (GH-107725)Mark Shannon2023-08-093-14/+4
|
* GH-107596: Specialize str[int] (GH-107597)Brandt Bucher2023-08-085-28/+94
|
* gh-107758: Improvements to lltrace feature (#107757)Guido van Rossum2023-08-083-8/+30
| | | | | | | | | - The `dump_stack()` method could call a `__repr__` method implemented in Python, causing (infinite) recursion. I rewrote it to only print out the values for some fundamental types (`int`, `str`, etc.); for everything else it just prints `<type_name @ 0xdeadbeef>`. - The lltrace-like feature for uops wrote to `stderr`, while the one in `ceval.c` writes to `stdout`; I changed the uops to write to stdout as well.
* gh-107630: Initialize Each Interpreter's refchain Properly (gh-107733)Eric Snow2023-08-072-0/+3
| | | This finishes fixing the crashes in Py_TRACE_REFS builds. We missed this part in gh-107567.
* gh-106608: make uop trace variable length (#107531)Ivin Lee2023-08-051-13/+4
| | | Executors are now more like tuples.
* GH-84436: Skip refcounting for known immortals (GH-107605)Brandt Bucher2023-08-044-4/+4
|
* gh-106812: Refactor cases_generator to allow uops with array stack effects ↵Guido van Rossum2023-08-042-695/+1110
| | | | | (#107564) Introducing a new file, stacking.py, that takes over several responsibilities related to symbolic evaluation of push/pop operations, with more generality.
* Add some GC stats to Py_STATS (GH-107581)Mark Shannon2023-08-041-1/+17
|
* GH-107263: Increase C stack limit for most functions, except ↵Mark Shannon2023-08-047-15/+14
| | | | | | `_PyEval_EvalFrameDefault()` (GH-107535) * Set C recursion limit to 1500, set cost of eval loop to 2 frames, and compiler mutliply to 2.
* gh-107080: Fix Py_TRACE_REFS Crashes Under Isolated Subinterpreters (gh-107567)Eric Snow2023-08-031-4/+4
| | | The linked list of objects was a global variable, which broke isolation between interpreters, causing crashes. To solve this, we've moved the linked list to each interpreter.
* gh-107471: Fix Refleaks in test_import (gh-107569)Eric Snow2023-08-021-0/+1
| | | | | | | gh-107184 introduced a refleak in test_import.SubinterpImportTests (specifically test_singlephase_check_with_setting_and_override and test_single_init_extension_compat). We fix it here by making sure _testsinglephase is removed from sys.modules whenever we clear the runtime's internal state for the module. The underlying problem is strictly contained in the internal function _PyImport_ClearExtension() (AKA _testinternalcapi.clear_extension()), which is only used in tests. (This also fixes an intermittent segfault introduced in the same place, in test_disallowed_reimport.)
* GH-100964: Break cycles involving exception state when returning from ↵Mark Shannon2023-08-021-0/+1
| | | | generator (GH-107563)
* gh-105481: combine regen-opcode-targets with regen-opcode to avoid ↵Irit Katriel2023-08-011-56/+0
| | | | calculating the specialized opcodes in two places (#107540)
* Use tstate->interp to get the interpreter state in bytecodes.c (GH-107506)Brandt Bucher2023-07-313-8/+8
|
* GH-104584: Fix incorrect uoperands (GH-107513)Brandt Bucher2023-07-311-1/+2
|
* GH-104909: Move unused cache entries from uops to macros (#107444)Guido van Rossum2023-07-313-21/+7
| | | | | | There's no need to use a dummy uop to skip unused cache entries. The macro syntax lets you write `unused/1` instead. Similarly, move `unused/5` from op `_LOAD_ATTR_INSTANCE_VALUE` to macro `LOAD_ATTR_INSTANCE_VALUE`.
* no-issue: Fix typo in import.c (gh-107498)Georg Brandl2023-07-311-1/+1
|
* gh-105699: Use a _Py_hashtable_t for the PyModuleDef Cache (gh-106974)Eric Snow2023-07-282-171/+122
| | | | | | | This fixes a crasher due to a race condition, triggered infrequently when two isolated (own GIL) subinterpreters simultaneously initialize their sys or builtins modules. The crash happened due the combination of the "detached" thread state we were using and the "last holder" logic we use for the GIL. It turns out it's tricky to use the same thread state for different threads. Who could have guessed? We solve the problem by eliminating the one object we were still sharing between interpreters. We replace it with a low-level hashtable, using the "raw" allocator to avoid tying it to the main interpreter. We also remove the accommodations for "detached" thread states, which were a dubious idea to start with.
* gh-101524: Only Use Public C-API in the _xxsubinterpreters Module (gh-107359)Eric Snow2023-07-271-1/+1
| | | The _xxsubinterpreters module should not rely on internal API. Some of the functions it uses were recently moved there however. Here we move them back (and expose them properly).
* gh-104621: Check for Incompatible Extensions in import_find_extension() ↵Eric Snow2023-07-271-10/+11
| | | | | (gh-107184) This fixes a bug where incompatible modules could still be imported if attempted multiple times.
* gh-106931: Intern Statically Allocated Strings Globally (gh-107272)Eric Snow2023-07-271-0/+7
| | | | | We tried this before with a dict and for all interned strings. That ran into problems due to interpreter isolation. However, exclusively using a per-interpreter cache caused some inconsistency that can eliminate the benefit of interning. Here we circle back to using a global cache, but only for statically allocated strings. We also use a more-basic _Py_hashtable_t for that global cache instead of a dict. Ideally we would only have the global cache, but the optional isolation of each interpreter's allocator means that a non-static string object must not outlive its interpreter. Thus we would have to store a copy of each such interned string in the global cache, tied to the main interpreter.
* GH-106898: Add the exception as an argument to the `PY_UNWIND` event ↵Mark Shannon2023-07-272-3/+23
| | | | callback function. (GH-107347)
* gh-107196: Remove _PyArg_VaParseTupleAndKeywordsFast() function (#107197)Victor Stinner2023-07-271-14/+0
| | | | Remove the private _PyArg_VaParseTupleAndKeywordsFast() function: it is no longer used.
* GH-106895: Raise a `ValueError` when attempting to disable events that ↵Mark Shannon2023-07-275-50/+63
| | | | cannot be disabled. (GH-107337)
* GH-106897: Add `RERAISE` event to `sys.monitoring`. (GH-107291)Mark Shannon2023-07-274-3/+30
| | | * Ensures that exception handling events are balanced. Each [re]raise event has a matching unwind/handled event.
* gh-106149: fix comment on stackdepth of generators (#107321)Irit Katriel2023-07-261-2/+3
|
* gh-107015: Remove async_hacks from the tokenizer (#107018)Pablo Galindo Salgado2023-07-261-3/+0
|
* gh-106149: Simplify stack depth calculation. Replace asserts by exceptions. ↵Irit Katriel2023-07-262-36/+72
| | | | (#107255)
* gh-107082: Fix instruction size computation for ENTER_EXECUTOR (#107256)Guido van Rossum2023-07-251-0/+7
| | | | Co-authored-by: Victor Stinner <vstinner@python.org>
* Remove unused internal _PyImport_GetModuleId() function (#107235)Victor Stinner2023-07-251-11/+0
|
* gh-106869: Use new PyMemberDef constant names (#106871)Victor Stinner2023-07-258-68/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove '#include "structmember.h"'. * If needed, add <stddef.h> to get offsetof() function. * Update Parser/asdl_c.py to regenerate Python/Python-ast.c. * Replace: * T_SHORT => Py_T_SHORT * T_INT => Py_T_INT * T_LONG => Py_T_LONG * T_FLOAT => Py_T_FLOAT * T_DOUBLE => Py_T_DOUBLE * T_STRING => Py_T_STRING * T_OBJECT => _Py_T_OBJECT * T_CHAR => Py_T_CHAR * T_BYTE => Py_T_BYTE * T_UBYTE => Py_T_UBYTE * T_USHORT => Py_T_USHORT * T_UINT => Py_T_UINT * T_ULONG => Py_T_ULONG * T_STRING_INPLACE => Py_T_STRING_INPLACE * T_BOOL => Py_T_BOOL * T_OBJECT_EX => Py_T_OBJECT_EX * T_LONGLONG => Py_T_LONGLONG * T_ULONGLONG => Py_T_ULONGLONG * T_PYSSIZET => Py_T_PYSSIZET * T_NONE => _Py_T_NONE * READONLY => Py_READONLY * PY_AUDIT_READ => Py_AUDIT_READ * READ_RESTRICTED => Py_AUDIT_READ * PY_WRITE_RESTRICTED => _Py_WRITE_RESTRICTED * RESTRICTED => (READ_RESTRICTED | _Py_WRITE_RESTRICTED)
* gh-107211: Rename PySymtable_Lookup() to _PySymtable_Lookup() (#107212)Victor Stinner2023-07-252-3/+3
| | | | Rename the internal PySymtable_Lookup() function to _PySymtable_Lookup() and no longer export it.
* gh-106149: move _PyCfg_BasicblockLastInstr and make it local to flowgraph.c ↵Irit Katriel2023-07-241-23/+34
| | | | (#107180)
* gh-106917: fix super classmethod calls to non-classmethods (#106977)Carl Meyer2023-07-243-3/+3
|
* gh-106320: Remove private _PyDict C API (#107145)Victor Stinner2023-07-244-1/+5
| | | | | | | | | | | | | Move private _PyDict functions to the internal C API (pycore_dict.h): * _PyDict_Contains_KnownHash() * _PyDict_DebugMallocStats() * _PyDict_DelItemIf() * _PyDict_GetItemWithError() * _PyDict_HasOnlyStringKeys() * _PyDict_MaybeUntrack() * _PyDict_MergeEx() No longer export these functions.
* gh-106320: Remove private _PyObject C API (#107147)Victor Stinner2023-07-231-1/+1
| | | | | | | | | | | | | | | | Move private debug _PyObject functions to the internal C API (pycore_object.h): * _PyDebugAllocatorStats() * _PyObject_CheckConsistency() * _PyObject_DebugTypeStats() * _PyObject_IsFreed() No longer export most of these functions, except of _PyObject_IsFreed(). Move test functions using _PyObject_IsFreed() from _testcapi to _testinternalcapi. check_pyobject_is_freed() test no longer catch _testcapi.error: the tested function cannot raise _testcapi.error.
* GH-103082: Rename PY_MONITORING_EVENTS to _PY_MONITORING_EVENTS (#107069)Victor Stinner2023-07-223-24/+24
| | | | | | Rename private C API constants: * Rename PY_MONITORING_UNGROUPED_EVENTS to _PY_MONITORING_UNGROUPED_EVENTS * Rename PY_MONITORING_EVENTS to _PY_MONITORING_EVENTS
* gh-106320: Move _PyMethodWrapper_Type to internal C API (#107064)Victor Stinner2023-07-221-2/+2
|
* gh-106320: Move private _PySet API to the internal API (#107041)Victor Stinner2023-07-227-10/+17
| | | | | | | | * Add pycore_setobject.h header file. * Move the following API to the internal C API: * _PySet_Dummy * _PySet_NextEntry() * _PySet_Update()
* gh-106320: Move private _PyHash API to the internal C API (#107026)Victor Stinner2023-07-222-0/+2
| | | | | * No longer export most private _PyHash symbols, only export the ones which are needed by shared extensions. * Modules/_xxtestfuzz/fuzzer.c now uses the internal C API.
* gh-106916: Add missing error check _PyCompile_CleanDoc (#106921)Kirill Podoprigora2023-07-211-0/+6
| | | Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
* GH-106701: Move _PyUopExecute to Python/executor.c (GH-106924)Brandt Bucher2023-07-206-244/+249
|
* gh-105481: do not auto-generate pycore_intrinsics.h (#106913)Irit Katriel2023-07-204-25/+56
|