Changelog

Python seguinte

Data de lançamento: XXXX-XX-XX

Biblioteca

Núcleo e embutidos

  • gh-116042: Fix location for SyntaxErrors of invalid escapes in the tokenizer. Patch by Pablo Galindo

  • gh-129715: Improve the experimental JIT’s handling of returns to unknown callers.

  • gh-129983: Fix data race in compile_template in sre.c.

  • gh-129967: Fix a race condition in the free threading build when repr(set) is called concurrently with set.clear().

  • gh-129953: The internal (evaluation) stack is now spilled to memory whenever execution esacpes from the interpreter or JIT compiled code. This should have no observable effect in either Python or builtin extensions, but will allow various important optimizations in the future.

  • bpo-44369: Improve syntax errors for incorrectly closed strings. Patch by Pablo Galindo

Construção

  • gh-129819: Allow building the JIT with the tailcall interpreter.

Python 3.14.0 alpha 5

Release date: 2025-02-11

macOS

  • gh-91132: Update macOS installer to use ncurses 6.5.

Ferramentas/Demos

  • gh-129248: O executor de testes do iOS agora remove o prefixo de log de cada linha de saída do conjunto de testes.

  • gh-104400: Fix several bugs in extraction by switching to an AST parser in pygettext.

Testes

  • gh-129386: Add test.support.reset_code, which can be used to reset various bytecode-level optimizations and local instrumentation for a function.

  • gh-128474: Disable test_embed test cases that segfault on BOLT instrument binaries. The tests are only disabled when BOLT is enabled.

  • gh-128003: Add an option --parallel-threads=N to the regression test runner that runs individual tests in multiple threads in parallel in order to find concurrency bugs. Note that most of the test suite is not yet reviewed for thread-safety or annotated with @thread_unsafe when necessary.

Segurança

  • gh-105704: Ao usar urllib.parse.urlsplit() e urllib.parse.urlparse(), a análise de host não rejeitaria nomes de domínio contendo colchetes ([ e ]). Os colchetes são válidos somente para hosts IPv6 e IPvFuture de acordo com RFC 3986 Seção 3.2.2.

  • gh-126108: Corrige uma possível desreferência de ponteiro NULL em PySys_AddWarnOptionUnicode().

  • gh-80222: Corrige bug na dobragem (folding) de strings entre aspas ao achatar uma mensagem de e-mail usando uma política de e-mail moderna. Anteriormente, quando uma string entre aspas era dobrada para abranger mais de uma linha, as aspas circundantes e escapes internos eram omitidos. Isso poderia, teoricamente, ser usado para fazer spoof das linhas de cabeçalho usando uma string entre aspas cuidadosamente construída se o e-mail renderizado resultante fosse transmitido ou reanalisado.

  • gh-119511: Corrige uma potencial negação de serviço no módulo imaplib. Ao conectar-se a um servidor malicioso, isso poderia fazer com que uma quantidade arbitrária de memória fosse alocada. Em muitos sistemas, isso é inofensivo, pois a memória virtual não utilizada é apenas um mapeamento, mas se isso atingir um limite de tamanho de endereço virtual, pode levar a um MemoryError ou outra falha de processo. Em sistemas ou construções incomuns, onde toda a memória alocada é tocada e apoiada por RAM ou armazenamento real, isso pode ter consumido recursos ao fazer isso até travar de forma semelhante.

Biblioteca

IDLE

  • gh-129873: Simplify displaying the IDLE doc by only copying the text section of idle.html to idlelib/help.html. Patch by Stan Ulbrych.

Documentação

Núcleo e embutidos

  • gh-100239: Replace the opcode BINARY_SUBSCR and its family by BINARY_OP with oparg NB_SUBSCR.

  • gh-129732: Corrigida uma corrida em _Py_qsbr_reserve na construção de threads livres.

  • gh-129763: Remove the internal LLTRACE macro (use Py_DEBUG instead).

  • gh-129715: Improve JIT performance for generators.

  • gh-129643: Corrige a segurança de thread de PyList_Insert() em construções de threads livres.

  • gh-129668: Corrigir condição de corrida ao levantar MemoryError na construção de threads livres.

  • gh-129643: Corrige a segurança de thread de PyList_SetItem() em construções de threads livres. Patch por Kumar Aditya.

  • gh-128563: Fix an issue where the “lltrace” debug feature could have been incorrectly enabled for some frames.

  • gh-129393: On FreeBSD, sys.platform doesn’t contain the major version anymore. It is always 'freebsd', instead of 'freebsd13' or 'freebsd14'.

  • gh-129345: Corrige desreferência de ponteiro nulo em syslog.openlog() quando um gancho de auditoria levanta uma exceção.

  • gh-129231: Improve memory layout of JIT traces. Patch by Diego Russo

  • gh-129149: Add fast path for medium-size integers in PyLong_FromUnsignedLong(), PyLong_FromUnsignedLongLong() and PyLong_FromSize_t().

  • gh-129201: The free-threaded version of the cyclic garbage collector has been optimized to conditionally use CPU prefetch instructions during the collection. This can reduce collection times by making it more likely that data is in the CPU cache when it is needed. The prefetch instructions are enabled if the number of long-lived objects (objects surviving a full collection) exceeds a threshold.

  • gh-129093: Corrige f-strings como f'{expr=}' que às vezes não exibem a expressão completa quando a expressão contém !=.

  • gh-124363: Trata expressões de depuração em f-string como strings brutas. Patch por Pablo Galindo

  • gh-128714: Fix the potential races in get/set dunder methods __annotations__, __annotate__ and __type_params__ for function object, and add related tests.

  • gh-128799: Adiciona o quadro except* ao traceback quando ele encapsula uma exceção simples.

  • gh-128842: Collect JIT memory stats using pystats. Patch by Diego Russo.

  • gh-100239: Specialize BINARY_OP for bitwise logical operations on compact ints.

  • gh-128910: Undocumented and unused private C-API functions _PyTrash_begin and _PyTrash_end are removed.

  • gh-128807: Add a marking phase to the free-threaded GC. This is similar to what was done in gh-126491. Since the free-threaded GC does not have generations and is not incremental, the marking phase looks for all objects reachable from known roots. The roots are objects known to not be garbage, like the module dictionary for sys. For most programs, this marking phase should make the GC a bit faster since typically less work is done per object.

  • gh-100239: Add opcode BINARY_OP_EXTEND which executes a pair of functions (guard and specialization functions) accessed from the inline cache.

  • gh-128563: A new type of interpreter has been added to CPython. This interpreter uses tail calls for its instruction handlers. Preliminary benchmark results suggest 7-11% geometric mean faster on pyperformance (depending on platform), and up to 30% faster on Python-intensive workloads. This interpreter currently only works on newer compilers, such as clang-19. Other compilers will continue using the old interpreter. Patch by Ken Jin, with ideas on how to implement this in CPython by Mark Shannon, Garret Gu, Haoran Xu, and Josh Haberman.

  • gh-126703: Improve performance of iterating over lists and tuples by using a freelist for the iterator objects.

  • gh-127953: The time to handle a LINE event in sys.monitoring (and sys.settrace) is now independent of the number of lines in the code object.

  • gh-128330: Restaura caracteres de controle do terminal na saída do REPL.

  • gh-128016: Improved the SyntaxWarning message for invalid escape sequences to clarify that such sequences will raise a SyntaxError in future Python releases. The new message also suggests a potential fix, i.e., Did you mean "\\e"?.

  • gh-126004: Fix handling of UnicodeError.start and UnicodeError.end values in the codecs.replace_errors() error handler. Patch by Bénédikt Tran.

  • gh-126004: Fix handling of UnicodeError.start and UnicodeError.end values in the codecs.backslashreplace_errors() error handler. Patch by Bénédikt Tran.

  • gh-126004: Fix handling of UnicodeError.start and UnicodeError.end values in the codecs.xmlcharrefreplace_errors() error handler. Patch by Bénédikt Tran.

  • gh-127119: Slightly optimize the int deallocator.

  • gh-127349: Corrigido o erro ao redimensionar o terminal no Python REPL. Patch por Semyon Moroz.

  • gh-125723: Fix crash with gi_frame.f_locals when generator frames outlive their generator. Patch by Mikhail Efimov.

  • gh-126349: Add turtle.fill(), turtle.poly() and turtle.no_animation() context managers. Patch by Marie Roald and Yngve Mardal Moe.

  • gh-115911: If the current working directory cannot be determined due to permissions, then import will no longer raise PermissionError. Patch by Alex Willmer.

  • gh-112713: Added support for the Partitioned cookie flag in http.cookies.

API C

Construção

  • gh-129660: Remove test_embed do treinamento de PGO, cuja contribuição em versões recentes é considerada ignorável.

  • gh-128902: Fix compile errors with Clang 9 and older due to lack of __attribute__((fallthrough)) support.

Python 3.14.0 alpha 4

Release date: 2025-01-14

macOS

  • gh-127592: O uso das APIs unificadas do Apple System Log foi desabilitado quando a versão mínima do macOS era anterior à 10.12.

Ferramentas/Demos

  • gh-128152: Corrige um bug em que o analisador de pré-processador C da Argument Clinic tentava analisar diretivas de pré-processador dentro de comentários C. Patch por Erlend Aasland.

Testes

  • gh-128690: Temporarily do not use test_embed in PGO profile builds until the problem with test_init_pyvenv_cfg failing in some configurations is resolved.

Biblioteca

  • gh-128731: Fix ResourceWarning in urllib.robotparser.RobotFileParser.read().

  • gh-71339: Add new assertion methods for unittest: assertHasAttr(), assertNotHasAttr(), assertIsSubclass(), assertNotIsSubclass() assertStartsWith(), assertNotStartsWith(), assertEndsWith() and assertNotEndsWith().

  • gh-118761: Improve import time of pickle by 25% by removing an unnecessary regular expression. As such, re is no more implicitly available as pickle.re. Patch by Bénédikt Tran.

  • gh-128661: Fixes typing.evaluate_forward_ref() not showing deprecation when type_params arg is not passed.

  • gh-128562: Corrige possíveis conflitos nos nomes dos widgets tkinter gerados se o nome da classe do widget terminar com um dígito.

  • gh-128559: Improved import time of asyncio.

  • gh-128552: Corrige lixo cíclico introduzido por asyncio.loop.create_task() e asyncio.TaskGroup.create_task() mantendo uma referência à tarefa criada se ela estiver ansiosa.

  • gh-128340: Add internal thread safe handle to be used in asyncio.loop.call_soon_threadsafe() for thread safe cancellation.

  • gh-128182: Fix crash when using ctypes pointers concurrently on the free threaded build.

  • gh-128400: Only show the current thread in faulthandler on the free threaded build to prevent races.

  • gh-128400: Corrige falha ao usar faulthandler.dump_traceback() enquanto outras threads estiverem ativas na construção de threads livres.

  • gh-128388: Fix PyREPL on Windows to support more keybindings, like the Control- and Control- word-skipping keybindings and those with meta (i.e. Alt), e.g. Alt-d to kill-word or Alt-Backspace backward-kill-word.

  • gh-88834: Unifica a verificação de instância para typing.Union e types.UnionType: Union agora usa as verificações de instância em relação aos seus parâmetros em vez das verificações de subclasse.

  • gh-128302: Corrige xml.dom.xmlbuilder.DOMEntityResolver.resolveEntity(), que foi quebrado pela transição do Python 3.0.

  • gh-128317: Highlight today in colour in calendar’s CLI output. Patch by Hugo van Kemenade.

  • gh-128302: Permite que xml.dom.xmlbuilder.DOMParser.parse() manipule corretamente instâncias xml.dom.xmlbuilder.DOMInputSource que tenham apenas um atributo systemId definido.

  • gh-128151: Improve generation of UUID objects version 3, 4, 5, and 8 via their dedicated functions by 30%. Patch by Bénédikt Tran.

  • gh-128118: Improve performance of copy.copy() by 30% via a fast path for atomic types and container types.

  • gh-127946: Fix crash when modifying ctypes._CFuncPtr objects concurrently on the free threaded build.

  • gh-128062: Reverte a fonte da barra de menu do turtledemo para seu valor padrão e exibe as teclas de atalho na posição correta.

  • gh-128014: Corrige a redefinição do ícone da janela padrão passando default='' para o método wm_iconbitmap() do tkinter.

  • gh-41872: Corrige extração rápida de docstrings de módulo de um arquivo em pydoc. Agora ele oferece suporte a docstrings com aspas simples, sequências de escape, literais de strings brutas e outras sintaxes Python.

  • gh-127060: Define a variável de ambiente TERM como “dumb” para desabilitar cores de traceback no IDLE, já que o IDLE não entende sequências de escape ANSI. Patch por Victor Stinner.

  • gh-126742: Corrige o suporte de mensagens de erro localizadas relatadas por dlerror(3) e gdbm_strerror nas funções ctypes e dbm.gnu respectivamente. Patch por Bénédikt Tran.

  • gh-122548: Adds two new local events to sys.monitoring, BRANCH_LEFT and BRANCH_RIGHT. This allows the two arms of the branch to be disabled independently, which should hugely improve performance of branch-level coverage tools. The old branch event, BRANCH is now deprecated.

  • gh-127847: Corrige a posição ao fazer buscas e leituras intercaladas em arquivos zip não compactados e não criptografados retornados por zipfile.ZipFile.open().

  • gh-127688: Add the SCHED_DEADLINE and SCHED_NORMAL constants to the os module.

  • gh-83662: Adiciona o método __class_getitem__ ausente à implementação Python de functools.partial(), para torná-lo compatível com a versão C. Isso é relevante principalmente para implementações Python alternativas como PyPy e GraalPy, porque o CPython geralmente usará a implementação C dessa função.

  • gh-127586: multiprocessing.pool.Pool agora restaura corretamente os manipuladores de sinais bloqueados da thread mãe ao criar processos via spawn ou forkserver.

  • gh-98188: Corrige um problema em email.message.Message.get_payload() onde os dados não podem ser decodificados se o mecanismo de Codificação de Transferência de Conteúdo contiver espaços em branco à direita ou texto lixo adicional. Patch por Hui Liu.

  • gh-127529: Correct behavior of asyncio.selector_events.BaseSelectorEventLoop._accept_connection() in handling ConnectionAbortedError in a loop. This improves performance on OpenBSD.

  • gh-127360: When a descriptive error message cannot be provided for an ssl.SSLError, the “unknown error” message now shows the internal error code (as retrieved by ERR_get_error and similar OpenSSL functions).

  • gh-127196: Corrige falha quando um dicionário com chaves em codificação inválida era passado para diversas funções no módulo _interpreters.

  • gh-124130: Fix a bug in matching regular expression \B in empty input string. Now it is always the opposite of \b. To get an old behavior, use (?!\A\Z)\B. To get a new behavior in old Python versions, use (?!\b).

  • gh-126639: tempfile.NamedTemporaryFile will now issue a ResourceWarning when it is finalized by the garbage collector without being explicitly closed.

  • gh-126624: Expose error code XML_ERROR_NOT_STARTED of Expat >=2.6.4 in xml.parsers.expat.errors.

  • gh-126225: getopt e optparse não estão mais marcados como descontinuados. Há razões legítimas para usar um desses módulos em preferência a argparse, e nenhum desses módulos corre o risco de ser removido da biblioteca padrão. Dos três, argparse continua sendo a escolha padrão recomendada, a menos que uma das preocupações observadas no topo da documentação do módulo optparse se aplique.

  • gh-124761: Add SO_REUSEPORT_LB constant to socket for FreeBSD.

  • gh-121720: enum.EnumDict can now be used without resorting to private API.

  • gh-123424: Add zipfile.ZipInfo._for_archive() setting default properties on ZipInfo objects. Patch by Bénédikt Tran and Jason R. Coombs.

  • gh-121676: Deprecate calling the Python implementation of functools.reduce() with a function or sequence as a keyword argument. This will be forbidden in Python 3.16 in order to match the C implementation.

  • gh-112015: ctypes.memoryview_at() now exists to create a memoryview object that refers to the supplied pointer and length. This works like ctypes.string_at() except it avoids a buffer copy, and is typically useful when implementing pure Python callback functions that are passed dynamically-sized buffers.

  • gh-95371: Added support for other image formats (PNG, PGM, and PPM) to the turtle module. Patch by Shin-myoung-serp.

Núcleo e embutidos

  • gh-128078: Corrige um SystemError ao usar anext() com um valor de tupla padrão. Patch por Bénédikt Tran.

  • gh-128717: Corrige uma falha ao definir o limite de recursão enquanto outros threads estão ativos na construção de threads livres.

  • gh-124483: Treat Py_DECREF and variants as escaping when generating opcode and uop metadata. This prevents the possibility of a __del__ method causing the JIT to behave incorrectly.

  • gh-126703: Improve performance of class methods by using a freelist.

  • gh-128137: Update PyASCIIObject layout to handle interned field with the atomic operation. Patch by Donghee Na.

  • gh-128192: Upgrade HTTP digest authentication algorithm for urllib.request by supporting SHA-256 digest authentication as specified in RFC 7616.

  • gh-126868: Increase usage of freelist for int allocation.

  • gh-114203: Optimize Py_BEGIN_CRITICAL_SECTION for simple recursive calls.

  • gh-127705: Adds stackref debugging when Py_STACKREF_DEBUG is set. Finds all double-closes and leaks, logging the origin and last borrow.

    Inspired by HPy’s debug mode. https://docs.hpyproject.org/en/latest/debug-mode.html

  • gh-128079: Corrige um bug em que except* não verifica corretamente o valor de retorno de uma função split() de ExceptionGroup, levando a uma falha em alguns casos. Agora, quando split() retorna um objeto inválido, except* levanta TypeError com o objeto ExceptionGroup levantado originalmente encadeado a ele.

  • gh-128030: Evita erro ao chamar PyModule_GetFilenameObject em um objeto que não é módulo ao importar um símbolo inexistente de um objeto que não é módulo.

  • gh-128035: Indicate through ssl.HAS_PHA whether the ssl module supports TLSv1.3 post-handshake client authentication (PHA). Patch by Will Childs-Klein.

  • gh-127274: Add a new flag, CO_METHOD, to co_flags that indicates whether the code object belongs to a function defined in class scope.

  • gh-66409: During the path initialization, we now check if base_exec_prefix is the same as base_prefix before falling back to searching the Python interpreter directory.

  • gh-127970: We now use the location of the libpython runtime library used in the current proccess to determine sys.base_prefix on all platforms implementing the dladdr function defined by the UNIX standard — this includes Linux, Android, macOS, iOS, FreeBSD, etc. This was already the case on Windows and macOS Framework builds.

  • gh-127773: Do not use the type attribute cache for types with incompatible MRO.

  • gh-127903: Objects/unicodeobject.c: corrige uma falha em compilações de depuração em _copy_characters quando não há nada para copiar.

  • gh-127809: Fix an issue where the experimental JIT may infer an incorrect result type for exponentiation (** and **=), leading to bugs or crashes.

  • gh-126862: Corrige um possível estouro quando uma classe herda de um número absurdo de superclasses. Reportado por Valery Fedorenko. Patch por Bénédikt Tran.

API C

Construção

  • gh-128627: For Emscripten builds the function pointer cast call trampoline now uses the wasm-gc ref.test instruction if it’s available instead of Wasm JS type reflection.

  • gh-128472: Ignora a otimização BOLT de funções usando gotos computados, corrigindo erros na compilação com LLVM 19.

  • gh-115765: GNU Autoconf 2.72 is now required to generate configure. Patch by Erlend Aasland.

  • gh-123925: Corrige a construção do módulo curses em plataformas com libncurses, mas sem libncursesw.

  • gh-90905: Add support for cross-compiling to x86_64 on aarch64/arm64 macOS.

  • gh-128321: Define LIBS em vez de LDFLAGS ao verificar se as funções de biblioteca sqlite3 estão disponíveis. Isso corrige a ordenação de bibliotecas vinculadas durante as verificações, que era incorreta ao usar uma libsqlite3 vinculada estaticamente.

  • gh-100384: Error on unguarded-availability in macOS builds, preventing invalid use of symbols that are not available in older versions of the OS.

  • gh-128104: Remove Py_STRFTIME_C99_SUPPORT conditions in favor of requiring C99 strftime(3) specifier support at build time. When cross-compiling, there is no build time check and support is assumed.

  • gh-127951: Add option --pystats to the Windows build to enable performance statistics collection.

Python 3.14.0 alpha 3

Release date: 2024-12-17

Windows

  • gh-127353: Permite forçar a saída de cores no Windows usando variáveis ​​de ambiente. Patch por Andrey Efremov.

  • gh-125729: Makes the presence of the turtle module dependent on the Tcl/Tk installer option. Previously, the module was always installed but would be unusable without Tcl/Tk.

Ferramentas/Demos

Testes

  • gh-127906: Testa a API C limitada em test_cppext. Patch por Victor Stinner.

  • gh-127637: Adiciona testes para a interface de linha de comando dis. Patch por Bénédikt Tran.

  • gh-126925: Os resultados dos testes do iOS agora são transmitidos durante a execução do teste, e o xcresulttool descontinuado não é mais usado.

  • gh-127076: Disable strace based system call tests when LD_PRELOAD is set.

  • gh-127076: Filter out memory-related mmap, munmap, and mprotect calls from file-related ones when testing io behavior using strace.

Segurança

Biblioteca

Documentação

Núcleo e embutidos

  • gh-127740: Fix error message in bytes.fromhex() when given an odd number of digits to properly indicate that an even number of hexadecimal digits is required.

  • gh-127058: PySequence_Tuple now creates the resulting tuple atomically, preventing partially created tuples being visible to the garbage collector or through gc.get_referrers()

  • gh-127599: Corrige estatísticas para incrementos de contagens de referências de objetos (em particular, quando uma contagem de referências foi aumentada em mais de 1 em uma única operação).

  • gh-127651: Ao levantar ImportError para símbolos ausentes em importações from, use __file__ na mensagem de erro se __spec__.origin não for um local

  • gh-127582: Corrige ressurreição de objeto não seguro para thread ao chamar finalizadores e retornos de chamada do observador na construção de threads livres.

  • gh-127434: Os shims do compilador iOS agora podem aceitar argumentos com espaços.

  • gh-127536: Adiciona travas faltando em torno de algumas operações de atribuição de lista na construção de threads livres.

  • gh-127085: Fix race when exporting a buffer from a memoryview object on the free-threaded build.

  • gh-127238: Correct error message for sys.set_int_max_str_digits().

  • gh-113841: Corrige possível comportamento indefinido de divisão por zero em complex’s _Py_c_pow().

  • gh-127133: Calling argparse.ArgumentParser.add_argument_group() on an argument group, and calling argparse.ArgumentParser.add_argument_group() or argparse.ArgumentParser.add_mutually_exclusive_group() on a mutually exclusive group now raise exceptions. This nesting was never supported, often failed to work correctly, and was unintentionally exposed through inheritance. This functionality has been deprecated since Python 3.11.

  • gh-126491: Add a marking phase to the GC. All objects that can be transitively reached from builtin modules or the stacks are marked as reachable before cycle detection. This reduces the amount of work done by the GC by approximately half.

  • gh-127020: Corrige uma falha na construção de threads livres quando PyCode_GetCode(), PyCode_GetVarnames(), PyCode_GetCellvars() ou PyCode_GetFreevars() eram chamados de várias threads ao mesmo tempo.

  • gh-127010: Simplify GC tracking of dictionaries. All dictionaries are tracked when created, rather than being lazily tracked when a trackable object was added to them. This simplifies the code considerably and results in a slight speedup.

  • gh-126980: Corrige __buffer__() de bytearray travando quando READ ou WRITE são passados ​​como sinalizadores.

  • gh-126937: Fix TypeError when a ctypes.Structure has a field size that doesn’t fit into an unsigned 16-bit integer. Instead, the maximum number of bits is sys.maxsize.

  • gh-126868: Increase performance of int by adding a freelist for compact ints.

  • gh-126881: Corrige falha na finalização do estado dtoa. Patch por Kumar Aditya.

  • gh-126892: Require cold or invalidated code to “warm up” before being JIT compiled again.

  • gh-126091: Ensure stack traces are complete when throwing into a generator chain that ends in a custom generator.

  • gh-126024: Optimize decoding of short UTF-8 sequences containing non-ASCII characters by approximately 15%.

  • gh-125420: Add memoryview.index() to memoryview objects. Patch by Bénédikt Tran.

  • gh-125420: Add memoryview.count() to memoryview objects. Patch by Bénédikt Tran.

  • gh-124470: Fix crash in free-threaded builds when replacing object dictionary while reading attribute on another thread

  • gh-69639: Implement mixed-mode arithmetic rules combining real and complex numbers as specified by C standards since C99. Patch by Sergey B Kirpichev.

  • gh-120010: Correct invalid corner cases which resulted in (nan+nanj) output in complex multiplication, e.g., (1e300+1j)*(nan+infj). Patch by Sergey B Kirpichev.

  • gh-109746: Se _thread.start_new_thread() falhar ao iniciar uma nova thread, ele exclui seu estado do interpretador e, portanto, evita sua limpeza repetida na finalização.

API C

Construção

  • gh-127865: Corrige falha de construção em sistemas sem suporte a thread-locals.

  • gh-127629: Emscripten builds now include ctypes support.

  • gh-127111: Updated the Emscripten web example to use ES6 modules and be built into a distinct web_example subfolder.

  • gh-115869: Make jit_stencils.h (which is produced during JIT builds) reproducible.

  • gh-126898: The Emscripten build of Python is now based on ES6 modules.

Python 3.14.0 alpha 2

Release date: 2024-11-19

Windows

  • gh-126911: Atualiza a saída do comando credits.

  • gh-118973: Garante que a instalação experimental de threads livres inclua o módulo _tkinter. O componente Tcl/Tk opcional também deve ser instalado para que o módulo funcione.

  • gh-126497: Corrige a falha do venv devido à ausência de executáveis ​​do redirecionador em instalações experimentais de threads livres.

  • gh-126074: Remoção de DLLs desnecessárias do pacote incorporável do Windows

  • gh-125315: Evita travamentos em platform devido a chamadas WMI lentas em algumas máquinas Windows.

  • gh-126084: Corrige o venvwlauncher para iniciar o pythonw em vez do python para que nenhuma janela de console extra seja criada.

  • gh-125842: Corrige uma SystemError quando sys.exit() é chamado com 0xffffffff no Windows.

  • gh-125550: Habilita o Inicializador Python para Windows para detectar instalações do Python 3.14 da Windows Store.

  • gh-123803: All Windows code pages are now supported as “cpXXX” codecs on Windows.

Ferramentas/Demos

  • gh-126807: Corrige avisos de extração em pygettext.py causados ​​por definições de função equivocadas para chamadas de função.

  • gh-126167: O conjunto de textos do iOS foi modificado para que possa ser usado por projetos de terceiros para fins de teste.

Testes

  • gh-126909: Corrige testes de atributo estendido test_os para funcionar em sistemas de arquivos com limite de tamanho xattr de 1 KiB.

  • gh-125730: Change make test to not run GUI tests by default. Use make ci to run tests with GUI tests instead.

  • gh-124295: Adiciona testes de tradução ao módulo argparse.

Segurança

