Commit Graph

120713 Commits

Author SHA1 Message Date
Irit Katriel ac5e53e150
gh-107901: compiler replaces POP_BLOCK instruction by NOPs before optimisations (#114530) 2024-01-25 20:06:48 +00:00
Kirill Podoprigora 33ae9895d4
gh-114561: Mark some tests in ``test_wincosoleio`` with `requires_resource('console')` decorator (GH-114565) 2024-01-25 20:00:52 +00:00
Nikita Sobolev d96358ff9d
gh-114315: Make `threading.Lock` a real class, not a factory function (#114479)
`threading.Lock` is now the underlying class and is constructable rather than the old
factory function. This allows for type annotations to refer to it which had no non-ugly
way to be expressed prior to this.

---------

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
2024-01-25 19:46:32 +00:00
Sam Gross b52fc70d1a
gh-112529: Implement GC for free-threaded builds (#114262)
* 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").
2024-01-25 10:27:36 -08:00
Dino Viehland 4850410b60
gh-112075: Add try-incref functions from nogil branch for use in dict thread safety (#114512)
* Bring in a subset of biased reference counting:
https://github.com/colesbury/nogil/commit/b6b12a9a94e

The NoGIL branch has functions for attempting to do an incref on an object which may or may not be in flight. This just brings those functions over so that they will be usable from in the dict implementation to get items w/o holding a lock.

There's a handful of small simple modifications:

    Adding inline to the force inline functions to avoid a warning, and switching from _Py_ALWAYS_INLINE to Py_ALWAYS_INLINE as that's available
    Remove _Py_REF_LOCAL_SHIFT as it doesn't exist yet (and is currently 0 in the 3.12 nogil branch anyway)
    ob_ref_shared is currently Py_ssize_t and not uint32_t, so use that
    _PY_LIKELY doesn't exist, so drop it
    _Py_ThreadLocal becomes _Py_IsOwnedByCurrentThread
    Add '_PyInterpreterState_GET()' to _Py_IncRefTotal calls.


Co-Authored-By: Sam Gross <colesbury@gmail.com>
2024-01-25 09:34:03 -08:00
Tian Gao 8278fa2f56
gh-111051: Check if file is modifed during debugging in `pdb` (#111052) 2024-01-25 16:48:50 +00:00
Ned Batchelder 07ef63fb6a
Doc/library/sys.monitoring.rst: remove contradictory paragraph. (GH-113619) 2024-01-25 14:38:43 +00:00
AN Long e721adf4bd
gh-77465: Increase test coverage for the numbers module (GH-111738)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-01-25 16:35:05 +02:00
Irit Katriel 0315941441
gh-114265: remove i_loc_propagated, jump threading does not consider line numbers anymore (#114535) 2024-01-25 12:54:19 +00:00
Michael Droettboom ea3cd0498c
gh-114312: Collect stats for unlikely events (GH-114493) 2024-01-25 11:10:51 +00:00
Steve Dower c63c6142f9
gh-114272: Fix or skip tests that fail due to spaces in paths (GH-114451) 2024-01-25 00:38:34 +00:00
Vincent Cunningham d5c21c12c1
gh-100107: Make py.exe launcher ignore app aliases that launch Microsoft Store (GH-114358) 2024-01-25 00:23:28 +00:00
plokmijnuhby 6888cccac0
gh-108731: Add description of __slots__ to MemberDescriptorType docs (GH-108745) 2024-01-24 21:58:34 +02:00
Kirill Podoprigora 191531f352
Update outdated comment in ``Python/bytecodes.c`` (#114522) 2024-01-24 09:14:15 -08:00
Mark Shannon 981d172f7f
GH-112354: `END_FOR` instruction to only pop one value. (GH-114247)
* Compiler emits END_FOR; POP_TOP instead of END_FOR. To support tier 2 side exits in loops.
2024-01-24 15:10:17 +00:00
Erlend E. Aasland 6fadd68da5
Docs: mark up the FTP_TLS() docs with param list (#114510)
Also turn sentence about prot_p() into a note.
2024-01-24 16:06:14 +01:00
Thomas Grainger 127a497852
gh-104360: remove reference to removed module-level wrap_socket (GH-104361)
* remove reference to removed module-level wrap_socket
* drive by typo fix
2024-01-24 15:24:00 +01:00
Hugo van Kemenade 51d9068ede
gh-101100: Fix Sphinx warnings in `c-api/structures.rst` (#113564)
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
2024-01-24 15:40:09 +02:00
Nikita Sobolev 8744ecf589
gh-101100: Fix sphinx warnings in `concurrent.futures.rst` (#114521) 2024-01-24 15:30:50 +02:00
Mark Shannon 384429d1c0
GH-113710: Add a tier 2 peephole optimization pass. (GH-114487)
* Convert _LOAD_CONST to inline versions

* Remove PEP 523 checks
2024-01-24 12:08:31 +00:00
Nikita Sobolev 1e4f00ebd8
gh-101100: Fix sphinx warnings in `asyncio-task.rst` (#114469)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-01-24 00:23:34 -07:00
Serhiy Storchaka ce75b4c26d
gh-113205: test_multiprocessing.test_terminate: Give tasks a chance to start (GH-114249) 2024-01-24 09:13:09 +02:00
Daniel Hollas 82cd8fee31
Fix a typo in the contextlib documentation (#114507) 2024-01-24 05:16:31 +01:00
Brett Cannon f59f90b5bc
GH-114456: lower the recursion limit under WASI for debug builds (GH-114457)
Testing under wasmtime 16.0.0 w/ code from https://github.com/python/cpython/issues/114413 is how the value was found.
2024-01-23 15:48:14 -08:00
Dino Viehland afe8f376c0
gh-112075: Adapt more dict methods to Argument Clinic (#114256)
* Move more dict objects to argument clinic

* Improve doc strings

* More doc string improvements

* Update Objects/dictobject.c

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>

* Update Objects/dictobject.c

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>

* Update Objects/dictobject.c

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>

* Update Objects/dictobject.c

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>

* Update Objects/dictobject.c

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>

* Update Objects/dictobject.c

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>

* Update Objects/dictobject.c

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>

---------

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
2024-01-23 22:10:04 +00:00
Serhiy Storchaka d22c066b80
gh-114492: Initialize struct termios before calling tcgetattr() (GH-114495)
On Alpine Linux it could leave some field non-initialized.
2024-01-23 23:27:04 +02:00
Sam Gross ce01ab536f
gh-101438: Avoid reference cycle in ElementTree.iterparse. (GH-114269)
The iterator returned by ElementTree.iterparse() may hold on to a file
descriptor. The reference cycle prevented prompt clean-up of the file
descriptor if the returned iterator was not exhausted.
2024-01-23 20:14:46 +00:00
Erlend E. Aasland 8c265408c5
Docs: use placeholders in dbm flag param docs (#114482)
Also correct the default flag param for dbm.dumb.open();
it's 'c', not 'r'.
2024-01-23 20:54:44 +01:00
mpage 925907ea36
gh-113884: Make queue.SimpleQueue thread-safe when the GIL is disabled (#114161)
* use the ParkingLot API to manage waiting threads
* use Argument Clinic's critical section directive to protect queue methods
* remove unnecessary overflow check

Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
2024-01-23 20:25:41 +01:00
Sam Gross 441affc9e7
gh-111964: Implement stop-the-world pauses (gh-112471)
The `--disable-gil` builds occasionally need to pause all but one thread.  Some
examples include:

* Cyclic garbage collection, where this is often called a "stop the world event"
* Before calling `fork()`, to ensure a consistent state for internal data structures
* During interpreter shutdown, to ensure that daemon threads aren't accessing Python objects

This adds the following functions to implement global and per-interpreter pauses:

* `_PyEval_StopTheWorldAll()` and `_PyEval_StartTheWorldAll()` (for the global runtime)
* `_PyEval_StopTheWorld()` and `_PyEval_StartTheWorld()` (per-interpreter)

(The function names may change.)

These functions are no-ops outside of the `--disable-gil` build.
2024-01-23 11:08:23 -07:00
Sam Gross 5f1997896d
gh-112984: Fix link error on free-threaded Windows build (GH-114455)
The test_peg_generator test tried to link the python313_d.lib library,
which failed because the library is now named python313t_d.lib. The
underlying problem is that the "compiler" attribute was not set when
we call get_libraries() from distutils.
2024-01-23 18:05:15 +00:00
Nikita Sobolev ba253a4794
gh-108303: Move `.whl` test files to `Lib/test/wheeldata/` (#114343) 2024-01-23 16:33:12 +01:00
Erlend E. Aasland 01105c7c4f
Docs: mark up FTP.connect() and FTP.login() with param lists (#114395)
Use rst substitutions to reduce raw text duplication.

Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2024-01-23 13:57:23 +00:00
Erlend E. Aasland 5277d4c7db
Docs: mark up FTP.retrbinary and FTP.storbinary with param lists (#114399)
Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
2024-01-23 14:53:35 +01:00
Fabio Zadrozny 5a1ecc8cc7
gh-114423: Remove DummyThread from threading._active when thread dies (GH-114424) 2024-01-23 14:12:50 +02:00
Nikita Sobolev 7d21cae964
gh-101100: Fix sphinx warnings in `Doc/library/locale.rst` (#114425)
* gh-101100: Fix sphinx warnings in `Doc/library/locale.rst`

* Remove `/` from signatures
2024-01-23 13:05:27 +02:00
Erlend E. Aasland e14930ff63
gh-113317: Don't use global clinic instance in bad_argument() (#114330)
Make it possible for a converter to have multiple includes, by collecting
them in a list on the converter instance. This implies converter includes
are added during template generation, so we have to add them to the
clinic instance at the end of the template generation instead of in the
beginning.
2024-01-23 11:07:56 +01:00
Jim Porter 8edc8029de
gh-89427: Provide the original prompt value for VIRTUAL_ENV_PROMPT (GH-106726)
This improves the implementation in gh-106643.

Previously, venv passed "(<prompt>) " to the activation scripts, but we want
to provide the original value so that users can inspect it in the
$VIRTUAL_ENV_PROMPT env var.

Note: Lib/venv/scripts/common/Activate.ps1 surrounded the prompt value with
parens a second time, so no change was necessary in that file.
2024-01-23 08:53:04 +00:00
Barney Gale b822b85ac1
GH-105900: Fix `pathlib.Path.symlink_to(target_is_directory=...)` docs (#114035)
Clarify that *target_is_directory* only matters if the target doesn't
exist.
2024-01-23 05:30:16 +00:00
Barney Gale 32c227470a
GH-82695: Clarify `pathlib.Path.mkdir()` documentation (#114032)
Remove a double negative in the documentation of `mkdir()`'s *exist_ok*
parameter.

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2024-01-23 02:31:09 +00:00
Barney Gale 3a61d24062
GH-99334: Explain that `PurePath.is_relative_to()` is purely lexical. (#114031) 2024-01-23 01:06:44 +00:00
Ville Skyttä 9af9ac153a
gh-66944: Note that the `contextlib.closing` example is for illustrative purposes (#112198)
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2024-01-23 01:00:53 +00:00
Géry Ogam 647b6cc7f1
Docs: minor amendments to runpy.rst (#18416)
- Add missing single quote in inline code
- Align parameter formatting with style guide recommendations
- Fix punctuation around parenthesised sentence
2024-01-23 00:00:26 +00:00
Gregory P. Smith 5725523695
Add me to codeowners for hashlib & multiprocessing (#114454)
I already effectively own these. (multiprocessing reluctantly, but I've
spent enough time in the code of late, it is important, and and
championing some changes, so I may as well be looped in there).
2024-01-22 23:55:12 +00:00
Erlend E. Aasland 1d7bddd961
Docs: align usage of versionadded/versionchanged with recommended practice (#114409)
Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
2024-01-22 21:40:26 +00:00
Steve Dower 665b8f365e
gh-113655: Revert extra stack reserve in PGO builds unless UseExtraStackReserve=true (GH-114263) 2024-01-22 21:19:16 +00:00
Sam Gross 412920a41e
gh-112532: Improve mimalloc page visiting (#114133)
This adds support for visiting abandoned pages in mimalloc and improves
the performance of the page visiting code. Abandoned pages contain
memory blocks from threads that have exited. At some point, they may be
later reclaimed by other threads. We still need to visit those pages in
the free-threaded GC because they contain live objects.

This also reduces the overhead of visiting mimalloc pages:

 * Special cases for full, empty, and pages containing only a single
   block.
 * Fix free_map to use one bit instead of one byte per block.
 * Use fast integer division by a constant algorithm when computing
   block offset from block size and index.
2024-01-22 13:10:21 -08:00
Michael Droettboom e45bae7a45
GH-114448: Don't sort summarize_stats.py histograms by amount of change (GH-114449) 2024-01-22 11:45:15 -08:00
Brett Cannon 5cd9c6b1fc
Fix `wasi.py build` after adding the `clean` subcommand. ({GH-114447) 2024-01-22 10:28:57 -08:00
AN Long 7fc51c3f6b
gh-114257: Ignore the FileNotFound error in ctypes.util._is_elf() (GH-114394) 2024-01-22 17:15:29 +00:00