summaryrefslogtreecommitdiffstats
path: root/Python
Commit message (Collapse)AuthorAgeFilesLines
* bpo-45711: Remove unnecessary normalization of exc_info (GH-29922)Irit Katriel2021-12-081-20/+0
|
* bpo-45635: refactor print_exception() into smaller functions (GH-29981)Irit Katriel2021-12-081-87/+139
| | | Co-authored-by: Erlend Egeberg Aasland <erlend.aasland@innova.no>
* bpo-46009: Do not exhaust generator when send() method raises (GH-29986)Mark Shannon2021-12-081-18/+2
|
* bpo-46008: Move Py*State init into distinct functions. (gh-29977)Eric Snow2021-12-081-101/+272
| | | | | Previously, basic initialization of PyInterprterState happened in PyInterpreterState_New() (along with allocation and adding the new interpreter to the runtime state). This prevented us from initializing interpreter states that were allocated separately (e.g. statically or in a free list). We've addressed that here by factoring out a separate function just for initialization. We've done the same for PyThreadState. _PyRuntimeState was sorted out when we added it since _PyRuntime is statically allocated. However, here we update the existing init code to line up with the functions for PyInterpreterState and PyThreadState. https://bugs.python.org/issue46008
* bpo-46008: Add _PyInterpreterState_Main(). (gh-29978)Eric Snow2021-12-082-2/+2
| | | | | PyInterpreterState_Main() is a plain function exposed in the public C-API. For internal usage we can take the more efficient approach in this PR. https://bugs.python.org/issue46008
* bpo-46008: Stop calling _PyThreadState_Init() in new_threadstate(). (gh-29973)Eric Snow2021-12-081-7/+13
| | | | | This simplifies new_threadstate(). We also rename _PyThreadState_Init() to _PyThreadState_SetCurrent() to reflect what it actually does. https://bugs.python.org/issue46008
* bpo-46008: Use PyMem_RawCalloc() to allocate PyThreadState. (GH-29972)Eric Snow2021-12-071-38/+2
| | | | | Doing so allows us to stop assigning various fields to `NULL` and 0. It also more closely matches the behavior of a static initializer. Automerge-Triggered-By: GH:ericsnowcurrently
* bpo-46008: Move thread-related interpreter state into a sub-struct. (gh-29971)Eric Snow2021-12-076-25/+25
| | | | | This parallels _PyRuntimeState.interpreters. Doing this helps make it more clear what part of PyInterpreterState relates to its threads. https://bugs.python.org/issue46008
* bpo-46008: Return void from _PyEval_InitState(). (gh-29970)Eric Snow2021-12-072-9/+6
| | | | | This falls into the category of keep-allocation-and-initialization separate. It also allows us to use _PyEval_InitState() safely in functions that return void. https://bugs.python.org/issue46008
* Fix leak when an exception is raised during generator creation. (GH-29960)Mark Shannon2021-12-071-20/+7
|
* bpo-45635: standardize error handling in traceback.c (GH-29905)Irit Katriel2021-12-071-66/+104
| | | Co-authored-by: Erlend Egeberg Aasland <erlend.aasland@innova.no>
* bpo-45947: Place dict and values pointer at fixed (negative) offset just ↵Mark Shannon2021-12-073-79/+46
| | | | | | | | | | | | | | | | | | | before GC header. (GH-29879) * Place __dict__ immediately before GC header for plain Python objects. * Fix up lazy dict creation logic to use managed dict pointers. * Manage values pointer, placing them directly before managed dict pointers. * Convert hint-based load/store attr specialization target managed dict classes. * Specialize LOAD_METHOD for managed dict objects. * Remove unsafe _PyObject_GC_Calloc function. * Remove unsafe _PyObject_GC_Malloc() function. * Add comment explaning use of Py_TPFLAGS_MANAGED_DICT.
* Revert "bpo-28533: Remove asyncore, asynchat, smtpd modules (GH-29521)" ↵Victor Stinner2021-12-071-0/+3
| | | | | (GH-29951) This reverts commit 9bf2cbc4c498812e14f20d86acb61c53928a5a57.
* bpo-45963: Make space for the InterpreterFrame of a generator in that ↵Mark Shannon2021-12-062-42/+17
| | | | | | | generator. (GH-29891) * Make generator, coroutine and async gen structs all the same size. * Store interpreter frame in generator (and coroutine). Reduces the number of allocations neeeded for a generator from two to one.
* Delete orphaned comment (#29917)Guido van Rossum2021-12-051-5/+0
| | | (The function this described was deleted by PR #23743, the comment was accidentally retained.)
* bpo-45607: Make it possible to enrich exception displays via setting their ↵Irit Katriel2021-12-031-0/+35
| | | | __note__ field (GH-29880)
* bpo-45950: Introduce Bootstrap Python again (#29859)Christian Heimes2021-12-031-45/+0
| | | | | | | | | The build system now uses a :program:`_bootstrap_python` interpreter for freezing and deepfreezing again. To speed up build process the build tools :program:`_bootstrap_python` and :program:`_freeze_module` are no longer build with LTO. Cross building depends on a build Python interpreter, which must have same version and bytecode as target host Python.
* bpo-45885: Specialize COMPARE_OP (GH-29734)Dennis Sweeney2021-12-033-23/+224
| | | | | | | * Add COMPARE_OP_ADAPTIVE adaptive instruction. * Add COMPARE_OP_FLOAT_JUMP, COMPARE_OP_INT_JUMP and COMPARE_OP_STR_JUMP specialized instructions. * Introduce and use _PyUnicode_Equal
* bpo-45582: Port getpath[p].c to Python (GH-29041)Steve Dower2021-12-035-803/+354
| | | | | The getpath.py file is frozen at build time and executed as code over a namespace. It is never imported, nor is it meant to be importable or reusable. However, it should be easier to read, modify, and patch than the previous code. This commit attempts to preserve every previously tested quirk, but these may be changed in the future to better align platforms.
* bpo-40280: Optimize ints and and startup on wasm (GH-29887)Christian Heimes2021-12-021-1/+5
|
* bpo-45954: Rename PyConfig.no_debug_ranges to code_debug_ranges (GH-29886)Victor Stinner2021-12-021-5/+6
| | | | | | | Rename PyConfig.no_debug_ranges to PyConfig.code_debug_ranges and invert the value. Document -X no_debug_ranges and PYTHONNODEBUGRANGES env var in PyConfig.code_debug_ranges documentation.
* bpo-45753: Interpreter internal tweaks (GH-29575)Mark Shannon2021-12-011-139/+194
| | | | | | | | | | * Split exit paths into exceptional and non-exceptional. * Move exit tracing code to individual bytecodes. * Wrap all trace entry and exit events in macros to make them clearer and easier to enhance. * Move return sequence into RETURN_VALUE, YIELD_VALUE and YIELD_FROM. Distinguish between normal trace events and dtrace events.
* bpo-45711: Change exc_info related APIs to derive type and traceback from ↵Irit Katriel2021-11-302-32/+51
| | | | the exception instance (GH-29780)
* bpo-45786: Allocate space for frame in frame object. (GH-29729)Mark Shannon2021-11-292-30/+20
|
* Remove misleading comment in the AST optimizer (#29825)Serhiy Storchaka2021-11-291-1/+0
|
* bpo-45915: use fcntl(fd, F_GETFD) in is_valid_fd() (GH-29821)Christian Heimes2021-11-281-3/+15
|
* bpo-45614: Fix traceback display for exceptions with invalid module name ↵Irit Katriel2021-11-271-1/+1
| | | | (GH-29726)
* bpo-45711: use exc_value instead of exc_type to determine if exc_info is ↵Irit Katriel2021-11-254-36/+91
| | | | valid. Add more assertions. (GH-29627)
* bpo-45020: Fix strict-prototypes warning (GH-29755)Christian Heimes2021-11-241-1/+1
|
* bpo-44525: Copy free variables in bytecode to allow calls to inner functions ↵Mark Shannon2021-11-237-62/+93
| | | | | | | | | | | to be specialized (GH-29595) * Make internal APIs that take PyFrameConstructor take a PyFunctionObject instead. * Add reference to function to frame, borrow references to builtins and globals. * Add COPY_FREE_VARS instruction to allow specialization of calls to inner functions.
* bpo-45850: Implement deep-freeze on Windows (#29648)Guido van Rossum2021-11-221-5/+0
| | | | | | Implement changes to build with deep-frozen modules on Windows. Note that we now require Python 3.10 as the "bootstrap" or "host" Python. This causes a modest startup speed (around 7%) on Windows.
* bpo-45871: Refactor except matcher validation into a separate function so ↵Irit Katriel2021-11-221-23/+33
| | | | that it can be reused. Add missing unit test. (GH-29711)
* bpo-45813: Make sure that frame->generator is NULLed when generator is ↵Mark Shannon2021-11-221-0/+3
| | | | deallocated. (GH-29700)
* bpo-45848: Allow the parser to get error lines from encoded files (GH-29646)Pablo Galindo Salgado2021-11-201-4/+14
|
* Fix link to exception handling notes (GH-29617)Irit Katriel2021-11-191-1/+1
|
* bpo-45709: Fix tracing when exception is handled. (GH-29638)Mark Shannon2021-11-191-4/+1
|
* bpo-45609: Specialize STORE_SUBSCR (GH-29242)Dennis Sweeney2021-11-193-21/+147
| | | | | * Specialize STORE_SUBSCR for list[int], and dict[object] * Adds _PyDict_SetItem_Take2 which consumes references to the key and values.
* bpo-45829: Specialize BINARY_SUBSCR for __getitem__ implemented in Python. ↵Mark Shannon2021-11-183-56/+107
| | | | (GH-29592)
* bpo-45510: Specialize BINARY_SUBTRACT (GH-29523)Dong-hee Na2021-11-183-12/+60
|
* bpo-45826: Fix a crash in suggestions.c by checking for `traceback is None` ↵Dennis Sweeney2021-11-171-3/+11
| | | | (GH-29590)
* bpo-42540: reallocation of id_mutex should not force default allocator ↵Sam Gross2021-11-171-1/+4
| | | | | | | (GH-29564) Unlike the other locks reinitialized by _PyRuntimeState_ReInitThreads, the "interpreters.main->id_mutex" is not freed by _PyRuntimeState_Fini and should not force the default raw allocator.
* bpo-45831: _Py_DumpASCII() uses a single write() call if possible (GH-29596)Victor Stinner2021-11-171-0/+22
| | | | If the string is ASCII only and doesn't need to escape characters, write the whole string with a single write() syscall.
* bpo-45636: Simplify BINARY_OP (GH-29565)Brandt Bucher2021-11-161-83/+34
|
* bpo-45753: Make recursion checks more efficient. (GH-29524)Mark Shannon2021-11-166-36/+40
| | | | * Uses recursion remaining, instead of recursion depth to speed up check against recursion limit.
* bpo-28533: Remove asyncore, asynchat, smtpd modules (GH-29521)Victor Stinner2021-11-151-3/+0
| | | | | | | | | | | | | | | | Remove the asyncore and asynchat modules, deprecated in Python 3.6: use the asyncio module instead. Remove the smtpd module, deprecated in Python 3.6: the aiosmtpd module can be used instead, it is based on asyncio. * Remove asyncore, asynchat and smtpd documentation * Remove test_asyncore, test_asynchat and test_smtpd * Rename Lib/asynchat.py to Lib/test/support/_asynchat.py * Rename Lib/asyncore.py to Lib/test/support/_asyncore.py * Rename Lib/smtpd.py to Lib/test/support/_smtpd.py * Remove DeprecationWarning from private _asyncore, _asynchat and _smtpd modules * _smtpd: remove deprecated properties
* bpo-45636: Remove the old %-formatting fast-path (GH-29532)Brandt Bucher2021-11-152-12/+8
|
* bpo-45711: assert that the type of exc_info is redundant (GH-29518)Irit Katriel2021-11-121-0/+25
|
* bpo-45773: Stop "optimizing" certain jump patterns (GH-29505)Brandt Bucher2021-11-111-76/+41
|
* bpo-45636: Merge all numeric operators (GH-29482)Brandt Bucher2021-11-114-700/+338
|
* bpo-45696: Deep-freeze selected modules (GH-29118)Guido van Rossum2021-11-114-32/+120
| | | | | | | This gains 10% or more in startup time for `python -c pass` on UNIX-ish systems. The Makefile.pre.in generating code builds on Eric's work for bpo-45020, but the .c file generator is new. Windows version TBD.