Biblioteca

  • gh-85957: Add missing MIME types for images with RFCs: emf, fits, g3fax, jp2, jpm, jpx, t38, tiff-fx and wmf. Patch by Hugo van Kemenade.

  • gh-126920: Fix the prefix and exec_prefix keys from sysconfig.get_config_vars() incorrectly having the same value as sys.base_prefix and sys.base_exec_prefix, respectively, inside virtual environments. They now accurately reflect sys.prefix and sys.exec_prefix.

  • gh-67877: Corrige vazamentos de memória quando a correspondência de expressão regular termina abruptamente, seja por causa de um sinal ou porque a alocação de memória falha.

  • gh-125063: marshal now supports slice objects. The marshal format version was increased to 5.

  • gh-126789: Corrigidos os valores de sysconfig.get_config_vars(), sysconfig.get_paths() e seus irmãos quando a inicialização de site acontece após sysconfig ter construído um cache para sysconfig.get_config_vars().

  • gh-126188: Atualiza pip empacotado para 24.3.1

  • gh-126766: Corrige problema em que urllib.request.url2pathname() falhava ao descartar duas barras iniciais introduzindo uma seção de autoridade vazia.

  • gh-126705: Allow os.PathLike to be a base for Protocols.

  • gh-126699: Permite que collections.abc.AsyncIterator seja uma base para Protocols.

  • gh-126654: Corrige falha quando um objeto não dicionário era passado para várias funções no módulo _interpreters.

  • gh-104745: Limita o início de um patcher (de unittest.mock.patch() ou unittest.mock.patch.object()) mais de uma vez sem pará-lo

  • gh-126595: Corrige falha ao instanciar itertools.count com uma contagem inicial de sys.maxsize em construções de depuração. Patch por Bénédikt Tran.

  • gh-120423: Corrige problema em que urllib.request.pathname2url() manipulava incorretamente caminhos do Windows com barras inseridas.

  • gh-126565: Melhora o desempenho de zipfile.Path.open() para modos que não sejam de leitura.

  • gh-126505: Corrige bugs na compilação de expressões regulares sem distinção entre maiúsculas e minúsculas com classes de caracteres que contenham caracteres não BMP: o caractere maiúsculo não BMP foi ignorado e o sinalizador ASCII foi ignorado ao corresponder a um intervalo de caracteres cujo limite superior está além da região BMP.

  • gh-117378: Corrigido o processo de forkserver do método de início multiprocessing "forkserver" para herdar corretamente o sys.path do pai durante a importação de módulos multiprocessing.set_forkserver_preload() da mesma maneira que sys.path é configurado em workers antes de executar itens de trabalho.

    Este bug fez com que alguns módulos do forkserver pré-carregados falhassem silenciosamente no pré-carregamento. Isso se manifestou como uma degradação de desempenho em processos filhos quando o sys.path era necessário devido ao trabalho repetido adicional em cada worker.

    Também poderia ter um efeito colateral de "" permanecer em sys.path durante importações de pré-carregamento do forkserver em vez do caminho absoluto de os.getcwd() no momento da importação de multiprocessamento usado no worker sys.path.

    As diferenças de sys.path entre as fases no processo filho poderiam ter causado o pré-carregamento para importar coisas incorretas do local errado. Não temos conhecimento de que isso realmente tenha acontecido na prática.

  • gh-125679: Os valores de multiprocessing.Lock e multiprocessing.RLock repr não dizem mais “unknown” no macOS.

  • gh-126476: Levanta calendar.IllegalMonthError (agora uma subclasse de IndexError) para calendar.month() quando o mês de entrada não está correto.

  • gh-126489: A implementação Python de pickle não chama mais pickle.Pickler.persistent_id() para o resultado de persistent_id().

  • gh-126451: Register the contextvars.Context type to collections.abc.Mapping.

  • gh-126175: Add msg, doc, pos, lineno and colno attributes to tomllib.TOMLDecodeError. Deprecate instantiating with free-form arguments.

  • gh-89416: Add RFC 9559 MIME types for Matroska audiovisual container formats. Patch by Hugo van Kemenade.

  • gh-126417: Register the multiprocessing.managers.DictProxy and multiprocessing.managers.ListProxy types in multiprocessing.managers to collections.abc.MutableMapping and collections.abc.MutableSequence, respectively.

  • gh-126390: Add support for returning intermixed options and non-option arguments in order in getopt.gnu_getopt().

  • gh-126374: Add support for options with optional arguments in the getopt module.

  • gh-126363: Speed up pattern parsing in pathlib.Path.glob() by skipping creation of a pathlib.Path object for the pattern.

  • gh-126353: asyncio.get_event_loop() now does not implicitly creates an event loop. It now raises a RuntimeError if there is no set event loop. Patch by Kumar Aditya.

  • gh-126313: Corrige um problema em curses.napms() quando curses.initscr() ainda não foi chamado. Patch por Bénédikt Tran.

  • gh-126303: Corrige serializar com pickle e cópia de objetos os.sched_param.

  • gh-126138: Corrige uma falha de uso após liberação em objetos asyncio.Task cuja corrotina subjacente produz um objeto que implementa um __getattribute__() maligno. Patch por Nico Posada.

  • gh-120057: Replace the os.environ.refresh() method with a new os.reload_environ() function. Patch by Victor Stinner.

  • gh-126220: Corrige falha em cProfile.Profile e _lsprof.Profiler quando seus retornos de chamada eram chamados diretamente com 0 argumentos.

  • gh-126212: Corrige problema em que urllib.request.pathname2url() e url2pathname() removiam barras de caminhos de unidade DOS do Windows e URLs.

  • gh-126223: Levanta UnicodeEncodeError em vez de um SystemError ao chamar _interpreters.create() com um caractere Unicode inválido.

  • gh-126205: Corrige o problema em que urllib.request.pathname2url() gerava URLs começando com quatro barras (em vez de duas) quando recebia um caminho UNC do Windows.

  • gh-126156: Improved performances of creating Morsel objects by a factor of 3.8x.

  • gh-126105: Corrige uma falha em ast quando o atributo ast.AST._fields é excluído.

  • gh-126106: Corrige uma possível desreferência de ponteiro NULL em ssl.

  • gh-126080: Corrige uma falha de uso após liberação em objetos asyncio.Task para os quais o loop de eventos subjacente implementa um __getattribute__() maligno. Relatado por Nico-Posada. Patch por Bénédikt Tran.

  • gh-125322: Correct detection of complex numbers support in libffi.

  • gh-126083: Corrige um vazamento de referência em objetos asyncio.Task ao reinicializar o mesmo objeto com um contexto não None. Patch por Nico Posada.

  • gh-126068: Fix exceptions in the argparse module so that only error messages for ArgumentError and ArgumentTypeError are now translated. ArgumentError is now only used for command line errors, not for logical errors in the program. TypeError is now raised instead of ValueError for some logical errors.

  • gh-125413: Add pathlib.Path.scandir() method to efficiently fetch directory children and their file attributes. This is a trivial wrapper of os.scandir().

  • gh-125984: Corrige falhas de uso após liberação em objetos asyncio.Future para os quais o laço de eventos subjacente implementa um __getattribute__() maligno. Relatado por Nico-Posada. Patch por Bénédikt Tran.

  • gh-125926: Fix urllib.parse.urljoin() for base URI with undefined authority. Although RFC 3986 only specify reference resolution for absolute base URI, urljoin() should continue to return sensible result for relative base URI.

  • gh-125969: Corrige uma falha fora dos limites quando um asyncio.loop.call_soon() maligno altera o comprimento da lista de retornos de chamada internos. Patch por Bénédikt Tran.

  • gh-125966: Corrige uma falha de uso após liberação em asyncio.Future.remove_done_callback(). Patch por Bénédikt Tran.

  • gh-125789: Corrige possível falha ao alterar a lista de retornos de chamada retornados por asyncio.Future._callbacks. Agora ele sempre retorna uma nova cópia na implementação C _asyncio. Patch por Kumar Aditya.

  • gh-126916: Allow the initial parameter of functools.reduce() to be passed as a keyword argument. Patch by Sayandip Dutta.

  • gh-124452: Corrige um problema em email.policy.EmailPolicy.header_source_parse() e ​​:meth:email.policy.Compat32.header_source_parse que introduziam espaços em branco iniciais espúrios em valores de cabeçalho quando o cabeçalho incluía um caractere de nova linha após o delimitador de nome do cabeçalho (:) e antes do valor.

  • gh-117941: argparse.BooleanOptionalAction now rejects option names starting with --no-.

  • gh-125884: Corrige o bug para pdb onde ele não pode definir pontos de interrupção em funções com certas anotações.

  • gh-125355: Corrige vários bugs em argparse.ArgumentParser.parse_intermixed_args().

    • O analisador não muda mais temporariamente durante a análise.

    • Os valores padrão não são processados ​​duas vezes.

    • Os grupos mutuamente exclusivos obrigatórios contendo argumentos posicionais agora são suportados.

    • O relatório de argumentos ausentes agora inclui os nomes de todos os argumentos posicionais e opcionais necessários.

    • Opções desconhecidas podem ser misturadas com argumentos posicionais em parse_known_intermixed_args().

  • gh-125767: super objects are now pickleable and copyable.

  • gh-124969: locale.nl_langinfo(locale.ALT_DIGITS) now returns a string again. The returned value consists of up to 100 semicolon-separated symbols.

  • gh-84850: Remove URLopener and FancyURLopener classes from urllib.request. They had previously raised DeprecationWarning since Python 3.3.

  • gh-125666: Evita a saída do interpretador se um byte nulo for fornecido como entrada no novo REPL.

  • gh-125710: [Enum] corrige comparações hasheável<->não-hasheável para valores de membros

  • gh-125631: Restaura a capacidade de definir atributos persistent_id e persistent_load de instâncias das classes Pickler e Unpickler no módulo pickle.

  • gh-125378: Corrige o bug em pdb onde após um comando multilinha, uma linha vazia repete a primeira linha do comando multilinha, em vez do comando completo.

  • gh-125682: Rejeita dígitos não ASCII na implementação Python de json.loads() em conformidade com a especificação JSON.

  • gh-125660: Rejeita escapes unicode inválidos para implementação Python de json.loads().

  • gh-52551: Use wcsftime() to implement time.strftime() on Windows.

  • gh-125259: Corrige a lógica de remoção de notas para erros lançados na inicialização de enumeração.

  • gh-125633: Add function inspect.ispackage() to determine whether an object is a package or not.

  • gh-125614: In the FORWARDREF format of annotationlib, fix bug where nested expressions were not returned as annotationlib.ForwardRef format.

  • gh-125590: Permite que FrameLocalsProxy exclua e remova se a chave não for uma variável rápida.

  • gh-125600: Only show stale code warning in pdb when we display source code.

  • gh-125542: Deprecate passing keyword-only prefix_chars argument to argparse.ArgumentParser.add_argument_group().

  • gh-125541: Pressing Ctrl-C while blocked in threading.Lock.acquire(), threading.RLock.acquire(), and threading.Thread.join() now interrupts the function call and raises a KeyboardInterrupt exception on Windows, similar to how those functions behave on macOS and Linux.

  • gh-125519: Melhora o traceback se importlib.reload() for chamado com um objeto que não seja um módulo. Patch por Alex Waygood.

  • gh-125451: Corrige um impasse quando concurrent.futures.ProcessPoolExecutor desliga simultaneamente com um erro ao alimentar um trabalho para um processo de trabalho.

  • gh-125115: Corrige um bug em pdb onde argumentos começando com - não podem ser passados ​​para o script depurado.

  • gh-125398: Corrige a conversão do caminho VIRTUAL_ENV no script activate em venv ao executar no Git Bash para Windows.

  • gh-125245: Corrige condição de corrida ao importar collections.abc, que poderia retornar incorretamente um módulo vazio.

  • gh-52551: Corrige problemas de codificação em time.strftime(), o método strftime() das classes datetime datetime, date e time e a formatação dessas classes. Caracteres não codificáveis ​​no localidade atual agora são aceitáveis ​​na string de formato. Pares substitutos e sequência de bytes codificados por surrogatescape não são mais recombinados. O caractere nulo incorporado não termina mais a string de formato.

  • gh-124984: Corrige segurança de thread em ssl na construção de threads livres. As operações OpenSSL agora são protegidas por uma trava por objeto.

  • gh-124651: Coloca corretamente entre aspas as strings de modelo em scripts de ativação venv.

  • gh-124694: We’ve added concurrent.futures.InterpreterPoolExecutor, which allows you to run code in multiple isolated interpreters. This allows you to circumvent the limitations of CPU-bound threads (due to the GIL). Patch by Eric Snow.

    This addition is unrelated to PEP 734.

  • gh-58032: Deprecate the argparse.FileType type converter.

  • gh-99749: Adds a feature to optionally enable suggestions for argument choices and subparser names if mistyped by the user.

  • gh-58956: Corrigido um bug em pdb onde às vezes o ponto de interrupção não disparava se ele fosse definido em uma função que já está na pilha de chamadas.

  • gh-124111: The tkinter module can now be built to use either the new version 9.0.0 of Tcl/Tk or the latest release 8.6.15 of Tcl/Tk 8. Tcl/Tk 9 includes many improvements, both to the Tcl language and to the appearance and utility of the graphical user interface provided by Tk.

  • gh-80958: unittest discovery supports PEP 420 namespace packages as start directory again.

  • gh-123370: Corrige a tela que não limpa após executar o relógio turtledemo.

  • gh-89083: Add uuid.uuid8() for generating UUIDv8 objects as specified in RFC 9562. Patch by Bénédikt Tran

  • gh-122549: Add platform.invalidate_caches() to invalidate cached results.

  • gh-120754: Atualiza chamadas read ilimitadas em zipfile para especificar um size explícito, colocando um limite na quantidade de dados que eles podem ler. Isso também atualiza o tratamento em torno do tamanho máximo de comentário do ZIP para corresponder ao padrão em vez de ler comentários que são um byte muito longos.

  • gh-121267: Improve the performance of tarfile when writing files, by caching user names and group names.

  • gh-70764: Corrigido um problema em que inspect.getclosurevars() classificaria incorretamente um nome de atributo como uma variável global quando o nome existe tanto como um nome de atributo quanto como uma variável global.

  • gh-118289: posixpath.realpath() agora levanta NotADirectoryError quando o modo strict está habilitado e um caminho sem diretório com uma barra final é fornecido.

  • gh-119826: Sempre retorna um caminho absoluto para os.path.abspath() no Windows.

  • gh-97850: Remove deprecated pkgutil.get_loader() and pkgutil.find_loader().

  • gh-118986: Add socket.IPV6_RECVERR constant (available since Linux 2.2).

  • gh-116897: Accepting objects with false values (like 0 and []) except empty strings, byte-like objects and None in urllib.parse functions parse_qsl() and parse_qs() is now deprecated.

  • gh-101955: Corrige SystemError ao corresponder ao padrão de expressão regular contendo alguma combinação de quantificador possessivo, alternativo e grupo de captura.

  • gh-71936: Corrigir uma condição de corrida em multiprocessing.pool.Pool.

  • bpo-46128: Remove quadros de pilha unittest.IsolatedAsyncioTestCase de stacktraces relatados.

  • gh-84852: Add MIME types for MS Embedded OpenType, OpenType Layout, TrueType, WOFF 1.0 and 2.0 fonts. Patch by Sahil Prajapati and Hugo van Kemenade.

Documentação

  • gh-126622: Adicionadas páginas de rascunho para módulos removidos explicando sua remoção, onde encontrar substituições e links para a última versão do Python que os suportava. Contribuição de Ned Batchelder.

  • gh-125277: Exige Sphinx 7.2.6 ou posterior para construir a documentação do Python. Patch por Adam Turner.

  • gh-60712: Inclui o tipo object nas listas de tipos documentados. Alteração por Furkan Onder e Martin Panter.

Núcleo e embutidos

  • gh-126795: Increase the threshold for JIT code warmup. Depending on platform and workload, this can result in performance gains of 1-9% and memory savings of 3-5%.

  • gh-126341: Agora ValueError é levantada em vez de SystemError ao tentar iterar sobre um objeto memoryview liberado.

  • gh-126688: Corrige uma falha ao chamar os.fork() em alguns sistemas operacionais, incluindo SerenityOS.

  • gh-126066: Corrige importlib para não gravar arquivos .pyc incompletos quando um ulimit ou algum outro mecanismo do sistema operacional estiver impedindo que a gravação seja feita completamente.

  • gh-126222: Do not include count of “peek” items in _PyUop_num_popped. This ensures that the correct number of items are popped from the stack when a micro-op exits with an error.

  • gh-126366: Fix crash when using yield from on an object that raises an exception in its __iter__.

  • gh-126209: Fix an issue with skip_file_prefixes parameter which resulted in an inconsistent behaviour between the C and Python implementations of warnings.warn(). Patch by Daehee Kim.

  • gh-126312: Corrige travamento durante a coleta de lixo em um objeto congelado por gc.freeze() na construção de threads livres.

  • gh-103951: Relax optimization requirements to allow fast attribute access to module subclasses.

  • gh-126072: Following gh-126101, for Objetos código like lambda, annotation and type alias, we no longer add None to its co_consts.

  • gh-126195: Improve JIT performance by 1.4% on macOS Apple Silicon by using platform-specific memory protection APIs. Patch by Diego Russo.

  • gh-126139: Fornece melhor localização de erro ao tentar usar uma instrução future com um recurso futuro desconhecido.

  • gh-126072: Add a new attribute in co_flags to indicate whether the first item in co_consts is the docstring. If a code object has no docstring, None will NOT be inserted.

  • gh-126076: Objetos realocados, como objetos tuple, bytes e str são rastreados corretamente por tracemalloc e seus ganchos associados. Patch por Pablo Galindo.

  • gh-90370: Avoid temporary tuple creation for vararg in argument passing with Argument Clinic generated code (if arguments either vararg or positional-only).

  • gh-126018: Corrige travamento em sys.audit() ao passar uma não string como primeiro argumento e o Python foi compilado no modo de depuração.

  • gh-126012: The memoryview type now supports subscription, making it a generic type.

  • gh-125837: Adds LOAD_SMALL_INT and LOAD_CONST_IMMORTAL instructions. LOAD_SMALL_INT pushes a small integer equal to the oparg to the stack. LOAD_CONST_IMMORTAL does the same as LOAD_CONST but is more efficient for immortal objects. Removes RETURN_CONST instruction.

  • gh-125942: No Android, a configuração errors de sys.stdout foi alterada de surrogateescape para backslashreplace.

  • gh-125859: Corrige uma falha na construção de threads livres quando gc.get_objects() ou gc.get_referrers() é chamado durante uma coleta de lixo em andamento.

  • gh-125868: It was possible in 3.14.0a1 only for attribute lookup to give the wrong value. This was due to an incorrect specialization in very specific circumstances. This is fixed in 3.14.0a2.

  • gh-125498: The JIT has been updated to leverage Clang 19’s new preserve_none attribute, which supports more platforms and is more useful than LLVM’s existing ghccc calling convention. This also removes the need to manually patch the calling convention in LLVM IR, simplifying the JIT compilation process.

  • gh-125703: Honra corretamente os ganchos tracemalloc em caminhos Py_DECREF especializados. Patch por Pablo Galindo

  • gh-125593: Usa cores para destacar locais de erro no traceback do grupo de exceções

  • gh-125017: Fix crash on certain accesses to the __annotations__ of staticmethod and classmethod objects.

  • gh-125588: The Python PEG generator can now use f-strings in the grammar actions. Patch by Pablo Galindo

  • gh-125444: Corrige instruções ilegais para arquiteturas Arm mais antigas. Patch por Diego Russo, testes de Ross Burton.

  • gh-118423: Add a new INSTRUCTION_SIZE macro to the cases generator which returns the current instruction size.

  • gh-125038: Corrige falha ao iterar sobre uma expressão geradora após alterações diretas em gi_frame.f_locals. Patch por Mikhail Efimov.

  • gh-124855: Don’t allow the JIT and perf support to be active at the same time. Patch by Pablo Galindo

  • gh-123714: Update JIT compilation to use LLVM 19

  • gh-123930: Melhora a mensagem de erro quando um script que faz “shadowing” de um módulo da biblioteca padrão faz com que ImportError seja levantada durante uma importação “from”. Da mesma forma, melhore a mensagem de erro quando um script que faz shadowing de um módulo de terceiros tenta importar um atributo desse módulo de terceiros enquanto ainda está inicializando.

  • gh-119793: The map() built-in now has an optional keyword-only strict flag like zip() to check that all the iterables are of equal length. Patch by Wannes Boeykens.

  • gh-118950: Corrige o bug em que SSLProtocol.connection_lost não estava sendo chamado quando OSError era lançada na gravação no soquete.

  • gh-113570: Corrige um bug em reprlib.repr em que ele chamava incorretamente o método repr em tipos embutidos Python com shadowing.

API C

Construção

  • gh-126691: Removed the --with-emscripten-target configure flag. We unified the node and browser options and the same build can now be used, independent of target runtime.

  • gh-123877: Use wasm32-wasip1 as the target triple for WASI instead of wasm32-wasi. The latter will eventually be reclaimed for WASI 1.0 while CPython currently only supports WASI preview1.

  • gh-126458: Disable SIMD support for HACL under WASI.

  • gh-89640: Codifica a ordem de palavras float como little endian no WASM.

  • gh-126206: make clinic now runs Argument Clinic using the --force option, thus forcefully regenerating generated code.

  • gh-126187: Introduced Tools/wasm/emscripten.py to simplify doing Emscripten builds.

  • gh-124932: For cross builds, there is now support for having a different install prefix than the host_prefix used by getpath.py. This is set to / by default for Emscripten, on other platforms the default behavior is the same as before.

  • gh-125946: The minimum supported Android version is now 7.0 (API level 24).

  • gh-125940: A construção no Android agora oferece suporte a tamanhos de página de 16 KB.

  • gh-89640: Melhora a detecção da ordem de palavras flutuantes no Linux quando as otimizações de tempo de link estiverem habilitadas.

  • gh-124928: Emscripten builds now require node >= 18.

  • gh-115382: Corrige falhas de compilação cruzada quando o host e o SOABIs de destino correspondem.

Python 3.14.0 alpha 1

Release date: 2024-10-15

macOS

  • gh-124448: Atualiza o Tcl/Tk empacotado no instalador do macOS para 8.6.15.

  • gh-123797: Verifica a disponibilidade do tempo de execução da função ptsname_r no macOS.

  • gh-123418: Construção do instalador do macOS atualizada para usar o OpenSSL 3.0.15.

Windows

  • gh-124487: Increases Windows required OS and API level to Windows 10.

  • gh-124609: Corrige _Py_ThreadId para construções do Windows usando MinGW. Patch por Tony Roberts.

  • gh-124448: Tcl/Tk empacotado atualizado para 8.6.15.

  • gh-124254: Garante que binários experimentais de threads livres permaneçam instalados durante a atualização.

  • gh-123915: Garante que Tools\\msi\\buildrelease.bat use diretórios diferentes para compilações AMD64 e ARM64.

  • gh-123418: Construção do Windows atualizada para usar o OpenSSL 3.0.15.

  • gh-123476: Add support for socket.TCP_QUICKACK on Windows platforms.

  • gh-122573: A construção do Windows do CPython agora requer 3.10 ou mais recente.

  • gh-100256: mimetypes não falha mais quando encontra uma chave de registro inacessível.

  • gh-119679: Garante que bibliotecas de importação corretas sejam incluídas nas instalações do Windows.

  • gh-119690: Adiciona suporte a Unicode e corrige eventos de auditoria para _winapi.CreateNamedPipe.

  • gh-111201: Adiciona suporte para o novo pyrepl no Windows

  • gh-119070: Corrige o tratamento de py.exe de shebangs como /usr/bin/env python3.12, que eram interpretados anteriormente como python3.exe em vez de python3.12.exe.

  • gh-117505: Corrige um problema com o instalador do Windows não executando ensurepip em um ambiente totalmente isolado. Isso pode causar interações inesperadas com os pacotes do site do usuário.

  • gh-118209: Evita travamentos em mmap no Windows quando a memória mapeada estiver inacessível devido a erros do sistema de arquivos ou violações de acesso.

  • gh-79846: Faz com que ssl.create_default_context() ignore certificados inválidos no armazenamento de certificados do Windows

Ferramentas/Demos

  • gh-123418: Atualiza os fluxos de trabalho do GitHub CI para usar o OpenSSL 3.0.15 e multissltests para usar 3.0.15, 3.1.7 e 3.2.3.

Testes

  • gh-125041: Reativa testes ignorados para zlib na arquitetura s390x: ignora apenas verificações dos bytes compactados, que podem ser diferentes entre a implementação de software do zlib e a implementação acelerada por hardware.

  • gh-124378: Atualizado test_ttk para passar com Tcl/Tk 8.6.15.

  • gh-124213: Detect whether the test suite is running inside a systemd-nspawn container with --suppress-sync=true option, and skip the test_os and test_mmap tests that are failing in this scenario.

  • gh-124190: Add capability to ignore entire files or directories in check warning CI tool

  • gh-121921: Update Lib/test/crashers/bogus_code_obj.py so that it crashes properly again.

  • gh-112301: Add tooling to check for changes in compiler warnings. Patch by Nate Ohlson.

  • gh-59022: Adiciona testes para pkgutil.extend_path(). Patch por Andreas Stocker.

  • gh-99242: os.getloadavg() pode levantar OSError ao executar testes de regressão sob certas condições (por exemplo, chroot). Este erro agora é capturado e ignorado, pois o relatório da média de carga é opcional.

  • gh-121084: Corrige vazamentos aleatórios de test_typing. Limpa caches ABC de tipagem ao executar testes para refleaks (opção -R): chama _abc_caches_clear() em classes abstratas de tipagem e suas subclasses. Patch por Victor Stinner.

  • gh-121160: Adiciona um teste para readline.set_history_length(). Observe que este teste pode falhar em bibliotecas readline.

  • gh-121200: Corrige test_expanduser_pwd2() de test_posixpath. Chama getpwnam() para obter pw_dir, pois pode ser diferente de getpwall() pw_dir. Patch por Victor Stinner.

  • gh-121188: Ao criar o arquivo XML JUnit, o regrtest agora escapa caracteres inválidos em XML, como o caractere de controle chr(27) usado em sequências de escape ANSI. Patch por Victor Stinner.

  • gh-120801: Cleaned up fixtures for importlib.metadata tests and consolidated behavior with ‘test.support.os_helper’.

  • gh-119727: Adiciona a opção de linha de comando --single-process ao executor de testes Python (regrtest). Patch por Victor Stinner.

  • gh-119273: Python test runner no longer runs tests using TTY (ex: test_ioctl) in a process group (using setsid()). Previously, tests using TTY were skipped. Patch by Victor Stinner.

  • gh-119050: Executor de teste regrtest: Adiciona suporte XML ao verificador de reflexos (opção -R). Patch de Victor Stinner.

  • gh-101525: Ignora test_gdb se o binário for realocado pelo BOLT. Patch por Donghee Na.

  • gh-107562: Test certificates have been updated to expire far in the future. This allows testing Y2038 with system time set to after that, so that actual Y2038 issues can be exposed, and not masked by expired certificate errors.

Segurança

  • gh-125140: Remove o diretório atual de sys.path ao usar PyREPL.

  • gh-123678: Atualiza o libexpat para 2.6.3

  • gh-112301: Enable compiler options that warn of potential security vulnerabilities.

  • gh-122792: Alterado ipaddress.IPv6Address mapeado para IPv4 para usar consistentemente o valor do endereço IPv4 mapeado para decidir propriedades. Propriedades que têm seu comportamento corrigido são is_multicast, is_reserved, is_link_local, is_global e is_unspecified.

  • gh-112301: Add ability to ignore warnings per file with warning count in warning checking tooling. Patch by Nate Ohlson.

  • gh-112301: Add macOS warning tracking to warning check tooling. Patch by Nate Ohlson.

  • gh-122133: Autentica a conexão de soquete para o fallback socket.socketpair() em plataformas onde AF_UNIX não está disponível, como o Windows.

    Patch por Gregory P. Smith <greg@krypto.org> e Seth Larson <seth@python.org>. Reportado por Ellie <el@horse64.org>

  • gh-121957: Corrigidos eventos de auditoria ausentes no uso interativo do Python, agora também sendo acionados corretamente para python -i, bem como para python -m asyncio. Os eventos em questão são cpython.run_stdin e cpython.run_startup.

  • gh-112301: Enable runtime protections for glibc to abort execution when unsafe behavior is encountered, for all platforms except Windows.

  • gh-121285: Remove o backtracking da análise de cabeçalho do arquivo tar para hdrcharset, PAX e cabeçalhos esparsos GNU.

  • gh-112301: Add default compiler options to improve security. Enable -Wimplicit-fallthrough, -fstack-protector-strong, -Wtrampolines.

  • gh-118773: Corrige a criação de ACLs em os.mkdir() no Windows para funcionar corretamente em máquinas que não falam inglês.

  • gh-118486: os.mkdir() no Windows agora aceita o modo de 0o700 para restringir o novo diretório ao usuário atual. Isso corrige CVE 2024-4030 afetando tempfile.mkdtemp() em cenários onde o diretório temporário base é mais permissivo do que o padrão.

