Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | gh-111968: Use per-thread freelists for dict in free-threading (gh-114323) | Donghee Na | 2024-02-01 | 1 | -2/+0 |
| | |||||
* | gh-112529: Remove PyGC_Head from object pre-header in free-threaded build ↵ | Sam Gross | 2024-02-01 | 1 | -5/+16 |
| | | | | | | | | | | | | | | | | | (#114564) * gh-112529: Remove PyGC_Head from object pre-header in free-threaded build This avoids allocating space for PyGC_Head in the free-threaded build. The GC implementation for free-threaded CPython does not use the PyGC_Head structure. * The trashcan mechanism uses the `ob_tid` field instead of `_gc_prev` in the free-threaded build. * The GDB libpython.py file now determines the offset of the managed dict field based on whether the running process is a free-threaded build. Those are identified by the `ob_ref_local` field in PyObject. * Fixes `_PySys_GetSizeOf()` which incorrectly incorrectly included the size of `PyGC_Head` in the size of static `PyTypeObject`. | ||||
* | gh-114746: Avoid quadratic behavior in free-threaded GC (GH-114817) | Sam Gross | 2024-02-01 | 1 | -73/+29 |
| | | | | | | | | | | | | | | The free-threaded build's GC implementation is non-generational, but was scheduled as if it were collecting a young generation leading to quadratic behavior. This increases the minimum threshold and scales it to the number of live objects as we do for the old generation in the default build. Note that the scheduling is still not thread-safe without the GIL. Those changes will come in later PRs. A few tests, like "test_sneaky_frame_object" rely on prompt scheduling of the GC. For now, to keep that test passing, we disable the scaled threshold after calls like `gc.set_threshold(1, 0, 0)`. | ||||
* | gh-112529: Implement GC for free-threaded builds (#114262) | Sam Gross | 2024-01-25 | 1 | -3/+1698 |
| | | | | | | | * gh-112529: Implement GC for free-threaded builds This implements a mark and sweep GC for the free-threaded builds of CPython. The implementation relies on mimalloc to find GC tracked objects (i.e., "containers"). | ||||
* | gh-111968: Use per-thread freelists for generator in free-threading (gh-114189) | Donghee Na | 2024-01-18 | 1 | -1/+0 |
| | |||||
* | gh-111968: Use per-thread freelists for PyContext in free-threading (gh-114122) | Donghee Na | 2024-01-16 | 1 | -1/+0 |
| | |||||
* | gh-111968: Use per-thread freelists for tuple in free-threading (gh-113921) | Donghee Na | 2024-01-11 | 1 | -1/+0 |
| | |||||
* | gh-111968: Use per-thread freelists for float in free-threading (gh-113886) | Donghee Na | 2024-01-10 | 1 | -1/+0 |
| | |||||
* | gh-111968: Introduce _PyFreeListState and _PyFreeListState_GET API (gh-113584) | Donghee Na | 2024-01-09 | 1 | -0/+32 |