Biblioteca

  • gh-125422: Corrige o bug onde pdb e bdb podem entrar no quadro do chamador inferior.

  • gh-100141: Corrige o bug onde pdb ficará preso em um laço infinito ao depurar um arquivo vazio.

  • gh-53203: Corrige time.strptime() para os formatos %c, %x e %X em muitos locais que usam dígitos não ASCII, como persa, birmanês, odia e shan.

  • gh-125206: Workaround for old libffi versions is added. Module ctypes supports double complex only with libffi >= 3.3.0. Patch by Mikhail Efimov.

  • gh-89967: Make WeakKeyDictionary and WeakValueDictionary safe against concurrent mutations from other threads. Patch by Kumar Aditya.

  • gh-125260: The gzip.compress() mtime parameter now defaults to 0 for reproducible output. Patch by Bernhard M. Wiedemann and Adam Turner.

  • gh-125243: Corrige corrida de dados ao criar objetos zoneinfo.ZoneInfo na construção de threads livres.

  • gh-125254: Corrige um bug em que ArgumentError inclui a opção ambígua incorreta em argparse.

  • gh-125235: Mantém os caminhos TCL tkinter em venv apontando para a instalação base no Windows.

  • gh-61011: Corrige herança de grupos mutuamente exclusivos aninhados do analisador pai em argparse.ArgumentParser. Anteriormente, todos os grupos mutuamente exclusivos aninhados perdiam sua conexão com o grupo que os continha e eram exibidos como pertencentes diretamente ao analisador.

  • gh-125118: Não copia valores arbitrários para _Bool no módulo struct.

  • gh-125069: Corrige um problema em que fornecer um objeto pathlib.PurePath como um argumento inicializador para um segundo objeto PurePath com um parser diferente resultava em argumentos para o inicializador do objeto anterior sendo unidos pelo analisador do objeto posterior.

  • gh-125096: Se a variável de ambiente PYTHON_BASIC_REPL estiver definida, o módulo site não importa mais o módulo _pyrepl. Além disso, o módulo site agora respeita as opções de linha de comando -E e -I: ignore PYTHON_BASIC_REPL neste caso. Patch por Victor Stinner.

  • gh-124969: Fix locale.nl_langinfo(locale.ALT_DIGITS). Now it returns a tuple of up to 100 strings (an empty tuple on most locales). Previously it returned the first item of that tuple or an empty string.

  • gh-124960: Corrige suporte para o sinalizador future barry_as_FLUFL no novo REPL.

  • gh-69998: Fix locale.nl_langinfo() in case when different categories have different locales. The function now sets temporarily the LC_CTYPE locale in some cases. This temporary change affects other threads.

  • gh-124958: Corrige refcycles em exceções levantadas de asyncio.TaskGroup e a implementação python de asyncio.Future

  • gh-53203: Corrige time.strptime() para os formatos %c e %x em muitos idiomas: árabe, bislama, bretão, bodo, cassubiano, chuvache, estoniano, francês, irlandês, ge’ez, gurajati, gaélico manx, hebraico, hindi, chhattisgarhi, crioulo haitiano, japonês, canarês, coreano, marata, malaio, norueguês, nynorsk, punjabi, rajasthani, tok pisin, iorubá, chinês yue, yau nungon e chinês.

  • gh-123961: Convert curses to multi-phase initialization (PEP 489), thereby fixing reference leaks at interpreter shutdown. Patch by Bénédikt Tran.

  • gh-124944: Add SO_ORIGINAL_DST to the socket module.

  • gh-117151: The default buffer size used by shutil.copyfileobj() has been increased from 64k to 256k on non-Windows platforms. It was already larger on Windows.

  • gh-90102: Skip the isatty system call during open() when the file is known to not be a character device. This provides a slight performance improvement when reading whole files.

  • gh-124917: Permite chamar os.path.exists() e os.path.lexists() com argumentos de palavra-chave no Windows. Corrige uma regressão em 3.13.0.

  • gh-65865: argparse now raises early error for invalid help arguments to add_argument(), add_subparsers() and add_parser().

  • gh-124653: Corrige a detecção da API de fila mínima necessária pelo módulo logging. Patch por Bénédikt Tran.

  • gh-91818: The CLI of many modules (ast, ensurepip, json, pdb, sqlite3, tokenize, venv) now uses the actual executable name instead of simply “python” to display in the usage message.

  • gh-124858: Corrige ciclos de referência deixados em tracebacks em asyncio.open_connection() quando usado com happy_eyeballs_delay

  • gh-124390: Fixed AssertionError when using asyncio.staggered.staggered_race() with asyncio.eager_task_factory.

  • gh-85935: argparse.ArgumentParser.add_argument() now raises an exception if an action that does not consume arguments (like ‘store_const’ or ‘store_true’) or explicit nargs=0 are specified for positional arguments.

  • gh-124835: Make tomllib.loads() raise TypeError not AttributeError on bad input types that do not have the replace attribute. Improve error message when bytes is received.

  • gh-124693: Fix a bug where argparse doesn’t recognize negative complex numbers or negative numbers using scientific notation.

  • gh-124787: Fix typing.TypeAliasType with incorrect type_params argument. Now it raises a TypeError when a type parameter without a default follows one with a default, and when an entry in the type_params tuple is not a type parameter object.

  • gh-66436: Improved prog default value for argparse.ArgumentParser. It will now include the name of the Python executable along with the module or package name, or the path to a directory, ZIP file, or directory within a ZIP file if the code was run that way.

  • gh-116850: Corrige argparse para espaços de nomes com dict não diretamente gravável (por exemplo, classes).

  • gh-101552: Add an annoation_format parameter to inspect.signature(). Add an quote_annotation_strings parameter to inspect.Signature.format(). Use the new functionality to improve the display of annotations in signatures in pydoc. Patch by Jelle Zijlstra.

  • gh-58573: Corrige conflitos entre opções longas abreviadas no analisador pai e subanalisadores em argparse.

  • gh-124594: Todos os prompts REPL asyncio são executados no mesmo context. Contribuição de Bartosz Sławecki.

  • gh-61181: Corrige suporte de choices com valor de string em argparse. Substrings da string especificada não são mais considerados valores válidos.

  • gh-116750: Provide sys.monitoring.clear_tool_id() to unregister all events and callbacks set by the tool.

  • gh-124552: Improve the accuracy of bdb’s check for the possibility of breakpoint in a frame. This makes it possible to disable unnecessary events in functions.

  • gh-124538: Corrige falha ao usar gc.get_referents() em um objeto cápsula.

  • gh-80259: Corrige suporte de argparse de argumentos posicionais com nargs='?', default=argparse.SUPPRESS e type especificado.

  • gh-120378: Corrige uma falha relacionada a um estouro de inteiro em curses.resizeterm() e curses.resize_term().

  • gh-124498: Corrige typing.TypeAliasType para não ser genérico, quando type_params é uma tupla vazia.

  • gh-53834: Fix support of arguments with choices in argparse. Positional arguments with nargs equal to '?' or '*' no longer check default against choices. Optional arguments with nargs equal to '?' no longer check const against choices.

  • gh-123884: Corrige bug no tratamento de itertools.tee() de outras entradas tee (um tee em um tee). A saída agora tem os prometidos n novos iteradores independentes. Anteriormente, o primeiro iterador era idêntico (não independente) ao iterador de entrada. Isso às vezes dava resultados surpreendentes.

  • gh-123017: Devido a resultados não confiáveis ​​em alguns dispositivos, time.strftime() não aceita mais anos negativos no Android.

  • gh-123014: os.pidfd_open() e signal.pidfd_send_signal() agora estão indisponíveis ao construir em níveis de API do Android mais antigos que 31, pois as chamadas de sistema subjacentes podem causar uma falha.

  • gh-124176: Add support for dataclasses.dataclass() in unittest.mock.create_autospec(). Now create_autospec will check for potential dataclasses and use dataclasses.fields() function to retrieve the spec information.

  • gh-124345: vim argparse suporta opções longas de traço simples abreviadas separadas por = de seu valor.

  • gh-124400: Fixed a pdb bug where until has no effect when it appears in a commands sequence. Also avoid printing the frame information at a breakpoint that has a command list containing a command that resumes execution.

  • gh-90562: Modify dataclasses to support zero-argument super() when slots=True is specified. This works by modifying all references to __class__ to point to the newly created class.

  • gh-104860: Corrigido a falta de permissão de abreviação de opções longas de traço simples em argparse com allow_abbrev=False.

  • gh-63143: Corrigida a análise de argumentos mutuamente exclusivos em argparse. Argumentos com o valor idêntico ao valor padrão (por exemplo, booleanos, inteiros pequenos, strings vazias ou de 1 caractere) não são mais considerados “não presentes”.

  • gh-72795: Argumentos posicionais com nargs igual a '*' ou argparse.REMAINDER não são mais necessários. Isso permite usar argumento posicional com nargs='*' e sem default em grupo mutuamente exclusivo e melhora a mensagem de erro sobre argumentos necessários.

  • gh-59317: Corrige análise de argumento posicional com nargs igual a '?' ou '*' se for precedido por uma opção e outro argumento posicional.

  • gh-100980: The _fields_ attribute of ctypes.Structure and Union is no longer set if the setattr operation raises an error.

  • gh-53780: argparse agora ignora o primeiro "--" (traço duplo) entre uma opção e um comando.

  • gh-124217: Adicionar bloco IPv6 reservado do RFC 9637 3fff::/20 no módulo ipaddress.

  • gh-111513: Improve the error message that may be raised by datetime.date.fromtimestamp().

  • gh-124248: Corrige possível falha ao usar struct para processar campos ‘Pascal string’ de largura zero (0p).

  • gh-81691: Corrige manipulação de múltiplos "--" (traços duplos) em argparse. Apenas o primeiro foi removido, todos os subsequentes agora são tomados literalmente.

  • gh-87041: Corrige um bug em argparse onde a ajuda de argumento de sub-analisador longa é indentada incorretamente.

  • gh-84559: The default multiprocessing start method on Linux and other POSIX systems has been changed away from often unsafe "fork" to "forkserver" (when the platform supports sending file handles over pipes as most do) or "spawn". Mac and Windows are unchanged as they already default to "spawn".

  • gh-124212: Corrige variável inválida em venv manipulação de link simbólico com falha no Windows

  • gh-124171: Adiciona solução alternativa para implementações quebradas de fmod() no Windows, que perdem o sinal de zero (por exemplo, fmod(-10, 1) retorna 0.0). Patch por Sergey B Kirpichev.

  • gh-123978: Remove time.thread_time() e time.thread_time_ns() quebrados no NetBSD.

  • gh-123934: Fix unittest.mock.MagicMock resetting magic methods return values after .reset_mock(return_value=True) was called.

  • gh-124016: Update unicodedata database to Unicode 16.0.0.

  • gh-123968: Corrige a interface de linha de comando para o módulo random para selecionar floats entre 0 e N, não 1 e N.

  • gh-123945: Fix a bug where argparse doesn’t recognize negative numbers with underscores

  • gh-123935: Corrige detecção de slots pai para dataclasses que herdam de classes com __dictoffset__.

  • gh-123892: Adicionar "_wmi" a sys.stdlib_module_names. Patch por Victor Stinner.

  • gh-84808: Fix error handling in socket method connect_ex() on platforms where errno can be negative.

  • gh-123756: Added a new argument mode to pdb.Pdb. Only allow pdb from command line to use restart command.

  • gh-122765: Corrige erros de aspas desbalanceadas que ocorrem quando activate.csh em venv era carregado com um prompt personalizado contendo aspas desemparelhadas ou novas linhas.

  • gh-123657: Corrige o travamento e o vazamento de memória em decimal.getcontext(). Ele travava ao usar um contexto local de thread por --with-decimal-contextvar=no.

  • gh-123339: Corrige inspect.getsource() para classes nos módulos collections.abc e decimal (para implementação Python pura). inspect.getcomments() agora levanta OSError em vez de IndexError se o valor __firstlineno__ para uma classe estiver fora dos limites.

  • gh-123374: Remove check for redefined memo entry in pickletools.dis().

  • gh-123504: Fixed reference leak in the finalization of tkinter.

  • gh-123430: Pages generated by the http.server module allow the browser to apply its default dark mode.

  • gh-123446: Fix empty function name in TypeError when csv.reader(), csv.writer(), or csv.register_dialect() are used without the required args.

  • gh-123448: Corrigido vazamento de memória de typing.NoDefault movendo-o para o vetor de tipos estáticos.

  • gh-123409: Corrige a saída de ipaddress.IPv6Address.reverse_pointer de acordo com RFC 3596, §2.5. Patch por Bénédikt Tran.

  • gh-123089: Make weakref.WeakSet safe against concurrent mutations while it is being iterated. Patch by Kumar Aditya.

  • gh-123363: Show string value of CONTAINS_OP oparg in dis output. Patch by Alexandr153.

  • gh-123341: Add __class_getitem__() to tkinter.Event for type subscript support at runtime. Patch by Adonis Rakateli.

  • gh-123340: Show string value of IS_OP oparg in dis output.

  • gh-119518: Speed up normalization of pathlib.PurePath and Path objects by not interning string parts.

  • gh-123270: Aplicada uma correção mais cirúrgica para payloads malformados em zipfile.Path causando loops infinitos (gh-122905) sem quebrar o conteúdo usando caracteres legítimos.

  • gh-73991: Add pathlib.Path.copy_into() and move_into(), which copy and move files and directories into existing directories.

  • gh-123228: Corrige tipo de retorno para _pyrepl.readline._ReadlineWrapper.get_line_buffer() para ser str(). Patch por Sergey B Kirpichev.

  • gh-123240: Levanta eventos de auditoria para input() no novo REPL.

  • gh-76960: Fix urllib.parse.urljoin() and urllib.parse.urldefrag() for URIs containing empty components. For example, urljoin() with relative reference “?” now sets empty query and removes fragment. Preserve empty components (authority, params, query, fragment) in urljoin(). Preserve empty components (authority, params, query) in urldefrag().

  • gh-116810: Resolve um vazamento de memória introduzido no ssl do CPython 3.10 quando a propriedade ssl.SSLSocket.session era acessada. Acelera o acesso de leitura e gravação à referida propriedade ao não clonar mais objetos de sessão desnecessariamente por meio de serialização.

  • gh-123243: Corrige vazamento de memória em _decimal.

  • gh-122546: Usar consistentemente o mesmo nome de arquivo para diferentes exceções no novo repl. Patch por Sergey B Kirpichev.

  • gh-123213: xml.etree.ElementTree.Element.extend() and Element assignment no longer hide the internal exception if an erroneous generator is passed. Patch by Bar Harel.

  • gh-85110: Preserva caminho relativo em URL sem netloc em urllib.parse.urlunsplit() e urllib.parse.urlunparse().

  • gh-123165: Add support for rendering Positions in dis.

  • gh-122909: In urllib.request when URLError is raised opening an ftp URL, the exception argument is now consistently a string. Earlier versions passed either a string or an ftplib exception instance as the argument to URLError.

  • gh-123084: Deprecate shutil.ExecError, which hasn’t been raised by any shutil function since Python 3.4. It’s now an alias for RuntimeError.

  • gh-123085: In a bare call to importlib.resources.files(), ensure the caller’s frame is properly detected when importlib.resources is itself available as a compiled module only (no source).

  • gh-123067: Corrige complexidade quadrática na análise de valores de cookies entre aspas " com contrabarras por http.cookies.

  • gh-123049: Add support for UNNAMED_SECTION in configparser.ConfigParser.add_section().

  • gh-121735: Ao trabalhar com arquivos zip, importlib.resources agora honra corretamente referências adjacentes ao módulo (por exemplo, files(pkg.mod) e não apenas files(pkg)).

  • gh-122981: Corrige inspect.getsource() para classes geradas com classes base Python (por exemplo, enums).

  • gh-122903: zipfile.Path.glob agora corresponde corretamente aos diretórios em vez de omiti-los silenciosamente.

  • gh-122905: Objetos zipfile.Path agora sanitizam nomes do arquivo zip.

  • gh-122873: Enable json module to work as a script using the -m switch: python -m json. See the JSON command-line interface documentation. Patch by Trey Hunner.

  • gh-122858: Deprecate asyncio.iscoroutinefunction() in favor of inspect.iscoroutinefunction().

  • gh-116263: logging.handlers.RotatingFileHandler não substitui mais arquivos de log vazios.

  • gh-105376: Restaura o método descontinuado warn() do logging. Ele foi removido no Python 3.13 alpha 1. Mantém o método descontinuado warn() no Python 3.13. Patch por Victor Stinner.

  • gh-122311: Improve errors in the pickle module. PicklingError is now raised more often instead of UnicodeEncodeError, ValueError and AttributeError, and the original exception is chained to it. Improve and unify error messages in Python and C implementations.

  • gh-122744: Sobe a versão do pip empacotado em ensurepip para a versão 24.2.

  • gh-118761: Improve import time of pprint by around seven times. Patch by Hugo van Kemenade.

  • gh-118974: Add decorator parameter to dataclasses.make_dataclass() to customize the functional creation of dataclasses.

  • gh-118814: Corrige o construtor typing.TypeVar quando o nome for passado como argumento nomeado.

  • gh-122637: Adjust cmath.tanh(nanj) and cmath.tanh(infj) for recent C standards.

  • gh-122478: Remove internal frames from tracebacks shown in code.InteractiveInterpreter with non-default sys.excepthook(). Save correct tracebacks in sys.last_traceback and update __traceback__ attribute of sys.last_value and sys.last_exc.

  • gh-116622: No Android, as constantes FICLONE e FICLONERANGE não são mais expostas por fcntl, pois esses ioctls são bloqueados pelo SELinux.

  • gh-82378: Garante que o novo REPL interprete sys.tracebacklimit da mesma forma que o REPL clássico.

  • gh-122334: Corrige o travamento ao importar ssl após a reinicialização do interpretador principal.

  • gh-122459: Optimize pickling by name objects without the __module__ attribute.

  • gh-87320: Em code.InteractiveInterpreter, trata exceções causadas pela chamada de um sys.excepthook() não padrão. Antes, a exceção era apresentada para o chamador, encerrando o REPL.

  • gh-122272: On some platforms such as Linux, year with century was not 0-padded when formatted by strftime() with C99-specific specifiers '%C' or '%F'. The 0-padding behavior is now guaranteed when the format specifiers '%C' and '%F' are supported by the C library. Patch by Ben Hsing

  • gh-122400: Lida com ValueErrors levantados por os.stat() em filecmp.dircmp e filecmp.cmpfiles(). Patch por Bénédikt Tran.

  • gh-122311: Corrige algumas mensagens de erro em pickle.

  • gh-121650: Cabeçalhos email com quebras de linha incorporadas agora são citados na saída. O generator agora se recusará a serializar (escrever) cabeçalhos que são dobrados ou delimitados de forma insegura; consulte verify_generated_headers. (Contribuição de Bas Bloemsaat e Petr Viktorin em gh-121650.)

  • gh-122332: Corrigido segfault com asyncio.Task.get_coro() ao usar uma fábrica de tarefas ansiosa.

  • gh-105733: a função ctypes.ARRAY() agora está suavemente descontinuada: ela não emite mais avisos de descontinuação e não está programada para remoção.

  • gh-122213: Add notes for pickle serialization errors that allow to identify the source of the error.

  • gh-119180: As part of PEP 749, add the following attributes for customizing evaluation of annotation scopes:

  • gh-119180: Fix handling of classes with custom metaclasses in annotationlib.get_annotations.

  • gh-122170: Lida com ValueErrors levantadas por os.stat() em linecache. Patch por Bénédikt Tran.

  • gh-122163: Add notes for JSON serialization errors that allow to identify the source of the error.

  • gh-122129: Improve support of method descriptors and wrappers in the help title.

  • gh-122145: Corrige um problema ao relatar tracebacks correspondentes ao código Python emitindo um corpo AST vazio. Patch de Nikita Sobolev e Bénédikt Tran.

  • gh-121723: Faz logging.config.dictConfig() aceitar qualquer objeto que implemente a API pública Queue. Veja a seção configuração de fila para detalhes. Patch por Bénédikt Tran.

  • gh-82951: Serializa objetos com __qualname__ complexo (como métodos não vinculados e classes aninhadas) por nome não envolve mais serializar objetos pais por valor em protocolos pickle < 4.

  • gh-120754: Pathlib.read_bytes no longer opens the file in Python’s buffered I/O mode. This reduces overheads as the code reads a file in whole leading to a modest speedup.

  • gh-113785: csv agora analisa corretamente campos numéricos (quando usados ​​com csv.QUOTE_NONNUMERIC ou csv.QUOTE_STRINGS) que começam com um caractere de escape.

  • gh-122088: @warnings.deprecated agora copia o status da corrotina de funções e métodos para que inspect.iscoroutinefunction() retorne o resultado correto.

  • gh-122081: Corrige uma falha na função opcional decimal.IEEEContext() disponível por meio do sinalizador de configuração EXTRA_FUNCTIONALITY.

  • gh-73991: Add pathlib.Path.move(), which moves a file or directory tree.

  • gh-121268: Remove workarounds for non-IEEE 754 systems in cmath.

  • gh-119698: Due to the lack of interest for symtable.Class.get_methods(), the method is marked as deprecated and will be removed in Python 3.16. Patch by Bénédikt Tran.

  • gh-121889: Adjusts cmath.acosh(complex('0+nanj')) for recent C standards.

  • gh-121804: Mostra corretamente os locais de erro quando SyntaxError é levantada em um novo repl. Patch por Sergey B Kirpichev.

  • gh-121797: Add alternative Fraction constructor Fraction.from_number().

  • gh-121798: Add alternative Decimal constructor Decimal.from_number().

  • gh-120930: Corrigido um bug introduzido por gh-92081 que adicionava um espaço extra incorreto para palavras codificadas ocorrendo em cabeçalhos encapsulados.

  • gh-57141: O argumento shallow para filecmp.dircmp (novo no Python 3.13) agora é somente-nomeado.

  • gh-121245: Simplifica o tratamento do arquivo de histórico no auxiliar site.register_readline(). A variável CAN_USE_PYREPL agora será inicializada quando importada. Patch por Sergey B Kirpichev.

  • gh-121249: Support the float complex and double complex C types in the struct module if the compiler has C11 complex arithmetic. Patch by Sergey B Kirpichev.

  • gh-121486: math functions isqrt(), log(), log2() and log10() now support integers larger than 2**2**32 on 32-bit platforms.

  • gh-121474: Corrigida a verificação de sanidade ausente para o argumento parties no construtor threading.Barrier. Patch por Clinton Christian (pygeek).

  • gh-121450: Hard-coded breakpoints (breakpoint() and pdb.set_trace()) now reuse the most recent Pdb instance that calls Pdb.set_trace(), instead of creating a new one each time. As a result, all the instance specific data like display and commands are preserved across Hard-coded breakpoints.

  • gh-119169: Slightly speed up os.walk() by simplifying exception handling.

  • gh-121423: Improve import time of socket by lazy importing modules and writing socket.errorTab as a constant.

  • gh-59110: zipimport supports now namespace packages when no directory entry exists.

  • gh-119004: Corrige uma falha em OrderedDict.__eq__ quando operandos são mutados durante a verificação. Patch por Bénédikt Tran.

  • gh-121313: Limit the reading size in the multiprocessing.connection.Connection class to 64 KiB to prevent memory overallocation and unnecessary memory management system calls.

  • gh-121332: Corrige o construtor de nós ast com _attributes personalizados. Anteriormente, passar atributos personalizados levantaria DeprecationWarning. Passar argumentos para o construtor que não estão em _fields ou _attributes continua descontinuado. Patch por Jelle Zijlstra.

  • gh-121245: Corrige um bug no tratamento do histórico de comandos do novo REPL que fazia com que o arquivo de histórico fosse apagado na saída do REPL.

  • gh-121210: Handle AST nodes with missing runtime fields or attributes in ast.compare(). Patch by Bénédikt Tran.

  • gh-121163: Add support for all as an valid action for warnings.simplefilter() and warnings.filterwarnings().

  • gh-121151: Corrige o encapsulamento de texto de uso longo de argumentos dentro de um grupo mutuamente exclusivo em argparse.

  • gh-121141: Add support for copy.replace() to AST nodes. Patch by Bénédikt Tran.

  • gh-87744: Corrige a corrida waitpid ao chamar send_signal() em asyncio. Patch por Kumar Aditya.

  • gh-121027: Adiciona um aviso futuro em functools.partial.__get__(). Em versões futuras do Python, functools.partial será um descritor de método.

  • gh-121027: Make the functools.partial object a method descriptor.

  • gh-117784: CPython now detects whether its linked TLS library supports TLSv1.3 post-handshake authentication and disables that feature if support is lacking.

  • gh-121025: Melhora o __repr__() de functools.partialmethod. Patch por Bénédikt Tran.

  • gh-121018: Fixed issues where argparse.ArgumentParser.parse_args() did not honor exit_on_error=False. Based on patch by Ben Hsing.

  • gh-119614: Corrige truncamento de strings com caracteres nulos incorporados em algumas operações internas em tkinter.

  • gh-120910: Ao ler arquivos instalados de um egg, usa relative_to(walk_up=True) para honrar arquivos instalados fora da raiz da instalação.

  • gh-61103: Support float complex, double complex and long double complex C types in ctypes as c_float_complex, c_double_complex and c_longdouble_complex if the compiler has C11 complex arithmetic. Patch by Sergey B Kirpichev.

  • gh-120888: Atualiza pip wheel empacotado com ensurepip (pip 24.1.1)

  • gh-101830: Acessar a representação de string do objeto tkinter não converte mais o objeto Tcl subjacente em uma string no Windows.

  • gh-120678: Corrigida a regressão no novo REPL que significava que globais de arquivos passados ​​usando o argumento -i não seriam incluídos no namespace global do REPL. Patch por Alex Waygood.

  • gh-120811: Corrige possível vazamento de memória em contextvars.Context.run().

  • gh-120782: Corrigidas referências erradas dos tipos datetime após recarregar o módulo.

  • gh-120713: datetime.datetime.strftime() agora preenche com 0 anos com menos de quatro dígitos para os especificadores de formato %Y e %G no Linux. Patch por Ben Hsing

  • gh-120769: Faz com que uma linha vazia em pdb repita o último comando mesmo quando o comando é de cmdqueue.

  • gh-120780: Show string value of LOAD_SPECIAL oparg in dis output.

  • gh-41431: Add datetime.time.strptime() and datetime.date.strptime(). Contributed by Wannes Boeykens.

  • gh-120743: Soft deprecate os.popen() and os.spawn* functions. They should no longer be used to write new code. The subprocess module is recommended instead. Patch by Victor Stinner.

  • gh-120732: Corrige name passando para o objeto unittest.mock.Mock ao usar unittest.mock.create_autospec().

  • gh-111259: re now handles patterns like "[\s\S]" or "\s|\S" which match any character as effectively as a dot with the DOTALL modifier ("(?s:.)").

  • gh-120683: Corrige um erro em logging.LogRecord, quando a parte inteira do registro de data e hora é arredondada para cima, enquanto o cálculo de milissegundos trunca, fazendo com que o registro de data e hora do log esteja errado em até 999 ms (afetou aproximadamente 1 em 8 milhões de registros de data e hora).

  • gh-118710: ipaddress.IPv4Address and ipaddress.IPv6Address attributes version and max_prefixlen are now available on the class.

  • gh-120633: Move a barra de rolagem e remova os menus destacáveis ​​no turtledemo.

  • gh-120606: Allow users to use EOF to exit commands definition in pdb

  • gh-120284: Allow asyncio.Runner.run() to accept awaitable objects instead of simply coroutines.

  • gh-120541: Melhora o prompt no pager “less” quando help() é chamado com argumento não-string.

  • gh-120495: Corrige o tratamento de exceção incorreto no Tab Nanny. Patch por Wulian233.

  • gh-120388: Improve a warning message when a test method in unittest returns something other than None. Now we show the returned object type and optional asyncio-related tip.

  • gh-120381: Corrige inspect.ismethoddescriptor() para verificar também a falta de __delete__(). Patch por Jan Kaliszewski.

  • gh-90425: O byte do SO em cabeçalhos gzip agora é sempre definido como 255 ao usar gzip.compress().

  • gh-120343: Corrige o relatório de deslocamento de coluna para tokens que vêm depois de f-strings multilinhas no módulo tokenize.

  • gh-119180: As part of implementing PEP 649 and PEP 749, add a new module annotationlib. Add support for unresolved forward references in annotations to dataclasses, typing.TypedDict, and typing.NamedTuple.

  • gh-119600: Corrige unittest.mock.patch() para não ler atributos do alvo quando new_callable estiver definido. Patch por Robert Collins.

  • gh-120289: Corrigido o problema de uso após liberação em cProfile ao desabilitar disable() e clear() em temporizadores externos.

  • gh-82017: Added support for converting any objects that have the as_integer_ratio() method to a Fraction.

  • gh-114053: Corrige bug de caso extremo em que typing.get_type_hints() produziria resultados incorretos se parâmetros de tipo em um escopo de classe fossem substituídos por atribuições em um escopo de classe e a semântica from __future__ import annotations estivesse habilitada. Patch por Alex Waygood.

  • gh-114053: Corrige NameError errôneo ao chamar inspect.get_annotations() com eval_str=True` em uma classe que fazia uso de parâmetros do tipo PEP 695 em um módulo que tinha from __future__ import annotations no topo do arquivo. Patch por Alex Waygood.

  • gh-120268: Proibe passar None para datetime.date.fromtimestamp() puro-Python para obter consistência com a implementação da extensão C.

  • gh-120244: Corrige vazamento de memória em re.sub() quando a string de substituição contém referências anteriores.

  • gh-120254: Added commands argument to pdb.set_trace() which allows users to send debugger commands from the source file.

  • gh-120211: Corrige tkinter.ttk com Tcl/Tk 9.0.

  • gh-71587: Corrige travamento na versão C de datetime.datetime.strptime() quando chamado novamente no interpretador reiniciado.

  • gh-117983: Adia a importação de threading em importlib.util até que o carregamento preguiçoso seja usado.

  • gh-120157: Remove unused constant concurrent.futures._base._FUTURE_STATES in concurrent.futures. Patch by Clinton Christian (pygeek).

  • gh-120161: datetime não trava mais em certas situações complexas de ciclo de referência.

  • gh-119698: Corrige symtable.Class.get_methods() e documenta seu comportamento. Patch por Bénédikt Tran.

  • gh-120121: Adiciona concurrent.futures.InvalidStateError ao módulo __all__.

  • gh-119933: Adiciona a enumeração symtable.SymbolTableType para representar as possíveis saídas do método symtable.SymbolTable.get_type. Patch por Bénédikt Tran.

  • gh-120029: Expose symtable.Symbol methods is_free_class(), is_comp_iter() and is_comp_cell(). Patch by Bénédikt Tran.

  • gh-120108: Corrige chamada de copy.deepcopy() em árvores ast que foram modificadas para ter referências a nós pais. Patch por Jelle Zijlstra.

  • gh-120056: Add socket.IP_RECVERR and socket.IP_RECVTTL constants (both available since Linux 2.2). And socket.IP_RECVORIGDSTADDR constant (available since Linux 2.6.29).

  • gh-112672: Suporte para construção de tkinter com Tcl 9.0.

  • gh-120057: Added the os.environ.refresh() method to update os.environ with changes to the environment made by os.putenv(), by os.unsetenv(), or made outside Python in the same process. Patch by Victor Stinner.

  • gh-120029: Expose symtable.Symbol.is_type_parameter() in the symtable module. Patch by Bénédikt Tran.

  • gh-119819: Corrige regressão para permitir configuração de registro com tipos de fila de multiprocessamento.

  • gh-65454: unittest.mock.Mock.attach_mock() não dispara mais uma chamada para um PropertyMock sendo anexado.

  • gh-117142: O módulo ctypes agora pode ser importado em todos os subinterpretadores, incluindo aqueles que têm sua própria GIL.

  • gh-118835: Corrige falha do _pyrepl ao usar prompt personalizado com códigos de escape ANSI.

  • gh-81936: Os métodos help() e showtopic() agora respeitam um argumento output configurado para pydoc.Helper e não usam o pager em tais casos. Patch por Enrico Tröger.

  • gh-117398: O módulo _datetime (implementação C para datetime) agora oferece suporte a importação em múltiplos interpretadores.

  • gh-119824: Print stack entry in pdb when and only when user input is needed.

  • gh-119838: In mixed arithmetic operations with Fraction and complex, the fraction is now converted to float instead of complex.

  • gh-119770: Make termios ioctl() constants positive. Patch by Victor Stinner.

  • gh-89727: Corrige problema com shutil.rmtree() onde uma RecursionError é levantada em árvores de diretório profundas.

  • gh-119577: O DeprecationWarning emitido ao testar o valor verdade de um xml.etree.ElementTree.Element agora descreve o retorno incondicional de True em uma versão futura em vez de gerar uma exceção no Python 3.14.

  • gh-89727: Corrige parcialmente o problema com shutil.rmtree() onde uma RecursionError é levantada em árvores de diretório profundas. Um erro de recursão não é mais levantado quando rmtree.avoids_symlink_attacks é falso.

  • gh-93963: Remove deprecated names from importlib.abc as found in importlib.resources.abc.

  • gh-119118: Corrige regressão de desempenho no módulo tokenize armazenando em cache o atributo de token line e calculando o deslocamento da coluna de forma mais eficiente.

  • gh-89727: Corrige problema com os.fwalk() onde uma RecursionError era levantada em árvores de diretório profundas ajustando a implementação para ser iterativa em vez de recursiva.

  • gh-119594: If one calls pow(fractions.Fraction, x, module) with modulo not None, the error message now says that the types are incompatible rather than saying pow only takes 2 arguments. Patch by Wim Jeantine-Glenn and Mark Dickinson.

  • gh-119588: zipfile.Path.is_symlink agora avalia se o caminho fornecido é um link simbólico.

  • gh-119562: Remove ast.Num, ast.Str, ast.Bytes, ast.NameConstant and ast.Ellipsis. They had all emitted deprecation warnings since Python 3.12. Patch by Alex Waygood.

  • gh-119555: Captura SyntaxError de compile() no método runsource() do InteractiveColoredConsole. Patch por Sergey B Kirpichev.

  • gh-118908: Limita os globais expostos de importações e definições internas na inicialização do novo REPL. Patch por Eugene Triguba e Pablo Galindo.

  • gh-117865: Improve the import time of the ast module by deferring the import of re. Patch by Jelle Zijlstra.

  • gh-119127: Positional arguments of functools.partial() objects now support placeholders via functools.Placeholder.

  • gh-113892: Agora, o método sock_connect de asyncio.ProactorEventLoop levanta um ValueError se o soquete fornecido não estiver no modo não bloqueante, bem como em outras implementações de laço.

  • gh-119506: Corrige o método io.TextIOWrapper.write() que quebra o buffer interno quando o método é chamado novamente durante a descarga do buffer interno.

  • gh-69214: Fix fcntl.ioctl() request parameter: use an unsigned long instead of an unsigned int for the request parameter of fcntl.ioctl() to support requests larger than UINT_MAX. Patch by Victor Stinner.

  • gh-119105: difflib’s DIffer.compare() (and so also ndiff) can no longer be provoked into cubic-time behavior, or into unbounded recursion, and should generally be faster in ordinary cases too. Results may change in some cases, although that should be rare. Correctness of diffs is not affected. Some similar lines far apart may be reported as deleting one and adding the other, where before they were displayed on adjacent output lines with markup showing the intraline differences.

  • gh-119443: O REPL interativo não é mais executado com from __future__ import annotations habilitado. Patch por Jelle Zijlstra.

  • gh-119461: Add socket.VMADDR_CID_LOCAL constant. Patch by Victor Stinner.

  • gh-117398: Os objetos na C-API datetime agora são alocados estaticamente, o que significa melhor segurança de memória, especialmente quando o módulo é recarregado. Isso deve ser transparente para os usuários.

  • gh-118894: asyncio O REPL agora tem os mesmos recursos do PyREPL.

  • gh-118830: Bump pickle default protocol to 5.

  • gh-118911: No PyREPL, a lógica do maybe-accept foi atualizada para que, se o usuário pressionar Enter duas vezes, ele possa encerrar o bloco mesmo se houver um espaço em branco à direita. Além disso, agora, quando o usuário pressiona a seta para cima, o cursor fica na última linha da função. Isso corresponde ao comportamento do IPython. Patch por Aya Elsayed.

  • gh-115225: Raise error on certain technically valid but pathological ISO 8601 strings passed to datetime.time.fromisoformat() that were previously parsed incorrectly.

  • gh-111201: Remove dependência para readline do novo REPL do Python.

  • gh-119189: Ao usar o operador ** ou pow() com Fraction como base e um expoente que não seja racional, um float ou um complexo, a fração não é mais convertida em um float.

  • gh-119174: Corrige DPI alto que causa janelas borradas no turtledemo (exemplos do turtle-graphics) Patch por Wulian233 e Terry Jan Reedy

  • gh-119121: Corrige um NameError acontecendo em asyncio.staggered.staggered_race. Esta função agora está testada.

  • gh-119105: difflib.Differ is much faster for some cases of diffs where many pairs of lines are equally similar.

  • gh-119113: Corrige problema em que pathlib.PurePath.with_suffix() não levantava TypeError quando dado None como sufixo.

  • gh-118643: Corrige um AttributeError no módulo email ao redobrar uma longa lista de endereços. Também corrige mais casos de codificação incorreta do separador de endereços na lista de endereços.

  • gh-73991: Add pathlib.Path.copy(), which copies a file or directory to another.

  • gh-58933: Faz pdb retornar ao quadro do chamador corretamente quando f_trace do quadro do chamador não estiver definido

  • gh-82805: Support single-dot file extensions in pathlib.PurePath.suffix and related attributes and methods. For example, the suffixes of PurePath('foo.bar.') are now ['.bar', '.'] rather than []. This brings file extension splitting in line with os.path.splitext().

  • gh-118924: Remove version and version_info from sqlite3. Patch by Hugo van Kemenade.

  • gh-118928: Disallow using a sequence of parameters with named placeholders in sqlite3 queries. Patch by Erlend E. Aasland.

  • gh-118895: Define atributos em typing.NoDefault agora levanta AttributeError em vez de TypeError.

  • gh-118868: Corrigido o problema em que kwargs não eram mais passados ​​para o manipulador de registro QueueHandler

  • gh-118827: Remove deprecated Quoter class from urllib.parse. It had previously raised a DeprecationWarning since Python 3.11. Patch by Nikita Sobolev.

  • gh-118824: Remove deprecated pty.master_open() and pty.slave_open(). Use pty.openpty() instead. Patch by Nikita Sobolev.

  • gh-118851: Argumentos ctx para os construtores de classes de nó ast agora são padronizados para ast.Load(). Patch por Jelle Zijlstra.

  • gh-101588: Remove copy, deepcopy, and pickle from itertools. These had previously raised a DeprecationWarning since Python 3.12.

  • gh-118805: Remove type, choices, and metavar parameters of argparse.BooleanOptionalAction. They were deprecated since Python 3.12.

  • gh-118803: typing.ByteString and collections.abc.ByteString are removed. They had previously raised a DeprecationWarning since Python 3.12.

  • gh-118798: The isdst parameter has been removed from email.utils.localtime(). Patch by Hugo van Kemenade.

  • gh-118760: Restaura o valor padrão de tkiter.wantobjects para 1.

  • gh-118760: Corrige erros ao chamar ligações Tkinter no Windows.

  • gh-74033: Drop support for passing keyword arguments to pathlib.Path.

  • gh-101357: Suppress all OSError exceptions from pathlib.Path.exists() and is_*() methods, rather than a selection of more common errors. The new behaviour is consistent with os.path.exists(), os.path.isdir(), etc. Use pathlib.Path.stat() to retrieve the file status without suppressing exceptions.

  • gh-78707: Drop support for passing additional positional arguments to pathlib.PurePath.relative_to() and is_relative_to().

  • gh-118507: Corrige os.path.isfile() no Windows para pipes. Acelera os.path.isjunction() e os.path.lexists() no Windows com uma implementação nativa.

  • gh-118772: Permite que instâncias typing.TypeVar sem um padrão sigam instâncias sem um padrão em alguns casos. Patch por Jelle Zijlstra.

  • gh-118714: Permite restart na depuração post-mortem de pdb. Removida a mensagem de reinicialização quando o usuário sai do pdb do modo post-mortem.

  • gh-118673: Removed executable bits and shebang from stdlib modules.

  • gh-110863: os.path.realpath() agora suprime qualquer OSError de os.readlink() quando o modo strict está desabilitado (o padrão).

  • gh-118263: Acelera os.path.splitroot() e os.path.normpath() com uma chamada C direta.

  • gh-110190: Fix ctypes structs with array on SPARC by setting MAX_STRUCT_SIZE to 32 in stgdict. Patch by Jakub Kulik

  • gh-118033: Corrige dataclasses.dataclass() não criando um slot __weakref__ ao subclassificar typing.Generic.

  • gh-117766: Sempre usa str() para exibir choices em argparse.

  • gh-106531: Em importlib.resources, sincronizar com importlib_resources 6.3.2, incluindo: MultiplexedPath agora espera caminhos Traversable, descontinuando argumentos de string para MultiplexedPath; Suporte habilitado para recursos em pacotes de espaço de nomes em arquivos zip; Corrigido NotADirectoryError ao chamar arquivos em um subdiretório de um pacote de espaço de nomes.

  • gh-115937: Removed extra preprocessing for the __signature__ attribute: the code just check if it’s a inspect.Signature instance. Patch by Sergey B Kirpichev.

  • gh-115808: Add operator.is_none() and operator.is_not_none() functions.

  • gh-114264: Improve performance of copy.deepcopy() by adding a fast path for atomic types.

  • gh-113878: Add doc parameter to dataclasses.field(), so it can be stored and shown as a documentation / metadata. If @dataclass(slots=True) is used, then the supplied string is availabl in the __slots__ dict. Otherwise, the supplied string is only available in the corresponding dataclasses.Field object.

    In order to support this feature we are changing the __slots__ format in dataclasses from tuple to dict when documentation / metadata is present.

  • gh-113978: Ignora avisos sobre conclusão de texto dentro do REPL.

  • gh-113008: Correct argparse usage output for required, mutually exclusive groups containing a positional argument

  • gh-108172: webbrowser honra o navegador preferido do sistema no Linux quando a entrada desktop de nome contém o texto de um nome de navegador conhecido.

  • gh-109109: Agora você pode obter as cadeias de certificados TLS brutas de conexões TLS por meio dos métodos ssl.SSLSocket.get_verified_chain() e ssl.SSLSocket.get_unverified_chain().

    Contribuição de Mateusz Nowak.

  • gh-105623: Corrige degradação de desempenho em logging.handlers.RotatingFileHandler. Patch por Craig Robson.

  • gh-102450: Add missing ISO-8601 24:00 alternative to midnight of next day to datetime.datetime.fromisoformat() and datetime.time.fromisoformat(). Patch by Izan “TizzySaurus” Robinson (tizzysaurus@gmail.com)

  • gh-103956: Corrige a falta de caracteres de nova linha na saída do módulo trace quando o rastreamento de linha está habilitado, mas a linha de código-fonte para o quadro atual não está disponível.

  • gh-92081: Corrige espaços ausentes em cabeçalhos de e-mail quando os espaços são misturados com caracteres codificados de 8 bits.

  • gh-103194: Prepara o Tkinter para alterações na API C no Tcl 8.7/9.0 para evitar que _tkinter.Tcl_Obj seja retornado inesperadamente em vez de bool, str, bytearray ou int.

  • gh-87106: Corrigida a manipulação em inspect.Signature.bind() de argumentos nomeados com o mesmo nome que argumentos somente-posicionais quando um argumento nomeado variádico (por exemplo, **kwargs) estiver presente.

  • gh-103134: Add additional methods to proxy objects in the multiprocessing module:

    • clear() and copy() for proxies of list

    • fromkeys(), reversed(d), d | {}, {} | d, d |= {'b': 2} for proxies of dict

  • bpo-45767: Corrige conversão de inteiros em os.major(), os.minor() e os.makedev(). Suporte a números de dispositivos maiores que 2**63-1. Suporte a número de dispositivos inexistente (NODEV).

  • bpo-44864: Não traduz strings fornecidas pelo usuário em argparse.ArgumentParser.

  • bpo-41843: Solaris now uses os.sendfile() fast-copy syscall for more efficient shutil file copy related functions.

  • bpo-15987: Implemented ast.compare() for comparing two ASTs. Patch by Batuhan Taskaya with some help from Jeremy Hylton.

  • gh-67693: Corrige urllib.parse.urlunparse() e ​​:func:urllib.parse.urlunsplit para URIs com caminho começando com várias barras e sem autoridade. Baseado no patch de Ashwin Ramaswami.

  • bpo-14074: Corrige o processamento de metavariável de argparse para permitir que argumentos posicionais tenham uma metavar de tupla.

IDLE

  • gh-122392: Aumenta o espaçamento vertical atualmente inadequado para os navegadores IDLE (caminho, módulo e pilha) em monitores de alta resolução.

  • gh-112938: Corrige travamento ininterrupto quando o console obtém saída rápida e contínua.

  • gh-122482: Alterado o Sobre do IDLE para direcionar os usuários para discuss.python.org em vez do e-mail e lista de discussão idle-dev, agora não utilizados.

  • gh-78889: Para o congelamentos do Shell bloqueando o acesso do usuário a atributos sys.stdout.shell que não são métodos, que são todos privados.

  • gh-120083: Adiciona a cor preta explícita como primeiro plano de dicas flutuantes (hovertips) do IDLE, necessário para macOS recentes. Corrige o Sonoma mostrando branco ilegível em amarelo claro. Patch por John Riggles.

  • gh-120104: Corrige preenchimento em janelas de diálogo de configuração e pesquisa no IDLE.

Documentação

  • gh-124872: Adicionadas as definições para contexto, contexto atual e protocolo de gerenciamento de contexto, atualizadas definições relacionadas para serem consistentes e expandida a documentação para contextvars.Context.

  • gh-125018: A documentação importlib.metadata agora inclui alvos de referência cruzada semântica para as APIs documentadas significativas. Isso significa que referências intersphinx como importlib.metadata.version() agora funcionarão conforme o esperado.

  • gh-124720: Atualiza a seção “Usando Python em um Mac” do documento “Configuração e uso do Python” e incluir informações sobre a instalação do suporte a threads livres.

  • gh-124457: Remove coverity scan from the CPython repo. It has not been used since 2020 and is currently unmaintained.

  • gh-116622: Adiciona um guia de plataforma Android e sinaliza módulos não disponíveis no Android.

  • gh-123976: Refresh docs around custom providers.

  • gh-70870: Esclarecido o uso duplo do termo “variável livre” (tanto o significado formal de qualquer referência a nomes definidos fora do escopo local, quanto o significado pragmático mais restrito de variáveis ​​não locais nomeadas em co_freevars).

  • gh-121277: Os escritores da documentação do CPython agora podem usar next como a versão para as diretivas versionchanged, versionadded, deprecated.

  • gh-117765: Improved documentation for unittest.mock.patch.dict()

  • gh-121749: Corrige documentação para PyModule_AddObjectRef().

  • gh-120012: Esclarece os comportamentos de multiprocessing.Queue.empty() e multiprocessing.SimpleQueue.empty() em filas fechadas. Patch por Bénédikt Tran.

  • gh-119574: Added some missing environment variables to the output of --help-env.

  • bpo-34008: A documentação Py_Main() foi movida da seção “API de nível muito alto” para a seção “Inicialização e finalização”.

    Também explicita que esperamos que Py_Main seja chamado tipicamente em vez de Py_Initialize em vez de depois dele (já que Py_Main faz sua própria chamada para Py_Initialize). Documente que chamar ambos é suportado, mas depende da versão de quais configurações serão aplicadas corretamente.

Núcleo e embutidos

  • gh-124375: Corrige uma falha na construção de threads livres quando o GC é executado simultaneamente com uma nova thread iniciando.

  • gh-125221: Corrige possível condição de corrida ao chamar __reduce_ex__() pela primeira vez na construção de threads livres.

  • gh-125174: Make the handling of reference counts of immortal objects more robust. Immortal objects with reference counts that deviate from their original reference count by up to a billion (half a billion on 32 bit builds) are still counted as immortal.

  • gh-125039: Make this_instr and prev_instr const in cases generator.

  • gh-125008: Corrige tokenize.untokenize() produzindo sintaxe inválida para chaves duplas precedidas por certos caracteres de escape.

  • gh-124871: Corrige bug do compilador (em algumas versões do 3.13) onde uma asserção falha durante a análise de acessibilidade.

  • gh-123378: Corrige uma falha no método __str__() de objetos UnicodeError quando os valores UnicodeError.start e UnicodeError.end são inválidos ou estão fora do intervalo. Patch por Bénédikt Tran.

  • gh-118093: Improve the experimental JIT compiler’s ability to stay “on trace” when encountering highly-biased branches.

  • gh-124642: Corrigido problema de escalabilidade em construções de threads livres para leituras sem travas de dicionários em cenários de multithread

  • gh-116510: Corrige uma falha causada por strings internas imortais sendo compartilhadas entre subinterpretadores que usam inicialização básica de fase única. Nesse caso, a string pode ser usada por um interpretador que sobrevive ao interpretador que a criou e a internou. Para interpretadores que compartilham o estado obmalloc, compartilhe também o dict interno com o interpretador principal.

  • gh-116510: Corrige um bug que pode causar uma falha quando subinterpretadores usam módulos “básicos” de extensão de fase única. Objetos compartilhados podem se referir a nós PyGC_Head que foram liberados como parte da limpeza do interpretador.

  • gh-119180: The __main__ module no longer always contains an __annotations__ dictionary in its global namespace.

  • gh-124547: Ao desalocar um objeto com valores inline cujo __dict__ ainda está ativo: se a alocação de memória para os valores inline falhar, limpe o dicionário. Evita uma falha do interpretador.

  • gh-124513: Corrige uma falha no construtor FrameLocalsProxy: verifica o número de argumentos. Patch por Victor Stinner.

  • gh-124442: Corrige não determinismo na compilação classificando o valor de __static_attributes__. Patch por kp2pml30.

  • gh-124285: Fix bug where bool(a) can be invoked more than once during the evaluation of a compound boolean expression.

  • gh-123856: Corrige falha do PyREPL quando uma interrupção de teclado é acionada após usar uma pesquisa de histórico

  • gh-65961: Deprecate the setting and using __package__ and __cached__.

  • gh-119726: The JIT now generates more efficient code for calls to C functions resulting in up to 0.8% memory savings and 1.5% speed improvement on AArch64. Patch by Diego Russo.

  • gh-122878: Usa o binário pager, se disponível (por exemplo, no Debian e derivados), para exibir REPL help().

  • gh-124188: Corrige a leitura e decodificação de uma linha do arquivo de origem com codificação não UTF-8 para erros de sintaxe levantados no compilador.

  • gh-124027: Suporte às chaves <page up>, <page down> e <delete> no Python REPL quando $TERM estiver definido como vt100.

  • gh-124022: Fix bug where docstring is removed from classes in interactive mode.

  • gh-123958: docstrings are now removed from the optimized AST in optimization level 2.

  • gh-123923: The f_executable field in the internal _PyInterpreterFrame struct now uses a tagged pointer. Profilers and debuggers that uses this field should clear the least significant bit to recover the PyObject* pointer.

  • gh-77894: Corrige possível travamento no coletor de lixo quando ele tenta quebrar um laço de referência contendo um objeto memoryview. Agora, um objeto memoryview só pode ser limpo se não houver buffers que o referenciem.

  • gh-120221: o REPL do asyncio agora está reconhecendo corretamente KeyboardInterrupts. A exibição de exceções levantadas em threads secundárias foi corrigida.

  • gh-119310: Permite que o novo console interativo leia arquivos de histórico escritos com a biblioteca editline que usam entradas com escape unicode. Patch por aorcajo e Łukasz Langa.

  • gh-123572: Corrige mapeamentos de teclas para várias teclas F no Windows para o novo REPL. Patch por devdanzin

  • gh-123614: Add turtle.save() to easily save Turtle drawings as PostScript files. Patch by Marie Roald and Yngve Mardal Moe.

  • gh-123339: Define o atributo __module__ para uma classe agora remove o item __firstlineno__ do dict do tipo, então eles não serão mais inconsistentes.

  • gh-119034: Altera as teclas <page up> e <page down> do REPL do Python para pesquisa de histórico para frente/para trás. Patch por Victor Stinner.

  • gh-123562: Improve SyntaxError message for using case ... as ... with not a name.

  • gh-123545: Corrige um decref duplo em casos raros em construções JIT experimentais.

  • gh-123484: Corrige _Py_DebugOffsets para objetos longos para serem relativos ao início do objeto em vez do início de um subobjeto.

  • gh-123446: Fix empty function name in TypeError when builtin magic methods are used without the required args.

  • gh-123440: Improve SyntaxError message for using except as with not a name.

  • gh-116017: Improved JIT memory consumption by periodically freeing memory used by infrequently-executed code. This change is especially likely to improve the memory footprint of long-running programs.

  • gh-123344: Adiciona otimizações AST para padrões de parâmetros de tipo.

  • gh-123321: Impede que a condição de corrida Parser/myreadline apresente falhas de segmentação no uso multithread. Patch por Bar Harel e Amit Wienner.

  • gh-123177: Corrige um bug que causava o aparecimento de prompts perdidos no meio de linhas quebradas no novo REPL.

  • gh-122982: Estende o período de descontinuação para inversão de bool (~) em dois anos.

  • gh-123271: Make concurrent iterations over the same zip() iterator safe under free-threading.

  • gh-123275: Suporte a -X gil=1 e a PYTHON_GIL=1 em construções sem threads livres.

  • gh-123177: Desativa quebra de linha no Apple Terminal por meio de um código de escape ANSI. Patch por Pablo Galindo

  • gh-123229: Corrige o aviso valgrind inicializando os buffers f-string para 0 no tokenizador. Patch por Pablo Galindo

  • gh-122298: Restore printout of GC stats when gc.set_debug(gc.DEBUG_STATS) is called. This feature was accidentally removed when implementing incremental GC.

  • gh-121804: Mostra corretamente os locais de erro quando uma SyntaxError é levanta no REPL básico. Patch por Sergey B Kirpichev.

  • gh-115776: Enables inline values (Python’s equivalent of hidden classes) on any class who’s instances are of a fixed size.

  • gh-123142: Corrige o local de origem muito amplo em tracebacks de exceção provenientes de iteráveis ​​quebrados em compreensões.

  • gh-123048: Corrige um bug em que o código de correspondência de padrões poderia emitir um JUMP_FORWARD sem local de origem.

  • gh-118093: Break up CALL_ALLOC_AND_ENTER_INIT into micro-ops and relax requirement for exact args, in order to increase the amount of code supported by tier 2.

  • gh-123123: Corrige a exibição de exceções SyntaxError cobrindo várias linhas. Patch por Pablo Galindo

  • gh-123083: Corrige um possível uso após liberação em STORE_ATTR_WITH_HINT.

  • gh-123022: Corrige falha em construção de threads livres ao chamar Py_Initialize() de uma thread não principal.

  • gh-118093: Add three specializations for CALL_KW:

    • CALL_KW_PY for calls to Python functions

    • CALL_KW_BOUND_METHOD for calls to bound methods

    • CALL_KW_NON_PY for all other calls

  • gh-122821: Make sure that branches in while statements have consistent offsets for sys.monitoring. while statements are now compiled with a simple jump at the end of the body, instead of duplicating the test.

  • gh-122907: A construção com HAVE_DYNAMIC_LOADING agora funciona tão bem quanto no 3.12. As deficiências existentes serão abordadas separadamente. (Consulte https://github.com/python/cpython/issues/122950.)

  • gh-122888: Corrige falha em certas chamadas para str() com argumentos posicionais do tipo errado. Patch por Jelle Zijlstra.

  • gh-118093: Improve the experimental JIT’s handling of polymorphic code.

  • gh-122697: Fixed memory leaks at interpreter shutdown in the free-threaded build, and also reporting of leaked memory blocks via -X showrefcount.

  • gh-116622: Corrige mensagens stdout e stderr do Android sendo truncadas ou perdidas.

  • gh-122527: Corrige uma falha que ocorria quando um PyStructSequence era desalocado após o dicionário do seu tipo ser limpo pelo GC. O tp_basicsize do tipo agora considera campos não sequenciais que não estão incluídos no Py_SIZE da sequência.

  • gh-122445: Adiciona somente campos que são modificados via self.* para __static_attributes__.

  • gh-122417: In the free-threaded build, the reference counts for heap type objects are now partially stored in a distributed manner in per-thread arrays. This reduces contention on the heap type’s reference count fields when creating or destroying instances of the same type from multiple threads concurrently.

  • gh-116090: Corrige um problema em construções JIT que impediam alguns loops for de disparar corretamente eventos de monitoramento RAISE.

  • gh-122300: Preserva nós AST para f-string com especificadores de formato de elemento único. Patch por Pablo Galindo

  • gh-120906: frame.f_locals agora oferece suporte a objetos hash arbitrários como chaves.

  • gh-122239: When a list, tuple or dict with too many elements is unpacked, show the actual length in the error message.

  • gh-122245: Detection of writes to __debug__ is moved from the compiler’s codegen stage to the symtable. This means that these errors are now detected even in code that is optimized away before codegen (such as assertions with the -O command line option).

  • gh-122234: Specializations for sums with float and complex inputs in sum() now always use compensated summation. Also, for integer items in above specializations: PyLong_AsDouble() is used, instead of PyLong_AsLongAndOverflow(). Patch by Sergey B Kirpichev.

  • gh-122208: Os monitoradores de dicionário agora só entregam o evento PyDict_EVENT_ADDED quando a inserção está em um estado conhecido como bom para ser bem-sucedida.

  • gh-122160: Remove the BUILD_CONST_KEY_MAP opcode. Use BUILD_MAP instead.

  • gh-122029: Emite eventos c_call em sys.setprofile() quando um PyMethodObject apontando para um PyCFunction é chamado.

  • gh-122026: Corrige um bug que fazia com que o tokenizador não identificasse corretamente parênteses incompatíveis dentro de f-strings em algumas situações. Patch por Pablo Galindo

  • gh-99108: Python’s hashlib now unconditionally uses the vendored HACL* library for Blake2. Python no longer accepts libb2 as an optional dependency for Blake2.

    We refreshed HACL* to the latest version, and now vendor HACL*’s 128-bit and 256-bit wide vector implementations for Blake2, which are used on x86/x64 toolchains when the required CPU features are available at runtime.

    HACL*’s 128-bit wide vector implementation of Blake2 can also run on ARM NEON and Power8, but lacking evidence of a performance gain, these are not enabled (yet).

  • gh-121999: The default extraction filter for the tarfile module is now set to 'data'.

  • gh-121860: Corrige travamento ao rematerializar um dicionário gerenciado após ele ter sido excluído.

  • gh-121795: Improve performance of set membership testing, set.remove() and set.discard() when the argument is a set.

  • gh-121814: Corrigido o SegFault quando PyEval_SetTrace() é usado sem nenhum quadro Python na pilha.

  • gh-121295: Corrigido o console PyREPL entrando em um estado bloqueado após interromper uma colagem longa

  • gh-121794: Corrigido o bug no Python de threads livres onde um objeto ressuscitado poderia levar a uma falha de asserção de contagem de referência negativa.

  • gh-121657: Melhorada a mensagem de SyntaxError se o usuário tentar usar yield from fora de uma função.

  • gh-121609: Corrigido o ato de colar caracteres contendo unicode character joiners no novo REPL. Patch por Marta Gomez Macias

  • gh-121297: Previously, incorrect usage of await or asynchronous comprehensions in code removed by the -O option was not flagged by the Python compiler. Now, such code raises SyntaxError. Patch by Jelle Zijlstra.

  • gh-117482: Invólucros de slot inesperados não são mais criados para tipos estáticos embutidos em subinterpretadores.

  • gh-121562: Optimized performance of hex_from_char by replacing switch-case with a lookup table

  • gh-121499: Corrige um bug que afetava como o histórico multilinha estava sendo renderizado no novo REPL após interagir com o novo cache de tela. Patch por Pablo Galindo

  • gh-121497: Corrige um bug que impedia o REPL de respeitar corretamente o histórico quando um gancho de entrada era definido. Patch por Pablo Galindo

  • gh-121012: A execução do nível 2 agora garante que os iteradores de lista permaneçam esgotados, uma vez que se esgotem.

  • gh-121439: Permite que tuplas de comprimento 20 na lista de liberação sejam reutilizadas.

  • gh-121288: ValueError messages for list.index(), range.index(), deque.index(), deque.remove() and ShareableList.index() no longer contain the repr of the searched value (which can be arbitrary large) and are consistent with error messages for other index() and remove() methods.

  • gh-121368: Corrige a condição de corrida em _PyType_Lookup na construção de threads livres devido a uma cerca de memória ausente. Isso pode levar _PyType_Lookup a retornar resultados incorretos no arm64.

  • gh-121149: Added specialization for summation of complexes, this also improves accuracy of builtin sum() for such inputs. Patch by Sergey B Kirpichev.

  • gh-121130: Corrige f-strings com expressões de depuração em especificadores de formato. Patch por Pablo Galindo

  • gh-121381: Remove subprocess._USE_VFORK escape hatch code and documentation. It was added just in case, and doesn’t have any known cases that require it.

  • gh-119726: Optimize code layout for calls to C functions from the JIT on AArch64. Patch by Diego Russo.

  • gh-121115: PyLong_AsNativeBytes() não usa mais métodos __index__() por padrão. O sinalizador Py_ASNATIVEBYTES_ALLOW_INDEX foi adicionado para permitir isso.

  • gh-120838: Py_Finalize() e Py_FinalizeEx() agora sempre são executados com o interpretador principal ativo.

  • gh-113433: Subinterpretadores agora são limpos automaticamente durante a finalização do tempo de execução.

  • gh-119726: Improve the speed and memory use of C function calls from JIT code on AArch64. Patch by Diego Russo

  • gh-116017: Simplify the warmup mechanism used for “side exits” in JIT code, resulting in slightly better performance and slightly lower memory usage for most platforms.

  • gh-98442: Corrige localizações de origem muito amplas das instruções de limpeza de uma declaração with.

  • gh-120754: Reduce the number of system calls invoked when reading a whole file (ex. open('a.txt').read()). For a sample program that reads the contents of the 400+ .rst files in the cpython repository Doc folder, there is an over 10% reduction in system call count.

  • gh-119462: Make sure that invariants of type versioning are maintained: * Superclasses always have their version number assigned before subclasses * The version tag is always zero if the tag is not valid. * The version tag is always non-if the tag is valid.

  • gh-120437: Corrige problemas de otimização _CHECK_STACK_SPACE introduzidos em gh-118322.

  • gh-120722: Define corretamente a posição do bytecode em instruções de retorno dentro de lambdas. Patch por Jelle Zijlstra.

  • gh-120367: Corrige bug onde o compilador cria um salto redundante durante a substituição de pseudo-op. Só pode acontecer com um AST sintético que tenha uma tentativa na mesma linha que a instrução após o manipulador de exceção.

  • gh-120507: Remove the BEFORE_WITH and BEFORE_ASYNC_WITH instructions. Add the new LOAD_SPECIAL instruction. Generate code for with and async with statements using the new instruction.

  • gh-113993: Strings internalizadas com sys.intern() são novamente coletadas como lixo quando não são mais usadas, conforme a documentação. Strings internadas com a função C PyUnicode_InternInPlace() ainda são imortais. Os internos do mecanismo de internação de strings foram alterados. Isso pode afetar o desempenho e as identidades dos objetos str.

  • gh-120485: Add an override of allow_reuse_port on classes subclassing socketserver.TCPServer where allow_reuse_address is also overridden.

  • gh-120384: Fix an array out of bounds crash in list_ass_subscript, which could be invoked via some specifically tailored input: including concurrent modification of a list object, where one thread assigns a slice and another clears it.

  • gh-120367: Corrige falha no compilador em código com NOPs e JUMPs redundantes que aparecem depois que os manipuladores de exceção são movidos para o final do código.

  • gh-120380: Corrige implementação Python de pickle.Pickler para objetos bytes e bytearray ao usar o protocolo versão 5. Patch por Bénédikt Tran.

  • gh-120397: Improve the throughput by up to two times for the str.count(), bytes.count() and bytearray.count() methods for counting single characters.

  • gh-120221: Entrega sinais reais em Ctrl-C e Ctrl-Z no novo REPL. Patch por Pablo Galindo

  • gh-120346: Respect PYTHON_BASIC_REPL when running in interactive inspect mode (python -i). Patch by Pablo Galindo

  • gh-93691: Corrige os locais de origem das instruções geradas para o iterador de uma instrução for.

  • gh-120198: Corrige uma falha quando vários threads leem e escrevem na mesma __class__ de um objeto simultaneamente.

  • gh-120298: Fix use-after free in list_richcompare_impl which can be invoked via some specifically tailored evil input.

  • gh-119666: Corrige uma falha do compilador no caso em que duas compreensões no escopo da classe referenciam __class__.

  • gh-119726: JIT: Re-use trampolines on AArch64 when creating stencils. Patch by Diego Russo

  • gh-120225: Corrige a falha no compilador em bloco vazio no final do manipulador de exceção.

  • gh-93691: Corrige localizações de origem de instruções geradas para declarações with.

  • gh-120097: FrameLocalsProxy agora é uma subclasse de collections.abc.Mapping e pode ser correspondido como um mapeamento em instruções match

  • gh-120080: Direct call to the int.__round__() now accepts None as a valid argument.

  • gh-119933: Melhora as mensagens SyntaxError para expressões inválidas em um limite de parâmetros de tipo, uma tupla de restrição de parâmetro de tipo ou um parâmetro de tipo padrão. Patch por Bénédikt Tran.

  • gh-119724: Revertidas as melhorias para mensagens de erro para instruções elif/else que não correspondem a nenhuma instrução válida, o que torna difícil localizar os erros de sintaxe dentro desses blocos elif/else.

  • gh-119879: String search is now slightly faster for certain cases. It now utilizes last character gap (good suffix rule) for two-way periodic needles.

  • gh-119842: Honra PyOS_InputHook() no novo REPL. Patch por Pablo Galindo

  • gh-119180: classmethod() and staticmethod() now wrap the __annotations__ and __annotate__ attributes of their underlying callable lazily. See PEP 649. Patch by Jelle Zijlstra.

  • gh-119821: Corrige a execução de escopos de anotação dentro de classes quando globals estiver definido como um não-dict. Patch por Jelle Zijlstra.

  • gh-118934: Faz PyEval_GetLocals retornar referência emprestada

  • gh-119740: Remove the previously-deprecated delegation of int() to __trunc__().

  • gh-119689: Generate stack effect metadata for pseudo instructions from bytecodes.c.

  • gh-109218: complex() accepts now a string only as a positional argument. Passing a complex number as the “real” or “imag” argument is deprecated; it should only be passed as a single positional argument.

  • gh-119548: Adiciona um comando clear ao REPL. Patch por Pablo Galindo

  • gh-111999: Corrige a assinatura de str.format_map().

  • gh-119560: Uma asserção inválida no beta 1 foi removida. A asserção falharia se PyState_FindModule() fosse usada na função init de um módulo de extensão antes que o módulo def tivesse sido inicializado.

  • gh-119369: Corrige um impasse (deadlock) durante a exclusão de thread em construção de threads livres, que poderia ocorrer quando a GIL foi habilitada em tempo de execução.

  • gh-119525: Corrige o impasse envolvendo o cache _PyType_Lookup() na construção de threads livres quando a GIL é habilitada dinamicamente em tempo de execução.

  • gh-119258: Eliminate type version guards in the tier two interpreter.

    Note that setting the tp_version_tag manually (which has never been supported) may result in crashes.

  • gh-119311: Corrige bug onde nomes são inesperadamente cortados nas bases de classes genéricas.

  • gh-119395: Corrige bug onde nomes aparecendo após uma classe genérica são cortados como se estivessem na classe genérica.

  • gh-119372: Correct invalid corner cases in complex division (resulted in (nan+nanj) output), e.g. 1/complex('(inf+infj)'). Patch by Sergey B Kirpichev.

  • gh-119180: Evaluation of annotations is now deferred. See PEP 649 for details.

  • gh-119180: Replace LOAD_ASSERTION_ERROR opcode with LOAD_COMMON_CONSTANT and add support for NotImplementedError.

  • gh-119213: Módulos não embutidos construídos com a clínica de argumentos estavam travando se usados ​​em um subinterpretador antes do interpretador principal. Os objetos que estavam causando o problema por vazamento entre os interpretadores descuidadamente foram corrigidos.

  • gh-119011: Corrige type.__type_params__ para retornar uma tupla vazia em vez de um descritor.

  • gh-118692: Evita criar instâncias StopIteration desnecessárias para monitoramento.

  • gh-119180: Add an __annotate__ attribute to functions, classes, and modules as part of PEP 649. Patch by Jelle Zijlstra.

  • gh-119049: Corrige a exibição da linha de origem para avisos criados pela API C se o módulo warnings ainda não tiver sido importado.

  • gh-119057: Improve ZeroDivisionError error message. Now, all error messages are harmonized: all /, //, and % operations just use “division by zero” message. And 0 ** -1 operation uses “zero to a negative power”.

  • gh-118844: Corrige falhas de construção ao configurar com --disable-gil e --enable-experimental-jit.

  • gh-118921: Adiciona o método copy() para FrameLocalsProxy que retorna um dict para variáveis ​​locais.

  • gh-117657: Corrige corridas de dados no campo que armazena um ponteiro para a thread principal do interpretador que ocorrem em construções de threads livres.

  • gh-118750: If the C version of the decimal module is available, int(str) now uses it to supply an asymptotically much faster conversion. However, this only applies if the string contains over about 2 million digits.

  • gh-118767: Using NotImplemented in a boolean context now raises TypeError. Contributed by Jelle Zijlstra.

  • gh-118561: Corrige condição de corrida em construções de threads livres onde list.extend() poderia expor memória não inicializada para leitores simultâneos.

  • gh-117139: Convert the Python evaluation stack to use internal stack references. The purpose is to support tagged pointers. In PEP 703, this will allow for its form of deferred reference counting. For both the default and free-threaded builds, this sets up the infrastructure for unboxed integers in the future.

  • gh-115801: Raise TypeError when passing a string to difflib.unified_diff() and difflib.context_diff().

  • gh-117558: Improve error messages when a string, bytes or bytearray object of length 1 is expected.

  • gh-117195: Evita falha de asserção para construções de depuração ao chamar object.__sizeof__(1)

  • gh-116022: Improve the __repr__() output of AST nodes.

  • gh-114091: Changed the error message for awaiting something that can’t be awaited from “object <type> can’t be used in an await expression” to “’<type>’ object can’t be awaited”.

  • gh-113190: Py_Finalize() now deletes all interned strings.

  • gh-84978: Add class methods float.from_number() and complex.from_number().

  • gh-95144: Improve the error message from a in b when b is not a container to mention the term “container”.

  • bpo-24766: Corrige manipulação do argumento doc para subclasses de property.

API C

Construção

  • gh-125269: Corrige a detecção de se -latomic é necessário ao fazer compilação cruzada do CPython usando o script configure.

  • gh-123990: Remove WITH_FREELISTS macro and --without-freelists build configuration

  • gh-124102: Update internal documentation under PCbuild, so it now correctly states that Windows requires VS2017 or later and Python 3.10 or later

  • gh-124043: Construir usando --with-trace-refs é (temporariamente) proibido quando a GIL está desabilitado.

  • gh-123418: Atualizada construção do Android para usar OpenSSL 3.0.15.

  • gh-123297: Propaga o valor de LDFLAGS para LDCXXSHARED em sysconfig. Patch por Pablo Galindo

  • gh-121634: Permite especificar o triplo de compilação de destino para WASI.

  • gh-122578: Usa WASI SDK 24 para testes.

  • gh-116622: Renomeia variável de construção MODULE_LDFLAGS de volta para LIBPYTHON, como é usada por sistemas de construção de pacotes (por exemplo, Meson).

  • gh-118943: Corrige um problema em que o JIT experimental poderia ser construído várias vezes pelo alvo make regen-all, levando a possíveis condições de corrida em construções fortemente paralelizadas.

  • gh-121996: Introduce ./configure –disable-safety and –enable-slower-safety options. Patch by Donghee Na.

  • gh-120522: Adicionada uma opção --with-app-store-compliance para corrigir problemas conhecidos com processos de revisão da App Store do macOS/iOS.

  • gh-120371: Suporta WASI SDK 22 ignorando explicitamente funções que são apenas stubs em wasi-libc.

  • gh-121731: Corrige erro de construção mimalloc no GNU/Hurd

  • gh-121487: Corrige aviso de descontinuação para ATOMIC_VAR_INIT em mimalloc.

  • gh-121467: Corrige um bug do Makefile que impedia a instalação de arquivos de cabeçalho mimalloc.

  • gh-121103: Em sistemas POSIX, excluindo instalações do framework macOS, o diretório lib para a construção de threads livres agora inclui um sufixo “t” para evitar conflitos com uma instalação de construção padrão co-localizada.

  • gh-120831: A versão mínima padrão do iOS foi aumentada para 13.0.

  • gh-121082: Fix build failure when the developer use --enable-pystats arguments in configuration command after #118450.

  • gh-120671: Corrige testes de configuração com falha devido a um espaço ausente ao anexar a CFLAGS.

  • gh-120602: Manipula corretamente instalações LLVM com LLVM_VERSION_SUFFIX ao construir com --enable-experimental-jit.

  • gh-120688: On WASI in debug mode, Python is now built with compiler flag -O3 instead of -Og, to support more recursive calls. Patch by Victor Stinner.

  • gh-118943: Corrige uma possível condição de corrida afetando construções paralelas configuradas com --enable-experimental-jit, em que FileNotFoundError poderia ser causado por outro processo que já estava movendo jit_stencils.h.new para jit_stencils.h.

  • gh-120326: No Windows, corrige o erro de construção quando as opções --disable-gil e --experimental-jit são combinadas.

  • gh-120291: Torna o script de shell python-config compatível com shells além do bash.

  • gh-113565: Melhora as verificações de dependência curses e curses.panel em configure.

  • gh-119729: Em sistemas POSIX, os nomes de arquivo pkg-config (.pc) agora incluem os sinalizadores ABI, que podem incluir debug ("d") e free-threaded ("t"). Por exemplo: * python-3.14.pc (padrão, construção não-debug) * python-3.14d.pc (padrão, construção debug) * python-3.14t.pc (construção de threads livres)

  • gh-119400: make_ssl_certs, the script that prepares certificate data for the test suite, now allows specifying expiration dates.

  • gh-115119: Retorna ao libmpdec empacotado se uma versão do sistema não puder ser encontrada.

  • gh-119132: Atualiza sys.version para identificar se a construção é a construção padrão ou a construção de threads livres. Patch por Donghee Na.

  • gh-118836: Corrige um AssertionError ao construir com --enable-experimental-jit e o compilador emite uma seção SHT_NOTE.

  • gh-118943: Corrige uma possível condição de corrida que afeta construções paralelas configuradas com --enable-experimental-jit, nas quais erros de construção podem ser causados ​​por um arquivo de cabeçalho gerado de forma incompleta.

Python 3.13.0 beta 1

Data de lançamento: 2024-05-08

Segurança

  • gh-116741: Atualiza libexpat empacotado para 2.6.2

  • gh-117233: Detecta suporte a BLAKE2, SHA3, Shake e SHA512 truncado na biblioteca libcrypto do OpenSSL no momento da construção. Isso permite que hashlib seja usado com bibliotecas que não suportam todos os algoritmos que o OpenSSL upstream suporta.

Núcleo e embutidos

  • gh-118414: Adiciona opcodes instrumentados à asserção YIELD_VALUE para rastrear casos.

  • gh-117953: Quando um módulo embutido ou de extensão é importado pela primeira vez, enquanto um subinterpretador está ativo, a função init do módulo agora é executada pelo interpretador principal antes que a importação continue no subinterpretador. Consequentemente, os módulos init de fase única agora falham em um subinterpretador isolado sem a função init em execução sob esse interpretador, enquanto antes ele seria executado sob o subinterpretador antes de falhar, potencialmente deixando para trás o estado global e os retornos de chamada e, de outra forma, deixando o módulo em um estado inconsistente.

  • gh-117549: Não usa a sintaxe do inicializador designado em funções inline em cabeçalhos internos. Eles causam problemas para usuários de C++ ou MSVC que ainda não estão usando o padrão C++ mais recente (C++20). Enquanto interno, pycore_backoff.h, é incluído (indiretamente, via pycore_code.h) por algum software de terceiros importante que faz isso para velocidade.

  • gh-95382: Melhora o desempenho de json.dumps() e json.dump() ao usar o argumento indent. Dependendo dos dados, a codificação usando json.dumps() com indent pode ser de 2 a 3 vezes mais rápida.

  • gh-116322: Em construções com --disable-gil, a GIL será habilitada durante o carregamento de módulos de extensão C. Se o módulo indicar que suporta execução sem a GIL, a GIL será desabilitada quando o carregamento for concluído. Caso contrário, a GIL permanecerá habilitada pelo restante da vida útil do interpretador. Esse comportamento não se aplica se a GIL tiver sido explicitamente habilitada ou desabilitada com PYTHON_GIL ou -Xgil.

  • gh-118513: Corrige UnboundLocalError incorreta quando duas compreensões na mesma função referenciam o mesmo nome e, em uma compreensão, o nome é vinculado, enquanto na outra é um global implícito.

  • gh-118518: Permite que o suporte Linux perf funcione sem ponteiros de quadro usando o suporte JIT avançado do perf. O recurso é ativado ao usar a variável de ambiente PYTHON_PERF_JIT_SUPPORT ou ao executar Python com -Xperf_jit. Patch por Pablo Galindo.

  • gh-117514: Adiciona a função sys._is_gil_enabled() que retorna se a GIL está habilitada no momento. Na construção padrão, ela sempre retorna True porque a GIL está sempre habilitada. Na construção de threads livres, ela pode retornar True ou False.

  • gh-118164: Interrompe um laço entre a implementação Python do módulo decimal e o código Python para conversão de inteiro para string. Também otimize a conversão de inteiro para string para valores no intervalo de 9_000 a 135_000 dígitos decimais.

  • gh-118473: Corrige sys.set_asyncgen_hooks() para não ser parcialmente definido ao levantar TypeError.

  • gh-118465: O compilador preenche o novo campo __firstlineno__ em uma classe com o número da linha da primeira linha da definição da classe.

  • gh-118492: Corrige um problema em que o cache de tipos pode expor um atributo acessado anteriormente quando um finalizador é executado.

  • gh-117714: atualiza async_generator.athrow().close() e async_generator.asend().close() para fechar sua seção do gerador assíncrono subjacente

  • gh-111201: O interpretador interativo agora é implementado em Python, o que permite uma série de novos recursos como cores, entrada multilinha, visualização de histórico e modo de colagem. Contribuído por Pablo Galindo, Łukasz Langa e Lysandros Nikolaou com base no código do projeto PyPy.

  • gh-74929: Implementa PEP 667: convertido FrameType.f_locals e PyFrame_GetLocals() para retornar um objeto proxy de gravação quando o quadro se refere a uma função ou compreensão.

  • gh-116767: Corrige travamento no compilador em ‘async with’ que tem muitos gerenciadores de contexto.

  • gh-118335: Altera como usar o interpretador de nível 2. Em vez de executar Python com -X uops ou definir a variável de ambiente PYTHON_UOPS=1, essa escolha agora é feita em tempo de construção configurando com --enable-experimental-jit=interpreter.

    Cuidado! Isso altera a variável de ambiente para habilitar ou desabilitar micro-ops para PYTHON_JIT. O antigo PYTHON_UOPS não é mais usado.

  • gh-118306: Atualiza a compilação JIT para usar LLVM 18

  • gh-118160: Escopos de anotação dentro de classes agora podem conter compreensões. No entanto, tais compreensões não são incorporadas em seu escopo pai em tempo de execução. Patch por Jelle Zijlstra.

  • gh-118272: Corrige bug onde generator.close não libera os locais do quadro do gerador.

  • gh-118216: Não considera importações __future__ com pontos antes do nome do módulo.

  • gh-118074: Garante que os objetos Executor no array COLD_EXITS não sejam considerados GC-able (o que acessaria bytes fora do objeto).

  • gh-107674: Usa carregamento preguiçoso do número da linha do quadro para melhorar o desempenho do rastreamento

  • gh-118082: Melhora a mensagem SyntaxError para importações sem nomes, como nos casos from x import e import. Agora, ele indica aos usuários que import espera pelo menos um nome depois dele.

  • gh-118090: Melhora a mensagem SyntaxError para colchetes de parâmetros de tipo vazios.

  • gh-117958: Adicionado um método get_jit_code() para acessar o código de máquina compilado JIT do UOp Executor quando o JIT experimental estiver habilitado. Patch por Anthony Shaw.

  • gh-117901: Adiciona uma opção para o codegen do compilador para salvar sequências de instruções aninhadas para introspecção.

  • gh-116622: Redireciona stdout e stderr para o log do sistema quando incorporado em um aplicativo Android.

  • gh-109118: o escopo de anotação dentro de escopos de classe agora pode conter lambdas.

  • gh-117894: Impede que objetos agen.aclose() sejam reutilizados após .throw().

  • gh-117881: impede acesso simultâneo a um gerador assíncrono via athrow().throw() ou asend().throw()

  • gh-117536: Corrige um RuntimeWarning ao chamar agen.aclose().throw(Exception).

  • gh-117755: Corrige alocador mimalloc para alocação de memória enorme (em torno de 8.589.934.592 GiB) no s390x. Patch por Victor Stinner.

  • gh-117750: Corrige problema em que o dict de um objeto ficava fora de sincronia com os valores internos do objeto ao ser limpo. obj.__dict__.clear() agora limpa os valores internos, mas deixa o dict anexado ao objeto.

  • gh-117431: Melhora o desempenho dos seguintes métodos bytes e bytearray adaptando-os à convenção de chamada METH_FASTCALL:

    • count()

    • find()

    • index()

    • rfind()

    • rindex()

  • gh-117709: Acelera as chamadas para str() com argumento somente posicional, usando a convenção de chamada PEP 590 vectorcall. Patch por Erlend Aasland.

  • gh-117680: Dá a _PyInstructionSequence uma interface Python e use-a em testes.

  • gh-115776: Objetos alocados estaticamente são, por definição, imortais, portanto, devem ser marcados como tal, independentemente de estarem em módulos de extensão ou não.

  • gh-117385: Remove eventos PY_MONITORING_EVENT_BRANCH e PY_MONITORING_EVENT_EXCEPTION_HANDLED não manipulados de sys.settrace().

  • gh-116322: Módulos de extensão podem indicar ao tempo de execução que podem ser executados sem a GIL. Módulos init multifásicos fazem isso chamando o fornecimento de Py_MOD_GIL_NOT_USED para o slot Py_mod_gil, enquanto módulos init monofásicos chamam PyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED) de sua função init.

  • gh-116129: Implementa PEP 696, adicionando suporte para padrões em parâmetros de tipo. Patch por Jelle Zijlstra.

  • gh-93502: Adiciona duas novas funções à API C, PyRefTracer_SetTracer() e PyRefTracer_GetTracer(), que permite rastrear a criação e destruição de objetos da mesma forma que o módulo tracemalloc faz. Patch por Pablo Galindo

  • gh-107674: Melhora significativamente o desempenho de sys.settrace()

  • gh-95754: Melhora a mensagem de erro quando um script que faz shadowing de um módulo da biblioteca padrão faz com que AttributeError seja levantada. Da mesma forma, melhorar a mensagem de erro quando um script que faz shadowing de um módulo de terceiros tenta acessar um atributo desse módulo de terceiros enquanto ainda está inicializando.

  • gh-99180: Elimina indicadores de traceback não informativos em instruções return e assignment simples. Patch por Pablo Galindo.

  • gh-105879: Permite que os argumentos globals e locals para exec() e eval() sejam passados ​​como nomeados.

Biblioteca

  • gh-118418: Uma DeprecationWarning agora é emitida se você não passar um valor para o novo parâmetro type_params de typing._eval_type() ou typing.ForwardRef._evaluate(). (Usar qualquer uma dessas funções privadas e não documentadas é desencorajado para começar, mas deixar de passar um valor para o parâmetro type_params pode levar a um comportamento incorreto no Python 3.12 ou mais recente.)

  • gh-118660: Adiciona um segundo parâmetro de tipo opcional para typing.ContextManager e typing.AsyncContextManager, representando os tipos de retorno de __exit__() e __aexit__() respectivamente. Este parâmetro tem como padrão bool | None.

  • gh-118650: O módulo enum permite que o método chamado _repr_* seja definido em tipos Enum.

  • gh-118648: Adiciona padrões de parâmetros de tipo para typing.Generator e typing.AsyncGenerator.

  • gh-101137: O tipo MIME text/x-rst agora é suportado por mimetypes.

  • gh-118164: A implementação Python do módulo decimal poderia parecer travar em casos de potência relativamente pequena (como 2**117) se a precisão do contexto fosse definida como um valor muito alto. Um método diferente para verificar resultados exatamente representáveis ​​é usado agora que não depende da computação de 10**precision (que poderia ser efetivamente muito grande para ser computada).

  • gh-111744: breakpoint() e pdb.set_trace() agora entram no depurador imediatamente após a chamada, em vez de antes da próxima linha ser executada.

  • gh-118500: Adiciona suporte pdb para zipapps

  • gh-118406: Adiciona assinatura para objetos sqlite3.Connection.

  • gh-101732: Usa uma função de tempo openssl compatível com Y2038 quando disponível.

  • gh-118404: Corrige inspect.signature() para chamáveis não comparáveis.

  • gh-118402: Corrige inspect.signature() para o resultado da chamada functools.cmp_to_key().

  • gh-116622: No Android, sysconfig.get_platform agora retorna o formato especificado por PEP 738.

  • gh-118285: Permite especificar a assinatura de instâncias personalizadas do tipo de extensão pelo atributo __text_signature__. Especifica assinaturas de instâncias operator.attrgetter, operator.itemgetter e operator.methodcaller.

  • gh-118314: Corrige um caso extremo no modo estrito binascii.a2b_base64(), onde o preenchimento excessivo não é detectado quando nenhum preenchimento é necessário.

  • gh-118271: Adiciona os métodos PhotoImage read() para ler uma imagem de um arquivo e data() para obter os dados da imagem. Adiciona os parâmetros background e grayscale ao método write() de PhotoImage.

  • gh-118225: Adiciona o método PhotoImage copy_replace() para copiar uma região de uma imagem para outra, possivelmente com zoom de pixel e/ou subamostragem. Adicione o parâmetro from_coords aos métodos copy(), zoom() e subsample() da PhotoImage. Adiciona os parâmetros zoom e subsample ao método copy() de PhotoImage.

  • gh-118221: Corrige um bug em que sqlite3.Connection.iterdump() poderia falhar se um row factory personalizado fosse usado. Patch por Erlend Aasland.

  • gh-118013: Corrige regressão introduzida em gh-103193 que significava que chamar inspect.getattr_static() em uma instância faria com que uma referência forte à classe dessa instância persistisse em um cache interno no módulo inspect. Isso causava consumo inesperado de memória se a classe fosse criada dinamicamente, a classe mantivesse referências fortes a outros objetos que ocupassem uma quantidade significativa de memória e o cache contivesse a única referência forte à classe. A correção para a regressão leva a uma lentidão em getattr_static(), mas a função ainda deve ser significativamente mais rápida do que era no Python 3.11. Patch por Alex Waygood.

  • gh-118218: Acelera itertools.pairwise() no caso comum em até 1,8x.

  • gh-117486: Melhora o comportamento das subclasses definidas pelo usuário de ast.AST. Essas classes agora não exigirão alterações no caso usual para estar em conformidade com as alterações de comportamento do módulo ast no Python 3.13. Patch por Jelle Zijlstra.

  • gh-90848: Corrigida unittest.mock.create_autospec() para configurar o mock pai com argumentos nomeados.

  • gh-118168: Corrige a substituição incorreta de argumentos quando typing.Unpack é usado com a tuple embutido. typing.Unpack agora levanta TypeError quando usado com certos tipos inválidos. Patch por Jelle Zijlstra.

  • gh-118131: Adiciona a interface de linha de comando para o módulo random. Patch por Hugo van Kemenade.

  • gh-118107: Corrige zipimport leitura de arquivos ZIP64 com entradas de arquivo muito grandes ou muito deslocadas.

  • gh-102511: Corrige os.path.normpath() para caminhos UNC no Windows. Acelera os.path.splitroot() com uma implementação nativa.

  • gh-117535: Altera o nome de arquivo desconhecido de warnings de sys para <sys> para esclarecer que não é um nome de arquivo real.

  • gh-114053: Corrige NameError errôneo ao chamar typing.get_type_hints() em uma classe que fazia uso de parâmetros de tipo PEP 695 em um módulo que tinha from __future__ import annotations no topo do arquivo. Patch por Alex Waygood.

  • gh-116931: Adiciona verificação do parâmetro fileobj para tarfile.TarFile.addfile()

  • gh-117995: Não levanta DeprecationWarning quando uma sequência de parâmetros for usada para vincular marcadores de posição indexados e sem nome. Veja também gh-100668.

  • gh-80361: Corrige TypeError em email.message.Message.get_payload() quando o charset é codificado em RFC 2231.

  • gh-86650: Corrige IndexError ao analisar alguns e-mails com Message-ID inválido (incluindo endereços únicos gerados pelo Microsoft Outlook).

  • gh-117691: Melhora as mensagens de erro emitidas pelos avisos de descontinuação de tarfile relacionados ao PEP 706. Se um argumento filter não for fornecido para extract() ou extractall, o aviso de descontinuação agora aponta para a linha no código do usuário onde a função relevante foi chamada. Patch por Alex Waygood.

  • gh-115874: Corrige um possível segfault durante a coleta de lixo de objetos _asyncio.FutureIter. Patch por Savannah Ostrowski.

  • gh-115060: Acelera pathlib.Path.glob() omitindo uma chamada inicial is_dir(). Como resultado dessa alteração, glob() não pode mais levantar OSError.

  • gh-77102: O módulo site agora analisa o arquivo .pth com UTF-8 primeiro, e codificação da localidade se UnicodeDecodeError acontecer. Ele suportava apenas codificação da localidade antes.

  • gh-76785: Nós expusemos o módulo de baixo nível _interpreters para o bem da implementação PyPI de PEP 734. Às vezes, ele estava disponível como o módulo _xxsubinterpreters e era usado anteriormente apenas para testes. Na maior parte, ele deve ser considerado um módulo interno, como _thread e _imp. Veja https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147/26.

  • gh-115060: Acelera pathlib.Path.glob() não escaneando diretórios para segmentos de padrões não curinga.

  • gh-117727: Acelera pathlib.Path.iterdir() usando os.scandir() internamente.

  • gh-117586: Acelera pathlib.Path.walk() trabalhando com strings internamente.

  • gh-117722: Altera o novo suporte a múltiplos separadores em asyncio.StreamReader.readuntil() para aceitar apenas tuplas de separadores em vez de iteráveis ​​arbitrários.

  • gh-117692: Corrige um bug quando doctest.DocTestFinder estava falhando em builtin_function_or_method encapsulado.

  • gh-117348: Desempenho de tempo de importação amplamente restaurado do configparser evitando dataclasses.

  • gh-117641: Aceleração de os.path.commonpath() no Unix.

  • gh-117663: Corrige _simple_enum para detectar apelidos quando vários argumentos estão presentes, mas apenas um é o valor do membro.

  • gh-117636: Aceleração de os.path.join().

  • gh-117618: Suporte a package.module como filename para o comando break de pdb

  • gh-102247: os códigos de status enum com constantes em http.HTTPStatus são atualizados para incluir os nomes do RFC9110. Este RFC inclui alguns status HTTP usados ​​anteriormente apenas para WEBDAV e atribui nomes mais genéricos a eles.

    As constantes antigas são preservadas para retrocompatibilidade.

  • gh-117607: Aceleração de os.path.relpath().

  • gh-117586: Aceleração de pathlib.Path.glob() trabalhando com strings internamente.

  • gh-117225: Adiciona cor à saída do doctest. Patch por Hugo van Kemenade.

  • gh-117566: ipaddress.IPv6Address.is_loopback() agora retornará True para endereços de loopback mapeados em IPv4, ou seja, endereços no espaço de endereço ::ffff:127.0.0.0/104.

  • gh-117546: Corrige o problema em que os.path.realpath() parou de resolver links simbólicos após encontrar um loop de links simbólicos no POSIX.

  • gh-116720: Comportamento aprimorado de asyncio.TaskGroup quando um cancelamento externo colide com um cancelamento interno. Por exemplo, quando dois grupos de tarefas são aninhados e ambos experimentam uma exceção em uma tarefa filha simultaneamente, era possível que o grupo de tarefas externo se comportasse mal, porque seu cancelamento interno foi engolido pelo grupo de tarefas interno.

    No caso em que um grupo de tarefas é cancelado externamente e também deve levantar uma ExceptionGroup, ele agora chamará o método cancel() da tarefa pai. Isso garante que uma asyncio.CancelledError será levantada no próximo await, para que o cancelamento não seja perdido.

    Um benefício adicional dessas mudanças é que os grupos de tarefas agora preservam a contagem de cancelamentos (asyncio.Task.cancelling()).

    Para lidar com alguns casos extremos, asyncio.Task.uncancel() agora pode redefinir o sinalizador não documentado _must_cancel quando a contagem de cancelamentos chegar a zero.

  • gh-117516: Adiciona typing.TypeIs, implementando PEP 742. Patch por Jelle Zijlstra.

  • gh-117503: Corrige suporte de nomes de usuários não-ASCII em caminhos de bytes em os.path.expanduser() no Posix.

  • gh-117394: os.path.ismount() agora é 2-3 vezes mais rápido se o usuário tiver permissões.

  • gh-117313: Trata apenas '\\n', '\\r' e '\\r\\n' como separadores de linha ao redobrar as mensagens email. Preserva os caracteres de controle '\\v', '\\f', '\\x1c', '\\x1d' e '\\x1e' e os separadores de linha Unicode '\\x85', '\\u2028' e '\\u2029' como estão.

  • gh-117142: Converte _ctypes para inicialização multifásica (PEP 489).

  • gh-66543: Adiciona a função mimetypes.guess_file_type() que funciona com o caminho do arquivo. Passar o caminho do arquivo em vez da URL em guess_type() está suavemente descontinuado.

  • gh-68583: CLI de webbrowser: substitui getopt por argparse, adiciona opções longas. Patch de Hugo van Kemenade.

  • gh-116871: Sugestões de nome para AttributeError e ImportError agora incluem apenas nomes sublinhados se o nome original estiver sublinhado.

  • gh-116023: Não mostra campos vazios (valor None ou []) em ast.dump() por padrão. Adiciona o parâmetro show_empty=False para mostrá-los opcionalmente.

  • gh-115961: Adicionados atributos name e mode para objetos compactados e arquivados do tipo arquivo nos módulos bz2, lzma, tarfile e zipfile. O valor do atributo mode de gzip.GzipFile foi alterado de inteiro (1 ou 2) para string ('rb' ou 'wb'). O valor do atributo mode do objeto arquivo ou similar legível retornado por zipfile.ZipFile.open() foi alterado de 'r' para 'rb'.

  • gh-82062: Corrige inspect.signature() para manipular corretamente os padrões de parâmetros em métodos em módulos de extensão que usam nomes definidos no espaço de nomes do módulo.

  • gh-83856: Honra atexit para todos os métodos de inicialização multiprocessing

  • gh-113081: Imprime exceção colorida assim como o traceback embutido em pdb

  • gh-112855: Acelera a serialização com pickle de objetos pathlib.PurePath. Patch por Barney Gale.

  • gh-111744: Suporte a eventos de opcode em bdb

  • gh-109617: ncurses: corrigiu uma falha que poderia ocorrer no macOS 13 ou anterior quando o Python era criado com o SDK do Apple Xcode 15.

  • gh-83151: Ativadas declarações e avaliações arbitrárias no shell pdb para acessar as variáveis ​​locais do quadro atual, o que tornou possível que códigos multiescopo, como geradores ou funções aninhadas, funcionassem.

  • gh-110209: Adicionado __class_getitem__() a types.GeneratorType e types.CoroutineType para fins de dicas de tipo. Patch por James Hilton-Balfe.

  • gh-108191: O types.SimpleNamespace agora aceita um argumento posicional opcional que especifica valores iniciais de atributos como um dict ou um iterável de pares de chave-valor.

  • gh-62090: Corrige erros de asserção causados ​​por espaços em branco em metavars ou grupos suprimidos com SUPPRESS em argparse simplificando a formatação de uso. Patch por Ali Hamdan.

  • gh-102402: Ajusta logging.LogRecord para usar time.time_ns() e corrige um pequeno bug relacionado à matemática de ponto flutuante.

  • gh-100242: Traz a implementação Python pura functools.partial.__new__ mais alinhada com a implementação C ao não apenas verificar sempre a presença do atributo 'func' no primeiro argumento de partial. Em vez disso, tanto a versão Python quanto a versão C realizam uma verificação isinstance(func, partial) no primeiro argumento de partial.

  • gh-99730: Solicitações HEAD não são mais atualizadas para solicitações GET durante redirecionamentos em urllib.

  • gh-66410: Define o módulo global wantobjects tkinter como 2 antes de criar o objeto Tk ou chamar o método wantobjects() do objeto Tk com o argumento 2 agora faz com que argumentos para retornos de chamada registrados no módulo tkinter sejam passados ​​como vários objetos Python (int, float, bytes, tuple), dependendo de sua representação interna em Tcl, em vez de sempre str. tkinter.wantobjects agora está definido como 2 por padrão.

  • bpo-40943: Corrige vários IndexError ao analisar e-mails com Message-ID, endereço, rotas, etc. truncados, por exemplo, example@.

  • bpo-39324: Adiciona mapeamento de tipo mime para .md <-> text/markdown

  • bpo-18108: shutil.chown() agora suporta argumentos nomeados dir_fd e follow_symlinks.

  • bpo-30988: Corrige análise de e-mails com cabeçalhos de endereço inválidos com um ponto inicial ou final. Patch por tsufeki.

  • bpo-32839: Adiciona o método after_info() para widgets Tkinter.

Documentação

  • gh-117928: A versão mínima do Sphinx necessária para a documentação agora é 6.2.1.

Construção

  • gh-118734: Corrige a construção do Windows quando invocada diretamente (não por meio do script build.bat) sem especificar um valor para UseTIER2.

  • gh-115119: A opção configure --with-system-libmpdec agora tem como padrão yes. A cópia empacotada de libmpdecimal será removida no Python 3.15.

  • gh-117845: Corrige a construção em versões recentes do libedit detectando assinaturas de hook readline em configure.

  • gh-116622: Um projeto de testbed foi adicionado para executar o conjunto de testes no Android.

  • gh-117645: Aumenta o tamanho da pilha WASI de 512 KiB para 8 MiB e a memória inicial de 10 MiB para 20 MiB. Patch por Victor Stinner.

  • gh-115119: configure agora usa pkg-config para detectar dependências decimal se a opção --with-system-libmpdec for fornecida.

Windows

  • gh-115119: Atualiza o instalador do Windows para usar libmpdecimal 4.0.0.

  • gh-118486: os.mkdir() agora aceita modo de 0o700 para restringir o novo diretório ao usuário atual.

  • gh-118347: Corrige atualizações do iniciador que não sendo instaladas.

  • gh-118293: O módulo multiprocessing agora passa o sinalizador STARTF_FORCEOFFFEEDBACK ao gerar processos para informar ao Windows para não alterar o cursor do mouse.

  • gh-115009: Atualiza o instalador do Windows para usar o SQLite 3.45.3.

  • gh-90329: Suprime o aviso exibido na criação do ambiente virtual quando os caminhos solicitados e criados diferem apenas por um nome curto (estilo 8.3). Os avisos continuarão a ser exibidos se uma junção ou link simbólico no caminho fez com que o venv fosse criado em um local diferente do solicitado originalmente.

  • gh-117786: Corrige ambientes virtuais que não iniciam corretamente quando criados a partir de uma instalação da Store.

macOS

  • gh-115119: Atualiza o instalador do macOS para usar libmpdecimal 4.0.0.

  • gh-114099: O uso do símbolo do pré-processador iOS foi tornado compatível com SDKs macOS mais antigos.

  • gh-115009: Atualiza o instalador macOS para usar o SQLite 3.45.3.

  • gh-91629: Use as configurações ~/.config/fish/conf.d e fish_add_path para definir PATH ao instalar para o shell Fish.

IDLE

  • bpo-34774: Use o tema de cores selecionado pelo usuário para Help => IDLE Doc.

API C

Python 3.13.0 alpha 6

Data de lançamento: 2024-04-09

Núcleo e embutidos

  • gh-117494: Refatorada a estrutura de dados da sequência de instruções de compile.c para instruction_sequence.c.

  • gh-116968: Introduzido um tipo de contador de backoff unificado de 16 bits (_Py_BackoffCounter), compartilhado entre o especializador adaptativo de Nível 1 e o otimizador de Nível 2. A API usada para contadores de especialização adaptável é alterada, mas o comportamento é (supostamente) idêntico.

    O comportamento dos contadores de Nível 2 é alterado:

    • Não há mais limites dinâmicos (nunca os variamos).

    • Todos os contadores agora usam o mesmo backoff exponencial.

    • O contador para JUMP_BACKWARD começa a contagem regressiva a partir de 16.

    • A temperature nas saídas laterais começa a contagem regressiva a partir de 64.

  • gh-117431: Melhora o desempenho dos seguintes métodos bytes e bytearray adaptando-os à convenção de chamada METH_FASTCALL:

    • endswith()

    • startswith()

  • gh-117431: Melhora o desempenho dos seguintes métodos str adaptando-os à convenção de chamada METH_FASTCALL:

  • gh-117411: Move PyFutureFeatures para um cabeçalho interno e torna-o privado.

  • gh-109120: Adicionado identificador de expressões de estrela incorretas, por exemplo f(3, *). Patch por Grigoryev Semyon

  • gh-117266: Corrige travamentos para certas subclasses criadas pelo usuário de ast.AST. Essas classes agora devem definir o atributo _field_types.

  • gh-99108: Atualizado o código C do projeto HACL* do hashlib embutido a partir do upstream que usamos para muitas implementações quando elas não estão presentes via OpenSSL em uma determinada construção. Isso também evita o raro potencial de um problema de vinculação de regra de definição de nome de símbolo C.

  • gh-117108: Altera o antigo bit de espaço de objetos na geração jovem de 0 para gcstate->visited, para que quaisquer objetos criados durante o GC tenham o antigo bit definido corretamente se forem movidos para a geração antiga.

  • gh-117108: O GC do ciclo agora escolhe o tamanho dos incrementos com base no tamanho total do heap, em vez da taxa de criação de objetos. Isso garante que ele possa acompanhar o crescimento dos heaps.

  • gh-116735: Para INSTRUMENTED_CALL_FUNCTION_EX, define arg0 como sys.monitoring.MISSING em vez de None para o evento CALL.

  • gh-113964: Iniciar novas threads e a criação de processos por meio de os.fork() agora são impedidos somente quando todas as threads não daemon são encerradas.

  • gh-116626: Garante que INSTRUMENTED_CALL_FUNCTION_EX sempre emita CALL

  • gh-116554: list.sort() agora explora mais casos de ordenação parcial, particularmente aqueles com longas execuções descendentes com subexecuções de valores iguais. Elas são reconhecidas como execuções únicas agora (anteriormente, cada bloco de valores repetidos fazia com que uma nova execução fosse criada).

  • gh-114099: Adicionado um carregador que pode descobrir módulos de extensão em uma pasta Frameworks no estilo iOS.

  • gh-115775: O compilador preenche o novo campo __static_attributes__ em uma classe com os nomes dos atributos desta classe que são acessados ​​por meio de self.X de qualquer função em seu corpo.

  • gh-115776: A array de valores, a estrutura PyDictValues agora é incorporada ao objeto durante a alocação. Isso fornece melhor desempenho no caso comum e não degrada tanto quando o __dict__ do objeto é materializado.

  • gh-108362: Implementa um coletor de lixo cíclico incremental. Ao coletar a geração antiga em incrementos, não há necessidade de uma varredura completa do heap. Isso pode reduzir enormemente o tempo máximo de pausa para programas com grandes heaps.

    Reduz o número de gerações de três para duas. A geração antiga é dividida em dois espaços, “visitado” e “pendente”.

    A coleta acontece em duas etapas:: * Um incremento é formado a partir da geração jovem e uma pequena parte do espaço pendente. * Este incremento é escaneado e os sobreviventes são movidos para o final do espaço visitado.

    Quando o espaço de coleta fica vazio, os dois espaços são trocados.

  • gh-109870: Dataclasses agora chamam exec() uma vez por dataclass, em vez de uma vez por método adicionado. Isso pode acelerar a criação de dataclass em até 20%.

  • gh-97901: O tipo MIME text/rtf agora é suportado por mimetypes.

  • bpo-24612: Melhora o SyntaxError que acontece quando ‘not’ aparece após um operador. Patch por Pablo Galindo

Biblioteca

  • gh-117648: Melhora o desempenho de os.path.join() e os.path.expanduser().

  • gh-117584: Levanta TypeError para objetos que não são caminhos em posixpath.relpath().

  • gh-117467: Preserva a propriedade de mailbox ao reescrever em mailbox.mbox.flush(). Patch por Tony Mountifield.

  • gh-114848: Levanta FileNotFoundError quando getcwd() retornar ‘(unreachable)’, o que pode acontecer no Linux >= 2.6.36 com glibc < 2.27.

  • gh-117459: asyncio.asyncio.run_coroutine_threadsafe() agora mantém o traceback de CancelledError, TimeoutError e InvalidStateError que são levantados na corrotina.

  • gh-117381: Corrige mensagem de erro para ntpath.commonpath().

  • gh-117337: Descontinua funções não documentadas glob.glob0() e glob.glob1(). Use glob.glob() e passe um diretório para seu argumento root_dir.

  • gh-117349: Otimiza várias funções em os.path.

  • gh-117348: Refatorado configparser.RawConfigParser._read() para reduzir a complexidade ciclométrica e melhorar a compreensão.

  • gh-117335: Levanta TypeError para não sequências para ntpath.commonpath().

  • gh-66449: configparser.ConfigParser agora aceita seções sem nome antes das nomeadas, se configurado para isso.

  • gh-88014: Na documentação de gzip.GzipFile no módulo gzip, explique o tipo de dados do argumento construtor opcional mtime e recomende mtime = 0 para gerar fluxos determinísticos.

  • gh-117310: Corrigida uma falha improvável inicial e extra Py_DECREF em ssl ao criar um novo _ssl._SSLContext se o CPython foi construído de forma implausível, de modo que a lista de cifras padrão está vazia ou a biblioteca SSL à qual foi vinculado relata uma falha de sua API C SSL_CTX_set_cipher_list().

  • gh-117294: Um DocTestCase agora relata como ignorado se todos os exemplos no doctest forem ignorados.

  • gh-98966: Em subprocess, levanta uma mensagem mais informativa quando stdout=STDOUT.

  • gh-117225: doctest: imprime apenas “e X failed” quando não for zero, não pluraliza “1 items”. Patch de Hugo van Kemenade.

  • gh-117205: Acelera compileall.compile_dir() em 20% ao usar multiprocessamento aumentando chunksize.

  • gh-117178: Corrige a regressão no carregamento lento de módulos autorreferenciais, introduzida em gh-114781.

  • gh-112383: Corrige o tratamento do módulo dis de instruções ENTER_EXECUTOR.

  • gh-117182: O carregamento preguiçoso de módulos que modificam seu próprio __class__ não reverte mais o __class__ para types.ModuleType.

  • gh-117084: Corrige a extração de zipfile para entradas de diretório com o nome contendo barras invertidas no Windows.

  • gh-117114: Torna os.path.isdevdrive() disponível em todas as plataformas. Para aqueles que não oferecem Dev Drives, ele sempre retornará False.

  • gh-117110: Corrige um bug que impede que subclasses de typing.Any sejam instanciadas com argumentos. Patch por Chris Fu.

  • gh-109653: Adiadas as importações de seleção em importlib.metadata e importlib.resources para uma aceleração de 14%.

  • gh-70647: Inicia o período de descontinuação para o comportamento atual de datetime.datetime.strptime() e time.strptime() que sempre falha ao analisar uma sequência de datas com um ValueError envolvendo um dia do mês, como strptime("02-29", "%m-%d") quando um ano não é especificado e a data acontece de ser 29 de fevereiro. Isso deve ajudar a evitar que os usuários encontrem novos bugs a cada quatro anos devido a uma suposição natural equivocada sobre a API ao analisar valores de data parciais.

  • gh-116987: Corrigida inspect.findsource() para objetos de código de classe.

  • gh-114099: Modifica a biblioteca padrão para permitir diferenças de plataforma iOS.

  • gh-90872: No Windows, subprocess.Popen.wait() não chama mais WaitForSingleObject() com um tempo limite negativo: passe 0 ms se o tempo limite for negativo. Patch por Victor Stinner.

  • gh-116957: configparser: Não deixa os valores ConfigParser em um estado inválido (armazenados como uma lista em vez de uma str) após uma leitura anterior gerar DuplicateSectionError ou DuplicateOptionError.

  • gh-115538: _io.WindowsConsoleIO agora emite um aviso se um valor booleano for passado como um argumento filedescriptor.

  • gh-90095: Ignora linhas vazias e comentários em .pdbrc

  • gh-106531: Atualizado zipfile._path de zipp 3.18, fornecendo melhor compatibilidade para PyPy, melhor desempenho glob para arquivos zip profundamente aninhados e fornecendo acesso interno a CompleteDirs.inject para uso em outros testes (como importlib.resources).

  • gh-63207: No Windows, time.time() agora usa o relógio GetSystemTimePreciseAsFileTime() para ter uma resolução melhor que 1 us, em vez do relógio GetSystemTimeAsFileTime() que tem uma resolução de 15,6 ms. Patch por Victor Stinner.

  • gh-116764: Restaura o suporte de None e outros valores falsos nas funções urllib.parse parse_qs() e parse_qsl(). Além disso, agora eles levantam um TypeError para inteiros diferentes de zero e sequências não vazias.

  • gh-116811: Em PathFinder.invalidate_caches, delega para MetadataPathFinder.invalidate_caches.

  • gh-116647: Corrige filho recursivo em dataclasses

  • gh-113171: Corrige vários falsos positivos e falsos negativos em

    Também nos atributos correspondentes ipaddress.IPv4Network e ipaddress.IPv6Network.

  • gh-63283: Em encodings.idna, qualquer capitalização do prefixo ACE (xn--) agora é aceitável. Patch por Pepijn de Vos e Zackery Spytz.

  • gh-71042: Adiciona platform.android_ver(), que fornece informações sobre o dispositivo e o sistema operacional no Android.

  • gh-73468: Adicionada a nova função math.fma(), envolvendo a operação fma() do C99: função de multiplicação-adição fundida. Patch por Mark Dickinson e Victor Stinner.

  • gh-116608: As funções importlib.resources is_resource(), open_binary(), open_text(), path(), read_binary() e read_text() não estão mais descontinuadas e oferecem suporte a subdiretórios por meio de vários argumentos posicionais. A função contents() também permite subdiretórios, mas continua descontinuada.

  • gh-116484: Altera os nomes de widgets tkinter.Checkbutton gerados automaticamente para evitar colisões com nomes de widgets tkinter.ttk.Checkbutton gerados automaticamente dentro do mesmo widget pai.

  • gh-114314: Em ctypes, os dados de ctype agora são armazenados em objetos type diretamente em vez de em uma subclasse dict. Esta é uma alteração interna que não deve afetar o uso.

  • gh-116401: Corrige o bloqueio de os.fwalk() e shutil.rmtree() ao abrir o encadeamento nomeado.

  • gh-71052: Implementa ctypes.util.find_library() no Android.

  • gh-90535: Corrige suporte de valores de interval > 1 em logging.TimedRotatingFileHandler para when='MIDNIGHT' e when='Wx'.

  • gh-113308: Remove algumas partes internas protegidas de uuid: _has_uuid_generate_time_safe, _netbios_getnode, _ipconfig_getnode e _load_system_functions. Elas não eram usadas.

  • gh-115627: Corrige o tratamento de erro do módulo ssl de término de conexão por peer. Agora ele lança um OSError com o código de erro apropriado em vez de um EOFError.

  • gh-114847: Acelera os.path.realpath() em plataformas não Windows.

  • gh-114271: Corrige uma corrida em threading.Thread.join().

    threading._MainThread agora sempre representa o thread principal do interpretador principal.

    PyThreadState.on_delete e PyThreadState.on_delete_data foram removidos.

  • gh-113538: Adiciona os métodos asyncio.Server.close_clients() e asyncio.Server.abort_clients() que permitem fechar um servidor asyncio de forma mais forçada.

  • gh-85287: Altera os codecs Unicode para retornar UnicodeEncodeError ou UnicodeDecodeError, em vez de apenas UnicodeError.

  • gh-113548: pdb agora permite argumentos CLI para pdb -m.

  • gh-112948: Torna a conclusão de pdb semelhante ao Python REPL

  • gh-105866: Corrigido o bug _get_slots que causava erro ao definir dataclasses com slots e um weakref_slot.

  • gh-96471: Adiciona a terminação asyncio.Queue com o método shutdown().

  • gh-89739: O módulo zipimport agora pode ler arquivos ZIP64.

  • bpo-33533: asyncio.as_completed() agora retorna um objeto que é um iterador assíncrono e um iterador simples. O novo padrão de iteração assíncrona permite uma correlação mais fácil entre tarefas anteriores e seus resultados concluídos. Esta é uma correspondência mais próxima ao padrão de iteração de concurrent.futures.as_completed(). Patch por Justin Arthur.

  • bpo-27578: inspect.getsource() (e funções relacionadas) funcionam com arquivos de módulo vazios, retornando '\\n' (ou equivalente razoável) em vez de gerar OSError. Patch por Kernc.

  • bpo-37141: Aceita um iterável de separadores em asyncio.StreamReader.readuntil(), parando quando um deles for encontrado.

  • gh-66543: Faz mimetypes.guess_type() analisar corretamente URLs com apenas um nome de host, URLs contendo fragmento ou consulta e nomes de arquivo com apenas um sharepoint UNC no Windows. Baseado no patch por Dong-hee Na.

  • bpo-15010: unittest.TestLoader.discover() agora salva o valor original de unittest.TestLoader._top_level_dir e o restaura no final da chamada.

Documentação

  • gh-115977: Remove referências de compatibilidade para Emscripten.

  • gh-114099: Adiciona um guia de plataforma iOS e sinaliza módulos não disponíveis no iOS.

  • gh-91565: Alterações nos arquivos de documentação e saídas de configuração para refletir o novo local para relatar bugs - ou seja, GitHub em vez de bugs.python.org.

Testes

  • gh-83434: Desativa a saída XML do JUnit (opção de linha de comando --junit-xml=FILE) no regrtest ao procurar vazamentos de referência (opção -R). Patch por Victor Stinner.

  • gh-117187: Corrige testes XML para vanilla Expat <2.6.0.

  • gh-116333: Testes de coisas relacionadas a TLS (códigos de erro, etc.) foram atualizados para serem mais tolerantes sobre strings e comportamentos de mensagens de erro específicos, como visto nos forks BoringSSL e AWS-LC do OpenSSL.

  • gh-117089: Testes consolidados para importlib.metadata em seu próprio pacote metadata.

  • gh-115979: Atualiza test_importlib para que passe no WASI SDK 21.

  • gh-112536: Adiciona –tsan ao test.regrtest para executar testes TSAN em tempos de execução razoáveis. Patch por Donghee Na.

  • gh-116307: Adicionado o auxiliar de importação isolated_modules, pois CleanImport não remove módulos importados durante o contexto. Use-o em testes importlib.resources para evitar deixar mod por aí para impedir testes importlib.metadata.

Construção

  • gh-114736: Faz construções WASI usar WASI SDK 21.

  • gh-115983: Pula a construção de módulos de teste que devem ser construídos como compartilhados sob WASI.

  • gh-71052: Adiciona script de construção e instruções do Android.

Windows

  • gh-117267: Garante que DirEntry.stat().st_ctime se comporte consistentemente com os.stat() durante o período de descontinuação de st_ctime contendo o mesmo valor que st_birthtime. Após o período de descontinuação, st_ctime será o tempo de alteração de metadados (ou indisponível por meio de DirEntry), e apenas st_birthtime conterá o tempo de criação.

  • gh-116195: Melhora o desempenho de os.getppid() usando uma API de sistema alternativa quando disponível. Contribuição de vxiiduu.

  • gh-88494: No Windows, time.monotonic() agora usa o relógio QueryPerformanceCounter() para ter uma resolução melhor que 1 us, em vez do relógio GetTickCount64() que tem uma resolução de 15,6 ms. Patch por Victor Stinner.

  • gh-116773: Corrige instâncias de <_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crash.

  • gh-91227: Corrige a implementação asyncio ProactorEventLoop para que o envio de um datagrama para um endereço que não esteja escutando não impeça o recebimento de mais datagramas.

  • gh-115119: Trocado do código libmpdecimal fornecido para um pacote externo hospedado separadamente no repositório cpython-source-deps ao construir o módulo _decimal.

API C

  • gh-117642: Corrige a implementação de PEP 737 para %#T e %#N.

  • gh-87193: _PyBytes_Resize() agora pode ser chamada para objetos bytes com contagem de referências > 1, incluindo objetos bytes de 1 byte. Ele cria um novo objeto bytes e destrói o antigo se ele tiver contagem de referências > 1.

  • gh-117021: Corrige estouro de inteiro em PyLong_AsPid() em plataformas de 64 bits que não sejam Windows.

  • gh-115756: PyCode_GetFirstFree() é uma API utilizável agora e foi renomeada para PyUnstable_Code_GetFirstFree(). (Contribuição de Bogdan Romanyuk em gh-115781)

  • gh-116869: Adiciona o teste test_cext: cria uma extensão C para verificar se a API Python C emite avisos do compilador C. Patch por Victor Stinner.

  • gh-116869: Torna a API C compatível com o sinalizador do compilador -Werror=declaration-after-statement novamente. Patch por Victor Stinner.

  • gh-116936: Adiciona PyType_GetModuleByDef() à API C limitada. Patch por Victor Stinner.

  • gh-116809: Restaura a função privada _PyErr_ChainExceptions1() removida. Patch por Victor Stinner.

  • gh-115754: Na versão limitada 3.13 da API C, obter Singletons Py_None, Py_False, Py_True, Py_Ellipsis e Py_NotImplemented agora é implementado como chamadas de função no nível ABI estável para ocultar detalhes de implementação. Obter essas constantes ainda retorna referências emprestadas. Patch por Victor Stinner.

  • gh-115754: Adiciona as funções Py_GetConstant() e Py_GetConstantBorrowed() para obter constantes. Por exemplo, Py_GetConstant(Py_CONSTANT_ZERO) retorna uma referência forte para a constante zero. Patch por Victor Stinner.

  • gh-111696: Adiciona suporte para os formatos %T, %T#, %N e %N# para PyUnicode_FromFormat(): formata o nome totalmente qualificado de um tipo de objeto e de um tipo: chama PyType_GetModuleName(). Veja PEP 737 para mais informações. Patch por Victor Stinner.

  • gh-111696: Adiciona a função PyType_GetModuleName() para obter o nome do módulo do tipo. Equivalente a obter o atributo type.__module__. Patch por Eric Snow e Victor Stinner.

  • gh-111696: Adiciona a função PyType_GetFullyQualifiedName() para obter o nome totalmente qualificado do tipo. Equivalente a f"{type.__module__}.{type.__qualname__}", ou type.__qualname__ se type.__module__ não for uma string ou for igual a "builtins". Patch por Victor Stinner.

  • gh-85283: As extensões C fcntl, grp, pwd, termios, _statistics e _testconsole agora são construídas com a API C limitada. Patch por Victor Stinner.

  • gh-111140: Adiciona sinalizadores adicionais a PyLong_AsNativeBytes() e PyLong_FromNativeBytes() para permitir que o chamador determine como lidar com casos extremos em torno de valores que preenchem o buffer inteiro.

  • gh-113024: Adiciona a função PyObject_GenericHash().

Python 3.13.0 alpha 5

Data de lançamento: 2024-03-12

Segurança

Núcleo e embutidos

  • gh-116604: Respeita o status do coletor de lixo quando chamadas indiretas são feitas via PyErr_CheckSignals() e o disjuntor de avaliação. Patch por Pablo Galindo

  • gh-112087: list agora é compatível com a implementação da PEP 703.

  • gh-116381: Adiciona especialização para CONTAINS_OP.

  • gh-116296: Corrige possível vazamento de referência no tratamento de erros internos de object.__reduce__().

  • gh-115823: Calcula corretamente intervalos de erro no analisador ao levantar exceções SyntaxError causadas por sequências de bytes inválidas. Patch por Pablo Galindo

  • gh-115778: Adiciona anotação tierN para definição de instrução no interpretador DSL.

  • gh-115733: Corrige travamento ao chamar next() em iteradores de lista esgotados.

  • gh-115700: O estágio de construção de casos de regeneração agora funciona no Windows.

  • gh-115347: Corrige um bug em que docstring era substituído por um NOP redundante quando Python é executado com -OO.

  • gh-115323: Torna a mensagem de erro mais significativa para quando bytearray.extend() é chamado com um objeto str.

  • gh-112175: Cada PyThreadState agora tem seu próprio eval_breaker, permitindo que threads específicos sejam interrompidos.

  • gh-115154: Corrige um bug que estava fazendo com que a função tokenize.untokenize() manipulasse literais nomeados unicode incorretamente. Patch por Pablo Galindo

  • gh-115154: Corrige um bug que estava fazendo com que a função tokenize.untokenize() manipulasse literais nomeados unicode incorretamente. Patch por Pablo Galindo

  • gh-104090: O rastreador de recursos de multiprocessamento agora sai com código de status diferente de zero se um vazamento de recurso for detectado. Ele ainda sai com código de status 0 caso contrário.

  • gh-105858: Melhora os construtores para nós ast. Os argumentos de tipos de lista agora assumem como padrão uma lista vazia se omitidos, e os campos opcionais assumem como padrão None. Os nós AST agora têm um atributo __annotations__ com os tipos esperados de seus atributos. Passar argumentos extras não reconhecidos para nós AST está descontinuado e se tornará um erro no Python 3.15. Omitir um argumento obrigatório para um nó AST está descontinuado e se tornará um erro no Python 3.15. Patch por Jelle Zijlstra.

  • gh-101860: Expor atributo __name__ na propriedade.

  • gh-96497: Corrige resolução incorreta de variáveis ​​de classe mutiladas usadas em expressões de atribuição em compreensões.

Biblioteca

  • gh-116600: Corrige repr() para membros globais Flag.

  • gh-116349: platform.java_ver() está descontinuado e será removido na versão 3.15. Ele não foi testado em grande parte, tinha uma API confusa e era útil apenas para suporte a Jython.

  • gh-116143: Corrige uma corrida no pydoc _start_server, eliminando uma janela na qual _start_server pode retornar um thread que está “servindo”, mas sem um conjunto docserver.

  • gh-116127: typing: implementa PEP 705 que adiciona suporte a typing.ReadOnly para typing.TypedDict.

  • gh-116325: typing: levanta SyntaxError em vez de AttributeError em referências de encaminhamento como strings vazias.

  • gh-115957: Quando asyncio.TaskGroup.create_task é chamado em um asyncio.TaskGroup inativo, a corrotina fornecida será fechada (o que impede um RuntimeWarning).

  • gh-115978: Desabilita preadv(), readv(), pwritev() e writev() em WASI.

    No wasmtime para WASI 0.2, essas funções não passam no test_posix (https://github.com/bytecodealliance/wasmtime/issues/7830).

  • gh-88352: Corrige o cálculo do próximo tempo de rollover no manipulador logging.TimedRotatingFileHandler. computeRollover() agora sempre retorna um registro de data e hora maior que o tempo especificado e funciona corretamente durante a mudança de horário de verão. doRollover() não substitui mais o arquivo já rolado, evitando perda de dados quando executado à meia-noite ou durante tempo repetido na mudança de horário de verão.

  • gh-87115: Define __main__.__spec__ como None ao executar um script com pdb

  • gh-76511: Corrige UnicodeEncodeError em email.Message.as_string() que resulta quando uma mensagem que afirma estar no conjunto de caracteres ASCII na verdade tem caracteres não ASCII. Caracteres não ASCII agora são substituídos pelo caractere de substituição U+FFFD, como no manipulador de erros replace.

  • gh-89547: Adiciona suporte para formulários especiais de digitação aninhada como Final[ClassVar[int]].

  • gh-65824: Melhora o prompt less em pydoc.

  • gh-116040: [Enum] corrige chamadas por valor quando o segundo valor for falso; por exemplo. Cardinal(1, 0)

  • gh-115821: [Enum] Melhora a mensagem de erro ao chamar super().__new__() em __new__ personalizado.

  • gh-85644: Usa a variável de ambiente XDG_CURRENT_DESKTOP em webbrowser para verificar a área de trabalho. Prefira-a ao descontinuado GNOME_DESKTOP_SESSION_ID para detecção do GNOME.

  • gh-75988: Corrigida unittest.mock.create_autospec() para passar a chamada para o objeto encapsulado para retornar o resultado real.

  • gh-115881: Corrige problema em que ast.parse() sinalizaria incorretamente gerenciadores de contexto condicional (como with (x() if y else z()): ...) como sintaxe inválida se feature_version=(3, 8) fosse passado. Isso reverte as alterações na gramática feitas como parte de gh-94949.

  • gh-115886: Corrige truncamento silencioso do nome com um caractere nulo incorporado em multiprocessing.shared_memory.SharedMemory.

  • gh-115532: Adiciona estimativa de densidade do kernel ao módulo de estatísticas.

  • gh-115714: No WASI, o módulo time não obtém mais o tempo de processo usando times() ou CLOCK_PROCESS_CPUTIME_ID, a API do sistema não é confiável e provavelmente será removida do WASI. As funções de relógio afetadas retornam para chamar clock().

  • gh-115809: Melhora o algoritmo para calcular quais arquivos de log revertidos devem ser excluídos em logging.TimedRotatingFileHandler. Agora é confiável para manipuladores sem namer e com namer determinístico arbitrário que deixa a parte de data e hora no nome do arquivo inalterada.

  • gh-74668: As funções urllib.parse parse_qs() e parse_qsl() agora suportam argumentos de bytes contendo dados não ASCII brutos e codificados em porcentagem.

  • gh-67044: csv.writer() agora sempre coloca aspas ou escapa '\r' e '\n', independentemente do valor lineterminator.

  • gh-115712: Restaura o suporte do delimitador de espaço com skipinitialspace=True em csv. csv.writer() agora coloca aspas em campos vazios se o delimitador for um espaço e skipinitialspace for true e levanta uma exceção se aspas não forem possíveis.

  • gh-112364: Corrigido ast.unparse() para manipular format_spec com ", ' ou \\. Corrigido por Frank Hoffmann.

  • gh-112997: Para de registrar argumentos de retorno de chamada potencialmente sensíveis em asyncio a menos que o modo de depuração esteja ativo.

  • gh-114914: Corrige um problema em que um StreamWriter abandonado não seria coletado como lixo.

  • gh-111358: Corrige um bug em asyncio.BaseEventLoop.shutdown_default_executor() para garantir que o tempo limite passado para a corrotina se comporte conforme o esperado.

  • gh-115618: Corrige a diminuição inadequada da contagem de referência para o argumento None em métodos property getter(), setter() e deleter().

  • gh-112720: Refatora dis.ArgResolver para tornar possível fazer subclasse e alterar a maneira como argumentos de salto são interpretados.

  • gh-112006: Corrige inspect.unwrap() para tipos com o descritor de dados __wrapper__. Corrige inspect.Signature.from_callable() para embutido classmethod() e staticmethod().

  • gh-101293: Adiciona suporte a chamáveis com o método __call__() e tipos com métodos __new__() e __init__() definidos como métodos de classe, métodos estáticos, métodos vinculados, funções parciais e outros tipos de métodos e descritores em inspect.Signature.from_callable().

  • gh-103092: Isola _lsprof (aplica a PEP 687).

  • gh-113942: pydoc não ignora mais funções globais implementadas como métodos embutidos, como MethodDescriptorType e WrapperDescriptorType.

  • gh-115256: Adicionado DeprecationWarning ao acessar o atributo tarfile de objetos TarInfo. O atributo nunca é usado internamente e só é anexado ao TarInfos quando o tarfile é aberto no modo de gravação, não no modo de leitura. O atributo cria um ciclo de referência desnecessário que pode causar corrupção ao não fechar o identificador após gravar um tarfile.

  • gh-115197: urllib.request não resolve mais o nome do host antes de verificá-lo em relação à lista de bypass de proxy do sistema no macOS e Windows.

  • gh-113812: DatagramTransport.sendto() agora enviará datagramas de comprimento zero se for chamado com um objeto de bytes vazio. O controle de fluxo de transporte agora também considera o cabeçalho do datagrama ao calcular o tamanho do buffer.

  • gh-114763: Protege os módulos carregados com importlib.util.LazyLoader de condições de corrida quando vários threads tentam acessar atributos antes que o carregamento seja concluído.

  • gh-114709: posixpath.commonpath() agora levanta uma exceção ValueError quando passado um iterável vazio. Anteriormente, IndexError era levantada.

    posixpath.commonpath() agora levanta uma exceção TypeError quando passado None. Anteriormente, ValueError era levantada.

  • gh-114610: Corrige bug onde pathlib.PurePath.with_stem() convertia um sufixo de caminho não vazio em um radical quando recebia um argumento stem vazio. Agora levanta ValueError, assim como pathlib.PurePath.with_suffix() faz quando chamado em um caminho com um radical vazio, dado um argumento suffix não vazio.

  • gh-107361: Adiciona ssl.VERIFY_X509_PARTIAL_CHAIN e VERIFY_X509_STRICT ao contexto SSL padrão criado com ssl.create_default_context().

  • gh-112281: Permite a criação de união de tipos para typing.Annotated com metadados não-estruturáveis.

  • gh-111775: Corrige importlib.resources.simple.ResourceHandle.open() para modo texto, adicionado argumento stream ausente.

  • gh-90095: Faz .pdbrc e -c funcionarem com quaisquer comandos pdb válidos.

  • gh-107625: Levanta configparser.ParsingError dos métodos read() e read_file() de configparser.ConfigParser se uma chave sem um valor correspondente for continuada (isto é, seguida por uma linha indentada).

  • gh-107155: Corrige saída incorreta de help(x) onde x é uma função lambda, que tem um atributo de dicionário __annotations__ com uma chave "return".

  • gh-57141: Adiciona opção para comparações não rasas para filecmp.dircmp como filecmp.cmp(). Patch original por Steven Ward. Aprimorado por Tobias Rautenkranz

  • gh-69990: Profile.print_stats() foi melhorado para aceitar vários argumentos de classificação. Correção por Chiu-Hsiang Hsu e Furkan Onder.

  • gh-104061: Adiciona constante socket.SO_BINDTOIFINDEX.

  • gh-60346: Corrige ArgumentParser inconsistente com parse_known_args.

  • gh-102389: Adiciona windows_31j aos apelidos para o codec cp932

  • gh-72249: functools.partial`s de :func:`repr() foi melhorado para incluir o nome do módulo. Correção por Furkan Onder e Anilyka Barry.

  • gh-100985: Atualiza HTTPSConnection para encapsular consistentemente endereços IPv6 ao usar um proxy.

  • gh-100884: email: corrige dobramento incorreto de vírgula em listas de endereços em várias linhas em combinação com codificação unicode.

  • gh-95782: Corrige io.BufferedReader.tell(), io.BufferedReader.seek(), _pyio.BufferedReader.tell(), io.BufferedRandom.tell(), io.BufferedRandom.seek() e _pyio.BufferedRandom.tell() sendo capazes de retornar deslocamentos negativos.

  • gh-96310: Corrige um traceback em argparse quando todas as opções em um grupo mutuamente exclusivo são suprimidas.

  • gh-93205: Corrige um bug em logging.handlers.TimedRotatingFileHandler onde várias instâncias de manipulador rotativo apontando para arquivos com o mesmo nome, mas extensões diferentes, entrariam em conflito e não excluiriam os arquivos corretos.

  • bpo-31116: Adiciona codificação Z85 a base64.

  • bpo-44865: Adiciona chamada ausente para função de localização em argparse.

  • bpo-43952: Corrige multiprocessing.connection.Listener.accept() para aceitar bytes vazios como authkey. Não aceitar bytes vazios como chave faz com que ele trave indefinidamente.

  • bpo-42125: linecache: obtém nome do módulo de __spec__ se disponível. Isso permite obter código-fonte para o módulo __main__ quando um carregador personalizado é usado.

  • bpo-41122: Não passar argumentos corretamente para functools.singledispatchmethod() agora levanta um TypeError em vez de atingir um índice fora dos limites internamente.

  • bpo-40818: O asyncio REPL agora executa sys.__interactivehook__ na inicialização. A implementação padrão de sys.__interactivehook__ fornece preenchimento automático para o asyncio REPL. O patch é uma contribuição por Rémi Lapeyre.

  • bpo-33775: Adiciona o texto de ajuda ‘default’ e ‘version’ para localização no argparse.

Documentação

Testes

  • gh-71052: Adiciona exclusões de teste para dar suporte à execução do conjunto de testes no Android.

  • gh-71052: Habilita test_concurrent_futures em plataformas que oferecem suporte a threads, mas não multiprocessamento.

  • gh-115796: Faz com que ‘_testinternalcapi.assemble_code_object’ construa a tabela de exceções para o objeto de código.

  • gh-115720: Testes de vazamento (-R, --huntrleaks) agora mostram um resumo do número de vazamentos encontrados em cada iteração.

  • gh-115122: Adiciona a opção --bisect ao executor de teste regrtest: execute testes com falha com test.bisect_cmd para identificar testes com falha. Patch por Victor Stinner.

  • gh-115596: Corrige ProgramPriorityTests em test_os alterando permanentemente a prioridade do processo.

  • gh-115556: No Windows, vírgulas passadas em argumentos para Tools\buildbot\test.bat e PCbuild\\rt.bat agora são manipuladas corretamente.

  • gh-115420: Corrige tradução de alvos de manipuladores de exceção por _testinternalcapi.optimize_cfg.

  • gh-115376: Corrige falha de segmentação em _testinternalcapi.compiler_codegen em entrada incorreta.

Construção

  • gh-116313: Faz com que construções WASI funcionem no wasmtime 18 com primitivos WASI 0.2/preview2.

  • gh-71052: Altera sys.platform do Android de "linux" para "android".

  • gh-116117: Faz backport da PR #42 da libb2 para corrigir a compilação do CPython no Windows de 32 bits com clang-cl.

  • gh-71052: Corrige vários problemas de construção do Android

  • gh-114099: Um projeto de testbed foi adicionado para executar o conjunto de testes no iOS.

  • gh-115350: Corrige o módulo de construção ctypes com -DWIN32_LEAN_AND_MEAN definido

  • gh-111225: Vincula módulos de extensão ao libpython no Android.

  • gh-115737: O nome de instalação do libPython agora está definido corretamente para compilações macOS sem framework.

  • gh-114099: Os alvos do Makefile foram adicionados para oferecer suporte à compilação de uma construção de framework compatível com iOS.

Windows

  • gh-116012: Garante que o valor de GetLastError() seja preservado em todas as operações com a GIL.

  • gh-115582: Construir extensões destinadas a construções de threads livres do CPython agora exigem a compilação manual com /DPy_GIL_DISABLED ao usar uma instalação regular. Espera-se que isso mude em versões futuras.

  • gh-115554: O instalador agora tem regras mais rígidas sobre a atualização do Inicializador Python para Windows. Em geral, a maioria dos usuários tem apenas um único iniciador instalado e não verá nenhuma diferença. Quando vários iniciadores foram instalados, a opção de instalar o iniciador é desabilitada até que todos, exceto um, tenham sido removidos. O downgrade do iniciador (que nunca foi permitido) agora é mais obviamente bloqueado.

  • gh-115543: Inicializador Python para Windows agora pode detectar o Python 3.13 quando instalado da Microsoft Store e instalará o Python 3.12 por padrão quando PYLAUNCHER_ALLOW_INSTALL estiver definido.

macOS

  • gh-116145: Atualiza instalador do macOS para Tcl/Tk 8.6.14.

IDLE

  • gh-88516: No macOS, mostra um ícone de proxy na barra de título das janelas do editor para corresponder ao comportamento da plataforma.

Ferramentas/Demos

  • gh-100176: Remove Tools/{io,cc,string}bench desatualizado

  • bpo-45101: Adiciona consistência na mensagem de uso de E/S entre 2 versões do python-config.

API C

  • gh-114626: Adiciona novamente o nome _PyCFunctionFastWithKeywords, removido no Python 3.13 alpha 4 por engano. Manter o antigo nome privado _PyCFunctionFastWithKeywords (Python 3.7) como um apelido para o novo nome público PyCFunctionFastWithKeywords (Python 3.13a4). Patch por Victor Stinner.

  • gh-111418: Adiciona as macros C PyHASH_MODULUS, PyHASH_BITS, PyHASH_INF e PyHASH_IMAG. Patch por Sergey B Kirpichev.

Python 3.13.0 alpha 4

Data de lançamento: 2024-02-15

Segurança

Núcleo e embutidos

  • gh-112087: Para um iterador reverso vazio for, lista será reduzida para reversed(). Patch por Donghee Na

  • gh-114570: Adiciona exceção PythonFinalizationError. Esta exceção derivada de RuntimeError é levantada quando uma operação é bloqueada durante a finalização do Python. Patch por Victor Stinner.

  • gh-114695: Adiciona sys._clear_internal_caches(), que limpa todos os caches internos relacionados ao desempenho (e descontinua a função menos geral sys._clear_type_cache()).

  • gh-114828: Corrige travamentos de compilação em exemplos de código incomuns usando super() dentro de uma compreensão em um corpo de classe.

  • gh-112069: Adapta os métodos set e frozenset para Argument Clinic.

  • gh-115011: Setters para membros com um tipo inteiro sem sinal agora oferecem suporte ao mesmo intervalo de valores válidos para objetos que têm um método __index__() como para int.

  • gh-114887: Alterada a validação do tipo de soquete em create_datagram_endpoint() para aceitar todos os soquetes não-stream. Isso corrige uma regressão na compatibilidade com soquetes brutos.

  • gh-114944: Corrige uma corrida entre PyParkingLot_Park e _PyParkingLot_UnparkAll.

  • gh-113462: Limita o número de versões que uma única classe pode usar. Impede que algumas classes rebeldes usem todos os números de versão.

  • gh-76763: A função embutido chr() agora sempre levanta ValueError para valores fora do intervalo válido. Anteriormente, levantava OverflowError para valores muito grandes ou pequenos.

  • gh-114806: Não especializa mais chamadas para classes, se essas classes tiverem metaclasses. Corrige bug onde o método __call__ da metaclasse não estava sendo chamado.

  • gh-107944: Melhora mensagem de erro para chamadas de função com argumentos nomeados inválidos via getargs

  • gh-112529: A construção de threads livres não aloca mais espaço para a estrutura PyGC_Head em objetos que oferecem suporte a coleta de lixo cíclica. Vários outros campos e estruturas de dados são usados ​​como substituições, incluindo ob_gc_bits, ob_tid e estruturas de dados internas mimalloc.

  • gh-114456: Reduz o limite de recursão em uma construção de depuração do WASI.

  • gh-114083: O compilador aplica o dobramento de LOAD_CONST com a instrução a seguir em uma passagem separada antes de outras otimizações. Isso permite o jump threading em certas circunstâncias.

  • gh-114388: Corrige um RuntimeWarning emitido ao atribuir um valor inteiro que não é uma instância de int a um atributo que corresponde a um membro struct C de type T_UINT e T_ULONG. Corrige um RuntimeWarning duplo emitido ao atribuir um valor inteiro negativo a um atributo que corresponde a um membro struct C do tipo T_UINT.

  • gh-114265: O compilador propaga números de linha antes da otimização, levando a mais oportunidades de otimização e removendo a necessidade do hack guarantee_lineno_for_exits.

  • gh-112529: A construção de threads livres agora tem sua própria implementação de GC segura para thread que usa mimalloc para encontrar objetos rastreados por GC. Não é geracional, diferente da implementação GC existente.

  • gh-114050: Corrige falha de segmentação causada por uma string de formato incorreta na exceção TypeError quando mais de dois argumentos são passados ​​para int.

  • gh-112354: A instrução END_FOR agora exibe apenas um valor. Isso é para oferecer melhor suporte a saídas laterais em laços.

  • gh-113884: Torna queue.SimpleQueue segura para thread quando a GIL estiver desabilitada.

  • gh-114058: Implementa as bases do eliminador de redundância de Nível 2.

  • gh-113939: frame.clear(): Limpa frame.f_locals também, e não apenas os locals rápidos. Isso é relevante quando frame.f_locals foi acessado, o que também conteria referências a todos os locais.

  • gh-112050: Converte collections.deque para usar Argument Clinic.

  • gh-112050: Torna os métodos em collections.deque seguros para thread quando a GIL estiver desabilitada.

  • gh-113464: Adiciona uma opção (--enable-experimental-jit para construções baseadas em configure ou --experimental-jit para construções baseadas em PCbuild) para construir um compilador experimental just-in-time, baseado em copy-and-patch

  • gh-113055: Torna interp->obmalloc um ponteiro. Para interpretadores que compartilham estado com o interpretador principal, isso aponta para a mesma estrutura de memória estática. Para interpretadores com seu próprio estado obmalloc, ele é alocado em heap. Adiciona free_obmalloc_arenas() que liberará as arenas obmalloc e as estruturas de árvore radix para interpretadores com seu próprio estado obmalloc.

  • gh-55664: Adiciona um aviso ao criar type usando um dicionário de espaço de nomes com chaves não string. Patch por Daniel Urban e Furkan Onder.

  • gh-104530: Usa variáveis ​​de condição nativas do Win32.

Biblioteca

  • gh-115392: Corrige um bug em doctest onde números de linha incorretos seriam relatados para funções decoradas.

  • gh-114563: Corrige vários bugs de format() ao usar a implementação C de Decimal: * vazamento de memória em alguns casos raros ao usar a opção de formato z (coagir negativo 0) * saída incorreta ao aplicar a opção de formato z ao tipo F (ponto fixo com NAN maiúsculo / INF) * saída incorreta ao aplicar a opção de formato # (formato alternativo)

  • gh-102840: Corrige traceback confuso quando as operações floordiv, mod ou divmod acontecem entre instâncias de fractions.Fraction e complex.

  • gh-115165: A maioria das exceções agora são ignoradas ao tentar definir o atributo __orig_class__ em objetos retornados ao chamar apelidos genéricos typing (incluindo aliases genéricos criados usando typing.Annotated). Anteriormente, apenas AttributeError era ignorada. Patch por Dave Shawley.

  • gh-112903: Corrige erros de “issubclass() arg 1 must be a class” em certos casos de herança múltipla com aliases genéricos (regressão nas primeiras versões alfa 3.13).

  • gh-115133: Corrige testes para XMLPullParser com Expat 2.6.0.

  • gh-115059: io.BufferedRandom.read1() agora limpa o buffer de gravação subjacente.

  • gh-79382: ** no final não permite mais corresponder arquivos e caminhos não existentes em glob() recursivo.

  • gh-67837: Evita condições de corrida na criação de diretórios durante a extração simultânea em tarfile e zipfile.

  • gh-115060: Acelera pathlib.Path.glob() removendo a correspondência de regex redundante.

  • gh-97928: Reverte parcialmente o comportamento de tkinter.Text.count(). Por padrão, ele preserva o comportamento de versões mais antigas do Python, exceto que definir wantobjects como 0 não tem mais efeito. Adiciona um novo parâmetro return_ints: especificar return_ints=True faz com que Text.count() sempre retorna a contagem única como um inteiro em vez de uma tupla de 1 elemento ou None.

  • gh-114628: Quando csv.Error é levantada ao manipular TypeError, não exibir o traceback de TypeError.

  • gh-85984: Adicionado _POSIX_VDISABLE de <unistd.h> de C para termios.

  • gh-114965: Atualiza pip empacotado para 24.0

  • gh-114959: tarfile não ignora mais erros ao tentar extrair um diretório em cima de um arquivo.

  • gh-114894: Adiciona array.array.clear().

  • gh-114071: Suporte a subclasses de tupla usando auto() para valor de membro enum.

  • gh-109475: Corrige suporte ao valor de opção explícito “–” em argparse (por exemplo, --option=--).

  • gh-49766: Corrige comparação date-datetime. Agora, os métodos de comparação especiais como __eq__ e __lt__ retornam NotImplemented se um dos comparandos for date e o outro for datetime em vez de ignorar a parte do tempo e o fuso horário ou retornar forçadamente “não igual” ou levantar TypeError. Ele torna a comparação das subclasses date e datetime mais simétrica e permite alterar o comportamento padrão substituindo os métodos de comparação especiais em subclasses.

  • gh-110190: Corrige estruturas ctypes com vetor na plataforma Windows ARM64 definindo MAX_STRUCT_SIZE como 32 em stgdict. Patch por Diego Russo

  • gh-114678: Garante que o aviso de descontinuação para o especificador ‘N’ no formato Decimal não seja levantada para casos em que ‘N’ aparece em outros lugares no especificador de formato. Baseado no patch por Stefan Krah.

  • gh-70303: Retorna arquivos e diretórios de pathlib.Path.glob() se um padrão termina com “**”. Anteriormente, apenas diretórios eram retornados.

  • gh-109653: Melhora o tempo de importação de importlib.metadata e email.utils.

  • gh-113280: Corrige um vazamento de soquete aberto em casos raros quando ocorria um erro na criação de ssl.SSLSocket.

  • gh-77749: email.policy.EmailPolicy.fold() agora sempre codifica caracteres não ASCII em cabeçalhos se utf8 for falso.

  • gh-83383: A sincronização do banco de dados dbm.dumb agora é no-op se não houver modificação desde a abertura ou última sincronização. O arquivo de diretório para um banco de dados dbm.dumb vazio recém-criado agora é criado imediatamente após a abertura, em vez de adiar isso até a sincronização ou o fechamento.

  • gh-91602: Adiciona o parâmetro somente-nomeado filter a sqlite3.Connection.iterdump() para filtrar objetos de banco de dados para despejar. Patch por Mariusz Felisiak.

  • gh-112451: Proíbe criar subclasse de Python puro datetime.timezone. Isso é consistente com a implementação da extensão C. Patch por Mariusz Felisiak.

  • gh-69893: Adiciona o método close() para o iterador retornado por xml.etree.ElementTree.iterparse().

  • gh-109653: Reduz o tempo de importação do módulo threading em ~50%. Patch por Daniel Hollas.

  • gh-114492: Torna o resultado de termios.tcgetattr() reproduzível no Alpine Linux. Anteriormente, ele poderia deixar um lixo aleatório em alguns campos.

  • gh-114315: Torna threading.Lock uma classe real, não uma função de fábrica. Adiciona __new__ ao tipo _thread.lock.

  • gh-100414: Adiciona dbm.sqlite3 como um backend para dbm, e torna-o o novo backend padrão dbm. Patch por Raymond Hettinger e Erlend E. Aasland.

  • gh-113267: Reverte alterações em gh-106584 que tornavam as chamadas dos métodos TestResult startTest() e stopTest() desbalanceadas.

  • gh-75128: Ignora uma OSError em asyncio.BaseEventLoop.create_server() quando o IPv6 estiver disponível, mas a interface não puder realmente suportá-lo.

  • gh-114423: As entradas _DummyThread em threading._active agora são removidas automaticamente quando o thread relacionado morre.

  • gh-114257: Descarta o erro FileNotFound em ctypes.util.find_library() e retorna apenas None no Linux.

  • gh-114321: Expõe mais constantes específicas da plataforma no módulo fcntl no Linux, macOS, FreeBSD e NetBSD.

  • gh-114328: A tty.setcbreak() e a nova tty.cfmakecbreak() não limpam mais o sinalizador ICRLF de entrada do terminal. Isso corrige uma regressão introduzida na 3.12 que não correspondia mais a como os sistemas operacionais definem o modo cbreak em suas páginas de manual stty(1).

  • gh-114281: Remove dicas de tipo de Lib/asyncio/staggered.py. As anotações no projeto typeshed devem ser usadas em vez disso.

  • gh-101438: Evite o ciclo de referência em ElementTree.iterparse. O iterador retornado por ElementTree.iterparse pode manter um descritor de arquivo. O ciclo de referência impedia a limpeza rápida do descritor de arquivo se o iterador retornado não estivesse esgotado.

  • gh-114198: A assinatura para o método __replace__ em dataclasses agora tem o primeiro argumento chamado self, em vez de obj.

  • gh-104522: OSError levantada ao executar um subprocesso agora tem apenas o atributo filename definido como cwd se o erro foi causado por uma tentativa malsucedida de alterar o diretório atual.

  • gh-114149: Enum: manipula corretamente subclasses de tuplas em __new__ personalizado.

  • gh-83648: Suporta descontinuação de opções, argumentos posicionais e subcomandos em argparse.

  • gh-114087: Acelera dataclasses.asdict em até 1,35x.

  • gh-109534: Corrige um vazamento de referência em asyncio.selector_events.BaseSelectorEventLoop quando negociações SSL falham. Patch foi contribuição de Jamie Phan.

  • gh-79634: Aceita objetos caminho ou similar como padrões em pathlib.Path.glob() e rglob().

  • gh-112202: Garante que uma chamada asyncio.Condition.notify() não seja perdida se a Task despertada for cancelada simultaneamente ou encontrar qualquer outro erro.

  • gh-113951: Corrige o comportamento dos métodos tag_unbind() das classes tkinter.Text e tkinter.Canvas com três argumentos. Anteriormente, widget.tag_unbind(tag, sequence, funcid) destruía a vinculação atual para sequence, deixando sequence desvinculado, e excluía o comando funcid. Agora, ele remove apenas funcid da vinculação para sequence, mantendo outros comandos, e exclui o comando funcid. Ele deixa sequence desvinculado somente se funcid foi o último comando vinculado.

  • gh-97959: Corrige métodos de classe de renderização, métodos vinculados, métodos e apelidos de função em pydoc. Métodos de classe não têm mais a nota “método de instância builtins.type”. Notas correspondentes agora são adicionadas para métodos de classe e não vinculados. Apelidos de método e função agora têm referências ao módulo ou à classe onde a origem foi definida se for diferente da atual. Métodos vinculados agora são listados na seção de métodos estáticos. Métodos de classes internas agora são suportados, bem como métodos de classes Python.

  • gh-113796: Adiciona mais verificações de validação no construtor csv.Dialect. ValueError agora é levantada se o mesmo caractere for usado em funções diferentes.

  • gh-113732: Corrige suporte de QUOTE_NOTNULL e QUOTE_STRINGS em csv.reader().

  • gh-113225: Acelera pathlib.Path.walk() usando os.DirEntry.path onde possível.

  • gh-89039: Quando o método replace() é chamado em uma subclasse de datetime, date ou time, chamar corretamente o construtor derivado. Anteriormente, apenas o construtor da classe base era chamado.

    Além disso, certifica-se de passar valores de fold diferentes de zero ao criar subclasses em vários métodos. Anteriormente, fold era ignorado silenciosamente.

  • gh-112919: Aceleração de datetime.datetime.replace(), datetime.date.replace() e datetime.time.replace().

  • gh-59013: Define o ponto de interrupção na primeira linha executável da função, em vez da linha de definição da função quando o usuário faz break func usando pdb

  • gh-112343: Melhora o tratamento de variáveis ​​de conveniência pdb para evitar a substituição de conteúdo de string.

  • gh-112240: Adiciona opção à CLI do módulo de calendar para especificar o dia da semana para começar cada semana. Patch por Steven Ward.

  • gh-111741: Reconhece image/webp como um formato padrão no módulo mimetypes.

  • gh-43457: Corrige o método do widget tkinter wm_attributes(). Agora ele aceita o nome do atributo sem o prefixo menos para obter atributos de janela e permite especificar atributos e valores para ser definido como argumentos nomeados. Adiciona um novo argumento nomeado opcional return_python_dict: chamar w.wm_attributes(return_python_dict=True) retorna os atributos como um dict em vez de uma tupla. Chamar w.wm_attributes() agora retorna uma tupla em vez de uma string se wantobjects foi definido como 0.

  • gh-82626: Muitas funções agora emitem um aviso se um valor booleano for passado como um argumento de descritor de arquivo.

  • gh-111051: Adicionada verificação para modificação de arquivo durante a depuração com pdb

  • gh-110345: Mostra o patchlevel Tcl/Tk (em vez da versão) em tkinter._test().

  • gh-38807: Corrige a condição de corrida em trace. Em vez de verificar se um diretório existe e criá-lo, chame diretamente os.makedirs() com o kwarg exist_ok=True.

  • gh-75705: Define o envelope unixfrom em mailbox.mbox e mailbox.MMDF.

  • gh-106233: Corrige o stacklevel em InvalidTZPathWarning durante a importação do módulo zoneinfo.

  • gh-105102: Permita que ctypes.Union seja aninhado em ctypes.Structure quando o endianness do sistema for o oposto das classes.

  • gh-104282: Corrige a desreferência de ponteiro nulo em lzma._decode_filter_properties() devido ao tratamento impróprio de filtros BCJ com propriedades de comprimento zero. Patch por Radislav Chugunov.

  • gh-96471: Adiciona terminação queue.Queue com shutdown().

  • gh-101599: Altera a formatação de opções de sinalizador argparse para remover redundância.

  • gh-85984: Adiciona funções pseudoterminais POSIX os.posix_openpt(), os.grantpt(), os.unlockpt() e os.ptsname().

  • gh-102512: Quando os.fork() é chamado de um thread estrangeiro (também conhecido como _DummyThread), o tipo do thread em um processo filho é alterado para _MainThread. Também alterou seu nome e status como daemon, agora pode ser unido.

  • gh-88569: Adiciona os.path.isreserved(), que identifica nomes de caminho reservados como “NUL”, “AUX” e “CON”. Esta função está disponível somente no Windows.

    Descontinua pathlib.PurePath.is_reserved().

  • bpo-38364: As funções inspect isgeneratorfunction, iscoroutinefunction, isasyncgenfunction agora oferecem suporte a funções encapsuladas functools.partialmethod da mesma forma que oferecem suporte a functools.partial.

Documentação

  • gh-115233: Corrige um exemplo para LoggerAdapter no Logging Cookbook.

  • gh-114123: Move a docstring do módulo csv para o módulo csv em vez de reexportá-la do módulo interno _csv e remove __doc__ de csv.__all__.

    Move csv.__version__ para o módulo csv em vez de reexportá-lo do módulo interno _csv e remove __version__ de csv.__all__.

Testes

  • gh-114099: Adicionadas exclusões de teste necessárias para executar o conjunto de testes no iOS.

  • gh-105089: Corrige o teste test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write no AIX fazendo um AND bit a bit de 0xFFFF no modo , para que ele fique sincronizado com zinfo.external_attr

Construção

  • gh-115167: Evita incluir vcruntime140_threads.dll ao Python ao construir com o Visual Studio 2022 versão 17.8.

  • gh-113632: Promove o WASI para uma plataforma de nível 2 e remove o Emscripten do nível 3 em configure.ac.

  • gh-114099: configure e Makefile foram refatorados para acomodar construções de framework em plataformas Apple diferentes do macOS.

  • gh-114875: Adiciona getgrent() como um pré-requisito para construir o módulo grp.

Windows

  • gh-115049: Corrige a falha do iniciador py.exe quando executado como usuários sem perfis de usuário.

  • gh-115009: Atualize o instalador do Windows para usar o SQLite 3.45.1.

  • gh-109991: Atualize a construção do Windows para usar o OpenSSL 3.0.13.

  • gh-111239: Atualiza as construções do Windows para usar o zlib v1.3.1.

  • gh-100107: O iniciador py.exe não tentará mais executar o redirecionador da Microsoft Store ao iniciar um script contendo um shebang /usr/bin/env

  • gh-112984: Adiciona binários de threads livres ao instalador do Windows como um componente opcional.

  • gh-89240: Permite que multiprocessing crie pools com mais de 62 processos.

macOS

  • gh-115009: Atualiza o instalador do macOS para usar o SQLite 3.45.1.

  • gh-109991: Atualiza o instalador do macOS para usar o OpenSSL 3.0.13.

  • gh-114490: Adiciona suporte de ligação Mach-O para platform.architecture().

  • gh-87804: No macOS, o resultado de os.statvfs e os.fstatvfs agora relata corretamente o tamanho de discos muito grandes, em versões anteriores o número relatado de blocos estava errado para discos com pelo menos 2**32 blocos.

IDLE

  • gh-96905: No código de idlelib, para de redefinir os tipos embutidos ‘dict’ e ‘object’.

  • gh-103820: Revisa as ligações do IDLE para que os eventos do botão do mouse 4/5 em sistemas de janelas não X11 (por exemplo, Win32 e Aqua) não sejam confundidos com rolagem.

Ferramentas/Demos

  • gh-113516: Não define LDSHARED ao construir para WASI.

  • gh-109991: Atualiza fluxos de trabalho do GitHub CI para usar OpenSSL 3.0.13 e multissltests para usar 1.1.1w, 3.0.13, 3.1.5 e 3.2.1.

  • gh-115015: Corrige um bug no Argument Clinic que gerava código incorreto para métodos sem parâmetros que usam a convenção de chamada METH_METHOD | METH_FASTCALL | METH_KEYWORDS. Apenas a contagem de parâmetros posicionais foi verificada; qualquer argumento nomeado passado seria aceito silenciosamente.

API C

Python 3.13.0 alpha 3

Data de lançamento: 2024-01-17

Segurança

  • gh-113659: Pula arquivos .pth com nomes começando com um ponto ou atributo de arquivo oculto.

  • gh-112302: Criado um documento de lista de materiais de software e ferramentas para rastrear dependências.

Núcleo e embutidos

  • gh-107901: O compilador duplica blocos básicos que têm uma verificação de quebra de avaliação, nenhum número de linha e vários predecessores.

  • gh-107901: Um salto que deixa um manipulador de exceção de volta ao código normal não verifica mais o quebra de avaliação.

  • gh-113655: Define o limite de recursão C para 4000 no Windows e 10000 no Linux/OSX. Isso parece estar perto do ponto ideal para manter a segurança, mas não comprometer a retrocompatibilidade.

  • gh-113710: Adiciona efeitos de pilha digitados ao DSL do interpretador, junto com várias anotações de instruções.

  • gh-77046: No Windows, os descritores de arquivo que envolvem identificadores do Windows agora são criados não herdáveis ​​por padrão (PEP 446). Patch por Zackery Spytz e Victor Stinner.

  • gh-113853: Garante que todos os executores progridam. Isso garante que a execução de nível 2 sempre progrida.

  • gh-113753: Corrige um problema em que o finalizador de objetos PyAsyncGenASend pode não ser chamado se eles forem alocados de uma lista livre.

  • gh-107901: Compilador alterado para que saltos sintéticos que não estejam no final do laço não verifiquem mais o disjuntor de avaliação.

  • gh-113703: Corrige uma regressão no módulo codeop que estava fazendo com que ele identificasse incorretamente f-strings incompletas. Patch por Pablo Galindo

  • gh-89811: Verifica se há uma tp_version_tag válida antes de executar especializações de bytecode que dependem desse valor ser utilizável.

  • gh-111488: Mensagem de erro alterada em caso de nenhuma palavra reservada ‘in’ após ‘for’ em compreensões de lista

  • gh-113657: Corrige um problema que fazia com que atualizações importantes de ponteiros de instruções fossem otimizadas fora dos rastreamentos de nível dois.

  • gh-113603: Corrige um bug em que um NOP redundante não é removido, causando falha em uma asserção no compilador no modo de depuração.

  • gh-113602: Corrige um erro que fazia com que o analisador sintático tentasse sobrescrever erros existentes e travasse no processo. Patch por Pablo Galindo

  • gh-113486: Não emite mais eventos PY_UNWIND espúrios para chamadas otimizadas para classes.

  • gh-113297: Corrige falha de segmentação no compilador na instrução with com 19 gerenciadores de contexto.

  • gh-113212: Melhora as mensagens de erro de super.

  • gh-111375: Usa somente NULL na pilha de exceções para indicar que uma exceção foi tratada. Patch por Carey Metcalfe.

  • gh-112215: Aumenta o limite de recursão C por um fator de 3 para compilações não depuradas, exceto para plataformas webassembly e s390 que não foram alteradas. Isso atenua algumas regressões no 3.12 com recursão profunda misturando código interno (C) e Python.

  • gh-113054: Corrigido bug onde um NOP redundante não é removido, causando falha em uma asserção no compilador no modo de depuração.

  • gh-106905: Usa o estado por analisador sintático AST em vez do estado global para rastrear a profundidade da recursão dentro do analisador sintático AST para evitar uma possível condição de corrida devido à análise simultânea.

    O problema apareceu principalmente na versão 3.11 por usuários multithread de ast.parse(). Na versão 3.12, uma alteração em quando a coleta de lixo pode ser acionada impediu que a condição de corrida ocorresse.

  • gh-108866: Altera a API e o contrato de _PyExecutorObject para retornar o ponteiro next_instr, em vez do quadro, e para sempre executar pelo menos uma instrução.

  • gh-90350: Otimiza as funções embutidas min() e max().

  • gh-112943: Calcula corretamente os deslocamentos de coluna final para tokens multilinha no módulo tokenize. Patch por Pablo Galindo

  • gh-112125: Corrige None.__ne__(None) retornando NotImplemented em vez de False.

  • gh-74616: input() agora levanta uma ValueError quando emitido no terminal se o prompt contiver caracteres nulos incorporados em vez de truncá-lo silenciosamente.

  • gh-112716: Corrige SystemError na instrução import e nos métodos __reduce__() de tipos embutidos quando __builtins__ não é um dict.

  • gh-112730: Usa cor para destacar locais de erro em tracebacks. Patch por Pablo Galindo

  • gh-112625: Corrige um bug em que um objeto bytearray poderia ser limpo durante a iteração sobre um argumento no método bytearray.join() que poderia resultar na leitura de memória após ser liberado.

  • gh-112660: Não limpa erros inesperados durante mensagens de erro de formatação para ImportError e AttributeError para módulos.

  • gh-105967: Solução alternativa para um bug na biblioteca zlib da plataforma macOS da Apple, em que zlib.crc32() e binascii.crc32() poderiam produzir resultados incorretos em entradas de vários gigabytes. Incluindo ao usar zipfile em zips contendo dados grandes.

  • gh-95754: Fornece uma mensagem de erro melhor ao acessar atributos inválidos em módulos parcialmente inicializados. A origem do módulo que está sendo acessado agora está incluída na mensagem para ajudar com o problema comum de sombreamento de outros módulos.

  • gh-112217: Adiciona verificação para o tipo de __cause__ retornado da chamada do tipo T em raise from T.

  • gh-111058: Altera coro.cr_frame/gen.gi_frame para retornar None após a corrotina/gerador ter sido fechado. Isso corrige um bug em que getcoroutinestate() e getgeneratorstate() retornam o estado errado para uma corrotina/gerador fechado.

  • gh-112388: Corrige um erro que estava fazendo o analisador tentar sobrescrever erros do tokenizador. Patch por pablo Galindo

  • gh-112387: Corrige posições de erro para strings decodificadas com erros de análise léxica reversa. Patch por Pablo Galindo

  • gh-99606: Torna o código gerado para uma f-string vazia idêntico ao código de uma string normal vazia.

  • gh-112367: Evita comportamento indefinido ao usar os trampolins do perf não liberando as arenas de código até o desligamento. Patch por Pablo Galindo

  • gh-112320: O tradutor de nível 2 agora rastreia o nível de confiança para permanecer “no rastreamento” (ou seja, não sair de volta para o interpretador de nível 1) para instruções de ramificação com base no número de bits definidos no “contador” de ramificação. A tradução de rastreamento termina quando a confiança cai abaixo de 1/3.

  • gh-109598: PyComplex_RealAsDouble()/PyComplex_ImagAsDouble() agora tenta converter um objeto para uma instância complex usando seu método __complex__() antes de retornar ao método __float__(). Patch por Sergey B Kirpichev.

  • gh-94606: Corrige UnicodeEncodeError quando email.message.get_payload() lê uma mensagem com um caractere substituto Unicode e o conteúdo da mensagem não está bem formado para codificação de escape substituto. Patch por Sidney Markowitz.

  • bpo-21861: Usa o nome de classe real do objeto em _io.FileIO.__repr__(), _io._WindowsConsoleIO() e _io.TextIOWrapper.__repr__(), para tornar esses métodos amigáveis ​​à subclasse.

  • bpo-45369: Remove soluções alternativas do LibreSSL conforme a PEP 644.

  • bpo-34392: Adicionada sys._is_interned().

Biblioteca

  • gh-114077: Corrige possível OverflowError em socket.socket.sendfile() ao passar count maior que 2 GiB em plataforma de 32 bits.

  • gh-111803: plistlib agora oferece suporte ao carregamento de listas aninhadas mais profundamente em formato binário.

  • gh-114014: Corrige um bug em fractions.Fraction onde uma string inválida usando d na parte decimais cria um erro diferente comparado a outras letras/caracteres inválidos. Patch por Jeremiah Gabriel Pascual.

  • gh-108364: sqlite3.Connection.iterdump() agora garante que o suporte a chave estrangeira seja desabilitado antes de despejar o esquema do banco de dados, se houver qualquer violação de chave estrangeira. Patch por Erlend E. Aasland e Mariusz Felisiak.

  • gh-113971: O atributo ._compresslevel protegido anteriormente por zipfile.ZipInfo foi tornado público como .compress_level com o antigo nome _compresslevel permanecendo disponível como uma propriedade para manter a compatibilidade.

  • gh-113877: Corrige o método winfo_pathname() do tkinter no Windows de 64 bits.

  • gh-113868: Adicionados mmap.MAP_NORESERVE, mmap.MAP_NOEXTEND, mmap.MAP_HASSEMAPHORE, mmap.MAP_NOCACHE, mmap.MAP_JIT, mmap.MAP_RESILIENT_CODESIGN, mmap.MAP_RESILIENT_MEDIA, mmap.MAP_32BIT, mmap.MAP_TRANSLATED_ALLOW_EXECUTE, mmap.MAP_UNIX03 e mmap.MAP_TPRO. Todos eles são sinalizadores mmap(2) no macOS.

  • gh-113848: Os gerenciadores de contexto asyncio.TaskGroup() e asyncio.timeout() agora manipulam as subclasses CancelledError, bem como CancelledError exato.

  • gh-113661: unittest runner: Não sai com 5 se os testes foram ignorados. A intenção de sair com 5 era detectar problemas em que o conjunto de testes não foi descoberto. Se pulamos os testes, ele foi descoberto corretamente.

  • gh-96037: Insere TimeoutError no contexto da exceção que foi levantada durante a saída de um bloco asyncio.timeout() expirado.

  • gh-113781: Silencia AttributeError não levantável quando avisos são emitidos durante a finalização do Python.

  • gh-113238: Adiciona Anchor a importlib.resources (para que o código esteja em conformidade com a documentação)

  • gh-111693: asyncio.Condition.wait() agora levanta novamente a mesma instância CancelledError que pode ter causado sua interrupção. Corrigida a condição de corrida em asyncio.Semaphore.acquire() quando interrompido com uma CancelledError.

  • gh-113791: Adiciona CLOCK_MONOTONIC_RAW_APPROX e CLOCK_UPTIME_RAW_APPROX a time no macOS. Esses são relógios disponíveis no macOS 10.12 ou posterior.

  • gh-112932: Restaura a capacidade de zipfile de extractall de arquivos zip com uma entrada de diretório “/” neles, como é comumente adicionado a zips por alguns exportadores de dados de wiki ou rastreadores de bugs.

  • gh-113568: Levanta avisos de descontinuação de pathlib.PurePath e não de sua classe base privada PurePathBase.

  • gh-113594: Corrige UnicodeEncodeError em email ao redobrar linhas que contêm parte codificada de 8 bits desconhecida seguida por parte codificada de 8 bits não desconhecida.

  • gh-113538: Em asyncio.StreamReaderProtocol.connection_made(), há um retorno de chamada que registra um erro se a tarefa que envolve o “retorno de chamada de conectado” falhar. Este retorno de chamada falharia se a tarefa fosse cancelada. Evite isso verificando se a tarefa foi cancelada primeiro. Se sim, feche o transporte, mas não registre um erro.

  • gh-113626: Adiciona suporte para o argumento allow_code no módulo marshal. Passar allow_code=False previne a serialização e desserialização de objetos de código, o que é incompatível entre versões do Python.

  • gh-85567: Corrige avisos de recursos para arquivos não fechados nas interfaces de linha de comando pickle e pickletools.

  • gh-113537: Suporte a cargas de str em plistlib.loads().

  • gh-89850: Adiciona implementações padrão dos métodos pickle.Pickler.persistent_id() e pickle.Unpickler.persistent_load() na implementação C. Chamar super().persistent_id() e super().persistent_load() em subclasses da implementação C das classes pickle.Pickler e pickle.Unpickler não causa mais recursão infinita.

  • gh-113569: Indica se não houve chamadas reais na falha do unittest assert_has_calls().

  • gh-101225: Aumenta o backlog para objetos multiprocessing.connection.Listener criados por multiprocessing.manager e multiprocessing.resource_sharer para reduzir significativamente o risco de obter um erro de conexão recusada ao criar um multiprocessing.connection.Connection para eles.

  • gh-113568: Levanta eventos de auditoria de pathlib.Path e não de sua classe base privada PathBase.

  • gh-113543: Garante que webbrowser.MacOSXOSAScript envie o evento de auditoria webbrowser.open.

  • gh-113028: Quando uma segunda referência a uma string aparece na entrada para pickle, e a implementação Python está em uso, temos a garantia de que uma única cópia é decapada e um único objeto é compartilhado quando recarregado. Anteriormente, no protocolo 0, quando uma string continha certos caracteres (por exemplo, nova linha), isso resultava em objetos duplicados.

  • gh-113421: Corrige o logger de multiprocessamento para %(filename)s.

  • gh-111784: Corrige falhas de segmentação no módulo _elementtree. Corrige a primeira falha de segmentação durante a desalocação de instâncias _elementtree.XMLParser mantendo uma referência forte ao módulo pyexpat no estado do módulo para o tempo de vida da cápsula. Corrige a segunda falha de segmentação que acontece no mesmo processo de desalocação mantendo uma referência forte ao módulo _elementtree na estrutura XMLParser para o tempo de vida do módulo _elementtree.

  • gh-113407: Corrige a importação de unittest.mock quando o CPython é construído sem docstrings.

  • gh-113320: Corrige uma regressão no Python 3.12 onde classes Protocol que não foram marcadas como runtime-checkable seriam introspectadas desnecessariamente, potencialmente causando exceções se o protocolo tivesse membros problemáticos. Patch por Alex Waygood.

  • gh-53502: Adiciona uma nova opção aware_datetime em plistlib para carregar ou despejar datetime consciente.

  • gh-113358: Corrige renderização de tracebacks com exceções com um __getattr__ quebrado

  • gh-113214: Corrige um AttributeError durante término do protocolo SSL asyncio em cenários SSL sobre SSL.

  • gh-113246: Atualiza o pip empacotado para 23.3.2.

  • gh-87264: Corrigido o método list() do tarfile para mostrar o tipo de arquivo.

  • gh-112182: asyncio.futures.Future.set_exception() agora transforma StopIteration em RuntimeError em vez de travar ou apresentar outro comportamento incorreto. Contribuição de patch de Jamie Phan.

  • gh-113225: Acelera pathlib.Path.glob() usando os.DirEntry.path sempre que possível.

  • gh-113149: Melhora a mensagem de erro quando um vetor JSON ou objeto contém uma vírgula final. Patch por Carson Radtke.

  • gh-113117: O módulo subprocess agora pode usar a função os.posix_spawn() com close_fds=True em plataformas onde posix_spawn_file_actions_addclosefrom_np está disponível. Patch por Jakub Kulik.

  • gh-113199: Faz http.client.HTTPResponse.read1 e http.client.HTTPResponse.readline fecharem E/S após ler todos os dados quando o comprimento do conteúdo for conhecido. Patch por Illia Volochii.

  • gh-113191: Adiciona suporte a os.fchmod() e um descritor de arquivo em os.chmod() no Windows.

  • gh-113188: Corrige shutil.copymode() e shutil.copystat() no Windows. Anteriormente, eles funcionavam de forma diferente se dst fosse um link simbólico: eles modificavam os bits de permissão do próprio dst em vez do arquivo para o qual ele aponta se follow_symlinks fosse true ou src não fosse um link simbólico, e não modificavam os bits de permissão se follow_symlinks fosse false e src fosse um link simbólico.

  • gh-113119: os.posix_spawn() agora aceita env=None, o que faz com que o processo recém-gerado use o ambiente de processo atual. Patch por Jakub Kulik.

  • gh-113202: Adiciona uma opção strict para batched() no módulo itertools.

  • gh-61648: Detecta números de linha de propriedades em doctests.

  • gh-113175: Sincroniza com importlib_metadata 7.0, incluindo anotações de tipo aprimoradas, problema corrigido com pacotes com links simbólicos em package_distributions, adicionado EntryPoints.__repr__, introduzido o script diagnose, adicionada a propriedade Distribution.origin e removido o acesso EntryPoint descontinuado por índice numérico (comportamento de tupla).

  • gh-59616: Adiciona suporte para os.lchmod() e o argumento follow_symlinks em os.chmod() no Windows. Observe que o valor padrão de follow_symlinks em os.lchmod() é False no Windows.

  • gh-112559: signal.signal() e signal.getsignal() não chamam mais repr em manipuladores chamáveis. asyncio.run() e asyncio.Runner.run() não chamam mais repr nos resultados da tarefa. Patch por Yilei Yang.

  • gh-112962: As funções do módulo dis adicionam informações de cache à instância Instruction em vez de criar instâncias falsas Instruction para representar as entradas de cache.

  • gh-112989: Reduz a sobrecarga para conectar soquetes com SelectorEventLoop do asyncio.

  • gh-112970: Usa closefrom() no Linux onde disponível (por exemplo, glibc-2.34), em vez de apenas FreeBSD.

  • gh-110190: Corrige estruturas ctypes com array na plataforma PPC64LE definindo MAX_STRUCT_SIZE como 64 em stgdict. Patch por Diego Russo.

  • gh-112540: A função statistics.geometric_mean() agora retorna zero para conjuntos de dados contendo um zero. Anteriormente, isso levantaria uma exceção.

  • gh-87286: Adicionados LOG_FTP, LOG_NETINFO, LOG_REMOTEAUTH, LOG_INSTALL, LOG_RAS e LOG_LAUNCHD ao módulo syslog, todos eles constantes usados ​​no macOS.

  • gh-112800: Corrige asyncio SubprocessTransport.close() para não lançar PermissionError quando usado com executáveis ​​setuid.

  • gh-51944: Adiciona as seguintes constantes ao módulo termios. Esses valores estão presentes nos cabeçalhos do sistema macOS: ALTWERASE, B14400, B28800, B7200, B76800, CCAR_OFLOW, CCTS_OFLOW, CDSR_OFLOW, CDTR_IFLOW, CIGNORE, CRTS_IFLOW, EXTPROC, IUTF8, MDMBUF, NL2, NL3, NOKERNINFO, ONOEOT, OXTABS, VDSUSP, VSTATUS.

  • gh-79325: Corrige um erro de recursão infinita na limpeza de tempfile.TemporaryDirectory() no Windows.

  • gh-94692: shutil.rmtree() agora captura apenas exceções OSError. Anteriormente, uma versão resistente a ataques de symlink de shutil.rmtree() podia ignorar ou passar para o manipulador de erros uma exceção arbitrária quando argumentos inválidos eram fornecidos.

  • gh-112736: O uso de símbolos del-safe em subprocess foi refatorado para permitir o uso em ambientes de construção multiplataforma.

  • gh-112727: Acelera pathlib.Path.absolute(). Patch por Barney Gale.

  • gh-74690: Aceleração de verificações de issubclass() em relação a protocolos runtime-checkable simples em cerca de 6%. Patch por Alex Waygood.

  • gh-74690: Aceleração de verificações de isinstance() em cerca de 20% para protocolos verificáveis em tempo de execução que têm apenas um membro chamável. Aceleração de verificações de issubclass() para esses protocolos em cerca de 10%. Patch por Alex Waygood.

  • gh-112645: Remoção de erro de descontinuação ao passar onerror para shutil.rmtree().

  • gh-112640: Adiciona o parâmetro kwdefaults a types.FunctionType para definir valores padrão de argumento nomeado.

  • gh-112622: Garante que o parâmetro name seja passado para o laço de eventos em asyncio.create_task().

  • gh-112618: Corrige um bug de armazenamento em cache relacionado a typing.Annotated. Annotated[str, True] não é mais idêntico a Annotated[str, 1].

  • gh-112334: Corrige uma regressão de desempenho no subprocess do 3.12 no Linux, onde ele não usaria mais a chamada de sistema de caminho rápido vfork() quando poderia devido a um bug lógico, em vez disso, voltando para o seguro, mas mais lento fork().

    Também foi corrigido um segundo bug de segurança potencial do 3.12.0. Se um valor de extra_groups=[] fosse passado para subprocess.Popen ou APIs relacionadas, a chamada de sistema setgroups(0, NULL) subjacente para limpar a lista de grupos não seria feita no processo filho antes de exec().

    Isso foi identificado por meio de inspeção de código no processo de correção do primeiro bug.

  • gh-110190: Corrige estruturas ctypes com array na plataforma Arm definindo MAX_STRUCT_SIZE como 32 em stgdict. Patch por Diego Russo.

  • gh-81194: Corrige uma falha em socket.if_indextoname() com valor específico (UINT_MAX). Corrigir um estouro de inteiro em socket.if_indextoname() em plataformas não Windows de 64 bits.

  • gh-112578: Corrige uma RuntimeWarning espúrio ao executar o módulo zipfile.

  • gh-112516: Atualiza a cópia empacotada do pip para a versão 23.3.1.

  • gh-112510: Add readline.backend for the backend readline uses (editline or readline)

  • gh-112328: [Enum] Make EnumDict, EnumDict.member_names, EnumType._add_alias_ and EnumType._add_value_alias_ public.

  • gh-112509: Fix edge cases that could cause a key to be present in both the __required_keys__ and __optional_keys__ attributes of a typing.TypedDict. Patch by Jelle Zijlstra.

  • gh-101336: Add keep_alive keyword parameter for AbstractEventLoop.create_server() and BaseEventLoop.create_server().

  • gh-63284: Added support for TLS-PSK (pre-shared key) mode to the ssl module.

  • gh-112414: Fix regression in Python 3.12 where calling repr() on a module that had been imported using a custom loader could fail with AttributeError. Patch by Alex Waygood.

  • gh-112358: Revert change to struct.Struct initialization that broke some cases of subclassing.

  • gh-112405: Optimize pathlib.PurePath.relative_to(). Patch by Alex Waygood.

  • gh-94722: Fix bug where comparison between instances of DocTest fails if one of them has None as its lineno.

  • gh-112361: Speed up a small handful of pathlib methods by removing some temporary objects.

  • gh-112345: Improve error message when trying to call issubclass() against a typing.Protocol that has non-method members. Patch by Randolf Scholz.

  • gh-112137: Change dis output to display no-lineno as “–” instead of “None”.

  • gh-112332: Deprecate the exc_type field of traceback.TracebackException. Add exc_type_str to replace it.

  • gh-81620: Add extra tests for random.binomialvariate()

  • gh-112292: Fix a crash in readline when imported from a sub interpreter. Patch by Anthony Shaw

  • gh-77621: Slightly improve the import time of the pathlib module by deferring some imports. Patch by Barney Gale.

  • gh-112137: Change dis output to display logical labels for jump targets instead of offsets.

  • gh-112139: Add Signature.format() to format signatures to string with extra options. And use it in pydoc to render more readable signatures that have new lines between parameters.

  • gh-112105: Make readline.set_completer_delims() work with libedit

  • gh-106922: Display multiple lines with traceback when errors span multiple lines.

  • gh-111874: When creating a typing.NamedTuple class, ensure __set_name__() is called on all objects that define __set_name__ and exist in the values of the NamedTuple class’s class dictionary. Patch by Alex Waygood.

  • gh-68166: Add support of the “vsapi” element type in tkinter.ttk.Style.element_create().

  • gh-110275: Named tuple’s methods _replace() and __replace__() now raise TypeError instead of ValueError for invalid keyword arguments.

  • gh-99367: Do not mangle sys.path[0] in pdb if safe_path is set

  • gh-111615: Fix a regression caused by a fix to gh-93162 whereby you couldn’t configure a QueueHandler without specifying handlers.

  • gh-75666: Fix the behavior of tkinter widget’s unbind() method with two arguments. Previously, widget.unbind(sequence, funcid) destroyed the current binding for sequence, leaving sequence unbound, and deleted the funcid command. Now it removes only funcid from the binding for sequence, keeping other commands, and deletes the funcid command. It leaves sequence unbound only if funcid was the last bound command.

  • gh-67790: Implement basic formatting support (minimum width, alignment, fill) for fractions.Fraction.

  • gh-111049: Fix crash during garbage collection of the io.BytesIO buffer object.

  • gh-102980: Redirect the output of interact command of pdb to the same channel as the debugger. Add tests and improve docs.

  • gh-102988: email.utils.getaddresses() and email.utils.parseaddr() now return ('', '') 2-tuples in more situations where invalid email addresses are encountered instead of potentially inaccurate values. Add optional strict parameter to these two functions: use strict=False to get the old behavior, accept malformed inputs. getattr(email.utils, 'supports_strict_parsing', False) can be use to check if the strict parameter is available. Patch by Thomas Dwyer and Victor Stinner to improve the CVE 2023-27043 fix.

  • gh-52161: cmd.Cmd.do_help() now cleans docstrings with inspect.cleandoc() before writing them. Patch by Filip Łapkiewicz.

  • gh-82300: Add track parameter to multiprocessing.shared_memory.SharedMemory that allows using shared memory blocks without having to register with the POSIX resource tracker that automatically releases them upon process exit.

  • gh-110109: Add private pathlib._PurePathBase class: a base class for pathlib.PurePath that omits certain magic methods. It may be made public (along with _PathBase) in future.

  • gh-109858: Protect zipfile from “quoted-overlap” zipbomb. It now raises BadZipFile when try to read an entry that overlaps with other entry or central directory.

  • gh-109786: Fix possible reference leaks and crash when re-enter the __next__() method of itertools.pairwise.

  • gh-91539: Small (10 - 20%) and trivial performance improvement of urllib.request.getproxies_environment(), typically useful when there are many environment variables to go over.

  • gh-103363: Add follow_symlinks keyword-only argument to pathlib.Path.owner() and group(), defaulting to True.

  • gh-102130: Support tab completion in cmd for editline.

  • gh-99437: runpy.run_path() now decodes path-like objects, making sure __file__ and sys.argv[0] of the module being run are always strings.

  • gh-104003: Add warnings.deprecated(), a decorator to mark deprecated functions to static type checkers and to warn on usage of deprecated classes and functions. See PEP 702. Patch by Jelle Zijlstra.

  • gh-103708: Make hardcoded python name, a configurable parameter so that different implementations of python can override it instead of making huge diffs in sysconfig.py

  • gh-66515: mailbox.MH now supports folders that do not contain a .mh_sequences file (e.g. Claws Mail IMAP-cache folders). Patch by Serhiy Storchaka.

  • gh-83162: Renamed re.error to PatternError for clarity, and kept re.error for backward compatibility. Patch by Matthias Bussonnier and Adam Chhina.

  • gh-91133: Fix a bug in tempfile.TemporaryDirectory cleanup, which now no longer dereferences symlinks when working around file system permission errors.

  • bpo-43153: On Windows, tempfile.TemporaryDirectory previously masked a PermissionError with NotADirectoryError during directory cleanup. It now correctly raises PermissionError if errors are not ignored. Patch by Andrei Kulakov and Ken Jin.

  • bpo-32731: getpass.getuser() now raises OSError for all failures rather than ImportError on systems lacking the