Changelog¶
Python seguinte¶
Data de lançamento: XXXX-XX-XX
Biblioteca¶
gh-129889: Support context manager protocol by
contextvars.Token
. Patch by Andrew Svetlov.gh-97850: Update the deprecation warning of
importlib.abc.Loader.load_module()
.gh-96092: Fix bug in
traceback.walk_stack()
called with None where it was skipping more frames than in prior versions. This bug fix also changes walk_stack to walk the stack in the frame where it was called rather than where it first gets used.gh-109798: Added additional information into error messages in
datetime
, and made the messages more consistent between the C and Python implementations. Patch by Semyon Moroz.gh-125746: Delay deprecated
zipimport.zipimporter.load_module()
removal time to 3.15. Usezipimport.zipimporter.exec_module()
instead.
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 withset.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¶
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()
eurllib.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
emPySys_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 umMemoryError
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¶
gh-129939: Comparison pages with highlighted changes generated by the
difflib.HtmlDiff
class now support dark mode.gh-129928: Raise
sqlite3.ProgrammingError
if a user-defined SQL function with invalid number of parameters is created. Patch by Erlend Aasland.gh-129583: Update bundled pip to 25.0.1
gh-129766: Fix crash in
warnings
, when calling_release_lock()
with no existing lock.gh-129005:
_pyio.FileIO.readall()
now allocates, resizes, and fills a data buffer using the same algorithm_io.FileIO.readall()
uses.gh-129646: Atualiza o mapeamento de apelido de localidade no módulo
locale
para corresponder ao mapeamento de apelido de localidade mais recente do X Org e oferecer suporte a novas localidades no Glibc 2.41.gh-128317: Put CLI calendar highlighting in private class, removing
highlight_day
from publiccalendar.TextCalendar
API. Patch by Hugo van Kemenade.gh-129603: Fix bugs where
sqlite3.Row
objects could segfault if their inheriteddescription
was set toNone
. Patch by Erlend Aasland.gh-129559: Add
bytearray.resize()
method sobytearray
can be efficiently resized in place.gh-129502: Erros improváveis na preparação de argumentos para o retorno de chamada
ctypes
agora são tratados da mesma forma que erros levantados no retorno de chamada ou na conversão do resultado do retorno de chamada — usandosys.unraisablehook()
em vez desys.excepthook()
e não definindosys.last_exc
e outras variáveis.gh-129403: Corrigida a mensagem de
ValueError
paraasyncio.Barrier
ethreading.Barrier
.gh-129409: Corrige um estouro de inteiro no módulo
csv
ao gravar um campo de dados maior que 2 GB.gh-126400: Add a socket timeout keyword argument to
logging.handlers.SysLogHandler
.gh-118761: Always lazy import
warnings
inthreading
. Patch by Taneli Hukkinen.gh-118761: Melhora o tempo de importação de
subprocess
importandolocale
esignal
de forma preguiçosa. Patch por Taneli Hukkinen.gh-129346: Em
sqlite3
, manipula a falta de memória ao criar funções SQL definidas pelo usuário.gh-129005: Optimize
_pyio.FileIO.readinto
by avoiding unnecessary objects and copies usingos.readinto()
.gh-129195: Support reporting call graph information from
asyncio.staggered.staggered_race()
.gh-129205: Add
os.readinto()
to read into a buffer object from a file descriptor.gh-128772: Corrige
pydoc
para métodos com o atributo__module__
igual aNone
.gh-129061: Corrige FORCE_COLOR e NO_COLOR quando strings vazias. Patch por Hugo van Kemenade.
gh-92897: Scheduled the deprecation of the
check_home
argument ofsysconfig.is_python_build()
to Python 3.15.gh-129064: Deprecate
sysconfig.expand_makefile_vars()
, in favor of usingsysconfig.get_paths()
with thevars
argument.gh-128550: Foi removida uma otimização incorreta relacionada a tarefas ansiosas em
asyncio.TaskGroup
que resultava em cancelamentos perdidos.gh-128991: Libera a referência do quadro de entrada dentro do retorno de chamada
bdb
gh-118761: Reduce import time of
pstats
andzipfile
by up to 20%, by removing unnecessary imports totyping
. Patch by Bénédikt Tran.gh-128978: Corrige uma exceção
NameError
emsysconfig.expand_makefile_vars()
. Patch por Bénédikt Tran.gh-128961: Corrige uma falha ao definir o estado em um iterador
array.array
esgotado.gh-128894: Corrige
traceback.TracebackException._format_syntax_error
para não falhar em exceções com metadados personalizados.gh-128916: Não tenta definir
SO_REUSEPORT
em soquetes de famílias de endereços diferentes deAF_INET
eAF_INET6
, pois isso não faz sentido com essas famílias de endereços, e a chamada falhará com o kernel Linux 6.12.9 e mais recentes.gh-118761: Improve import time of
tomllib
by removingtyping
,string
, andtomllib._types
imports. Patch by Taneli Hukkinen.gh-128679:
tracemalloc
: Fix race conditions whentracemalloc.stop()
is called by a thread, while other threads are tracing memory allocations. Patch by Victor Stinner.gh-128891: Add specialized opcodes to
opcode.opname
.gh-118761: Reduce import time of
gettext
by up to ten times, by importingre
on demand. In particular,re
is no longer implicitly exposed asgettext.re
. Patch by Eli Schwartz.gh-118761: Reduce the import time of
optparse
when no help text is printed. Patch by Eli Schwartz.gh-128657: Fix possible extra reference when using objects returned by
hashlib.sha256()
under free threading.gh-118761: Reduce the import time of
csv
by up to five times, by importingre
on demand. In particular,re
is no more implicitly exposed ascsv.re
. Patch by Bénédikt Tran.gh-128308: Support the name keyword argument for eager tasks in
asyncio.loop.create_task()
,asyncio.create_task()
andasyncio.TaskGroup.create_task()
, by passing on all kwargs to the task factory set byasyncio.loop.set_task_factory()
.gh-118761: Improve the performance of
base64.b16decode()
by up to ten times by more efficiently checking the byte-string for hexadecimal digits. Reduce the import time ofbase64
by up to six times, by no longer importingre
. Patch by Bénédikt Tran, Chris Markiewicz, and Adam Turner.gh-128156: When using macOS system
libffi
, support for complex types inctypes
is now checked at runtime (macOS 10.15 or newer). The types must also be available at build time.gh-128636: Corrige falha do PyREPL quando
os.environ
é substituído por um valor inválido.gh-128498: Padrão para stdout isatty para detecção de cor em vez de stderr. Patch por Hugo van Kemenade.
gh-128384: Add locking to
warnings
to avoid some data races when free-threading is used. Change_warnings_runtime_state.mutex
to be a recursive mutex and expose it towarnings
, via the_acquire_lock()
and_release_lock()
functions. The lock is held whenfilters
and_filters_version
are updated.gh-128509: Add
sys._is_immortal()
for identifying immortal objects at runtime.gh-128479: Corrige
asyncio.staggered.staggered_race()
vazando tarefas e emitindo uma exceção não tratada.gh-128427:
uuid.NIL
anduuid.MAX
are now available to represent the Nil and Max UUID formats as defined by RFC 9562.gh-91279:
zipfile.ZipFile.writestr()
now respectSOURCE_DATE_EPOCH
that distributions can set centrally and have build tools consume this in order to produce reproducible output.gh-112064: Corrige tratamento incorreto de tamanhos de leitura negativos em
HTTPResponse.read
. Patch por Yury Manushkin.gh-58956: Corrigido um vazamento de referência de quadro em
bdb
.gh-128131: Suporte completo ao acesso aleatório de arquivos zip somente leitura, não criptografados e descompactados obtidos por
ZipFile.open
.gh-127975: Evita reutilizar tipos de aspas em
ast.unparse()
se não for necessário.gh-115514: Corrige exceções e escritas incompletas após
asyncio._SelectorTransport
ser fechado antes das gravações serem concluídas.gh-121604: Add missing Deprecation warnings for
importlib.machinery.DEBUG_BYTECODE_SUFFIXES
,importlib.machinery.OPTIMIZED_BYTECODE_SUFFIXES
,importlib.machinery.WindowsRegistryFinder
,importlib.abc.ResourceLoader
,importlib.abc.SourceLoader.path_mtime()
.gh-127873: Quando
-E
estiver definido, ignora apenasPYTHON_COLORS
e nãoFORCE_COLOR
/NO_COLOR
/TERM
ao colorir a saída. Patch por Hugo van Kemenade.gh-125413: Add
pathlib.Path.info
attribute, which stores an object implementing thepathlib.types.PathInfo
protocol (also new). The object supports querying the file type and internally cachingstat()
results. Path objects generated byiterdir()
are initialized with file type information gleaned from scanning the parent directory.gh-127712: Fix handling of the
secure
argument oflogging.handlers.SMTPHandler
.gh-127096: Não recria a seção sem nome em cada leitura em
configparser.ConfigParser
. Patch por Andrey Efremov.gh-124369: Deprecate
pdb.Pdb.curframe_locals
gh-126332: Corrige falha do _pyrepl ao dar dois CTRL-Z em uma linha que transborda.
gh-125553: Corrige invariância de ida e volta para continuações de contrabarra em
tokenize.untokenize()
.gh-91048: Add
asyncio.capture_call_graph()
andasyncio.print_call_graph()
functions.gh-124703: Quitting
pdb
ininline
mode will emit a confirmation prompt and exit gracefully now, instead of printing an exception traceback.gh-123987: Corrigido problema no NamespaceReader em que um item não-caminho em um caminho de espaço de nomes, como um sinalizador adicionado por um instalador editável, interrompia o carregamento de recursos.
gh-119349: Add the
ctypes.util.dllist()
function to list the loaded shared libraries for the current process.gh-55454: Add IMAP4
IDLE
support to theimaplib
module. Patch by Forest.gh-119257: Exibe o menu de autopreenchimento com tecla tab abaixo da linha atual, o que resulta em um comportamento menos instável e corrige um bug de movimento do cursor. Patch por Daniel Hollas
gh-101410: Support custom messages for domain errors in the
math
module (math.sqrt()
,math.log()
andmath.atanh()
were modified as examples). Patch by Charlie Zhao and Sergey B Kirpichev.gh-81340: Use
os.copy_file_range()
inshutil.copy()
,shutil.copy2()
, andshutil.copyfile()
functions by default. An underlying Linux system call gives filesystems an opportunity to implement the use of copy-on-write (in case of btrfs and XFS) or server-side copy (in the case of NFS.) Patch by Illia Volochii.bpo-27307: Add attribute and item access support to
string.Formatter
in auto-numbering mode, which allows format strings like ‘{.name}’ and ‘{[1]}’.
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¶
gh-125722: Requer Sphinx 8.1.3 ou posterior para construir a documentação do Python. Patch por Adam Turner.
gh-67206: Documenta que
string.printable
não é imprimível no sentido POSIX. Em particular,string.printable.isprintable()
retornaFalse
. Patch por Bénédikt Tran.
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 (usePy_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()
andPyLong_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 aSyntaxError
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
andUnicodeError.end
values in thecodecs.replace_errors()
error handler. Patch by Bénédikt Tran.gh-126004: Fix handling of
UnicodeError.start
andUnicodeError.end
values in thecodecs.backslashreplace_errors()
error handler. Patch by Bénédikt Tran.gh-126004: Fix handling of
UnicodeError.start
andUnicodeError.end
values in thecodecs.xmlcharrefreplace_errors()
error handler. Patch by Bénédikt Tran.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()
andturtle.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 inhttp.cookies
.
API C¶
gh-129533: Atualiza
PyGC_Enable()
,PyGC_Disable()
,PyGC_IsEnabled()
para usar operação atômica para segurança de thread em construção de threads livres. Patch por Donghee Na.gh-89188: Implement
PyUnicode_KIND()
andPyUnicode_DATA()
as function, in addition to the macros with the same names. The macros rely on C bit fields which have compiler-specific layout. Patch by Victor Stinner.gh-91417: Remove
PySequence_Fast()
from the limited C API, since this function has to be used withPySequence_Fast_GET_ITEM
which never worked in the limited C API. Patch by Victor Stinner.gh-128509: Add
PyUnstable_IsImmortal()
for determining whether an object is immortal.gh-129033: Remove
_PyInterpreterState_GetConfigCopy()
and_PyInterpreterState_SetConfig()
private functions. Use insteadPyConfig_Get()
andPyConfig_Set()
, public C API added by PEP 741 “Python Configuration C API”. Patch by Victor Stinner.gh-129033: Remove the private
_Py_InitializeMain()
function. It was a provisional API added to Python 3.8 by PEP 587. Patch by Victor Stinner.gh-128844: Add
PyUnstable_TryIncRef()
andPyUnstable_EnableTryIncRef()
unstable APIs. These are helpers for dealing with unowned references in a thread-safe way, particularly in the free threading build.gh-128911: Add
PyImport_ImportModuleAttr()
andPyImport_ImportModuleAttrString()
helper functions to import a module and get an attribute of the module. Patch by Victor Stinner.gh-128863: The following private functions are deprecated and planned for removal in Python 3.18:
_PyBytes_Join()
: usePyBytes_Join()
._PyDict_GetItemStringWithError()
: usePyDict_GetItemStringRef()
._PyDict_Pop()
: usePyDict_Pop()
._PyLong_Sign()
: usePyLong_GetSign()
._PyLong_FromDigits()
and_PyLong_New()
: usePyLongWriter_Create()
._PyThreadState_UncheckedGet()
: usePyThreadState_GetUnchecked()
._PyUnicode_AsString()
: usePyUnicode_AsUTF8()
._Py_HashPointer()
: usePy_HashPointer()
._Py_fopen_obj()
: usePy_fopen()
.
The pythoncapi-compat project can be used to get these new public functions on Python 3.13 and older.
Patch por Victor Stinner.
gh-126599: Remove some internal test APIs for the experimental JIT compiler.
gh-127925: Convert the
decimal
module to use PEP 757 C API (export-import integers), offering some speed-up if the integer part of theDecimal
instance is small. Patch by Sergey B Kirpichev.
Construção¶
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
inurllib.robotparser.RobotFileParser.read()
.gh-71339: Add new assertion methods for
unittest
:assertHasAttr()
,assertNotHasAttr()
,assertIsSubclass()
,assertNotIsSubclass()
assertStartsWith()
,assertNotStartsWith()
,assertEndsWith()
andassertNotEndsWith()
.gh-118761: Improve import time of
pickle
by 25% by removing an unnecessary regular expression. As such,re
is no more implicitly available aspickle.re
. Patch by Bénédikt Tran.gh-128661: Fixes
typing.evaluate_forward_ref()
not showing deprecation whentype_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-128552: Corrige lixo cíclico introduzido por
asyncio.loop.create_task()
easyncio.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 tokill-word
or Alt-Backspacebackward-kill-word
.gh-88834: Unifica a verificação de instância para
typing.Union
etypes.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ânciasxml.dom.xmlbuilder.DOMInputSource
que tenham apenas um atributosystemId
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étodowm_iconbitmap()
dotkinter
.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
edbm.gnu
respectivamente. Patch por Bénédikt Tran.gh-122548: Adds two new local events to sys.monitoring,
BRANCH_LEFT
andBRANCH_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
andSCHED_NORMAL
constants to theos
module.gh-83662: Adiciona o método
__class_getitem__
ausente à implementação Python defunctools.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 handlingConnectionAbortedError
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 byERR_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 aResourceWarning
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 inxml.parsers.expat.errors
.gh-126225:
getopt
eoptparse
não estão mais marcados como descontinuados. Há razões legítimas para usar um desses módulos em preferência aargparse
, 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ódulooptparse
se aplique.gh-124761: Add
SO_REUSEPORT_LB
constant tosocket
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 onZipInfo
objects. Patch by Bénédikt Tran and Jason R. Coombs.gh-121676: Deprecate calling the Python implementation of
functools.reduce()
with afunction
orsequence
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 amemoryview
object that refers to the supplied pointer and length. This works likectypes.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 usaranext()
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-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çãosplit()
deExceptionGroup
, levando a uma falha em alguns casos. Agora, quandosplit()
retorna um objeto inválido,except*
levantaTypeError
com o objetoExceptionGroup
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 thessl
module supports TLSv1.3 post-handshake client authentication (PHA). Patch by Will Childs-Klein.gh-127274: Add a new flag,
CO_METHOD
, toco_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 asbase_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 determinesys.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¶
gh-128400:
Py_FatalError()
no longer shows all threads on the free threaded build to prevent crashes.gh-128629: Add macros
Py_PACK_VERSION()
andPy_PACK_FULL_VERSION()
for bit-packing Python version numbers.gh-128008: Add
PyWeakref_IsDead()
function, which tests if a weak reference is dead.gh-127350: Add
Py_fopen()
function to open a file. Similar to thefopen()
function, but the path parameter is a Python object and an exception is set on error. Add alsoPy_fclose()
function to close a file, function needed for Windows support. Patch by Victor Stinner.
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 deLDFLAGS
ao verificar se as funções de bibliotecasqlite3
estão disponíveis. Isso corrige a ordenação de bibliotecas vinculadas durante as verificações, que era incorreta ao usar umalibsqlite3
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¶
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
, andmprotect
calls from file-related ones when testingio
behavior using strace.
Segurança¶
gh-127655: Corrigido o transporte de
asyncio.selector_events._SelectorSocketTransport
não pausando escritas para o protocolo quando o buffer atinge a marca d’água alta ao usarasyncio.WriteTransport.writelines()
.
Biblioteca¶
gh-126907: Fix crash when using
atexit
concurrently on the free-threaded build.gh-127870: Detecta chamadas recursivas no tratamento de ctypes
_as_parameter_
. Patch por Victor Stinner.gh-127732: O módulo
platform
agora detecta corretamente o Windows Server 2025.gh-126789: Fixed
sysconfig.get_config_vars()
,sysconfig.get_paths()
, and siblings, returning outdated cached data if the value ofsys.prefix
orsys.exec_prefix
changes. Overwritingsys.prefix
orsys.exec_prefix
still is discouraged, as that might break other parts of the code.gh-127718: Add colour to
test.regrtest
output. Patch by Hugo van Kemenade.gh-127610: Added validation for more than one var-positional or var-keyword parameters in
inspect.Signature
. Patch by Maxim Ageev.gh-127627: Added
posix._emscripten_debugger()
to help with debugging the test suite on the Emscripten target.gh-126821: As aplicações de macOS e iOS agora podem escolher redirecionar stdout e stderr para o log do sistema durante a configuração do interpretador.
gh-93312: Inclui
<sys/pidfd.h>
para obter a constanteos.PIDFD_NONBLOCK
. Patch por Victor Stinner.gh-127481: Add the
EPOLLWAKEUP
constant to theselect
module.gh-127065: Make
operator.methodcaller()
thread-safe and re-entrant safe.gh-127321:
pdb.set_trace()
não parará em um opcode que não tenha mais um número de linha associado.gh-127429: Fixed bug where, on cross-builds, the
sysconfig
POSIX data was being generated with the host Python’sMakefile
. The data is now generated from current build’sMakefile
.gh-127413: Add the
dis --specialized
command-line option to show specialized bytecode. Patch by Bénédikt Tran.gh-125413: Revert addition of
pathlib.Path.scandir()
. This method was added in 3.14.0a2. The optimizations remain for file system paths, but other subclasses should only have to implementpathlib.Path.iterdir()
.gh-127257: Em
ssl
, falhas de chamada de sistema que o OpenSSL relata usandoERR_LIB_SYS
agora são levantadas comoOSError
.gh-59705: On Linux,
threading.Thread
now sets the thread name to the operating system. Patch by Victor Stinner.gh-127303: Expõe publicamente
EXACT_TOKEN_TYPES
emtoken.__all__
.gh-127331:
ssl
can show descriptions for errors added in OpenSSL 3.4.gh-123967: Corrige o manipulador de falhas para quadros de trampolim. Se o quadro mais alto for um quadro de trampolim, pule-o. Patch por Victor Stinner.
gh-127178: A
_sysconfig_vars_(...).json
file is now shipped in the standard library directory. It contains the output ofsysconfig.get_config_vars()
on the default environment encoded as JSON data. This is an implementation detail, and may change at any time.gh-127072: Remove outdated
socket.NETLINK_*
constants not present in Linux kernels beyond 2.6.17.gh-127255: The
CopyComPointer()
function is now public. Previously, this was private and only available in_ctypes
.gh-127182: Corrige o travamento de
io.StringIO.__setstate__()
, quandoNone
foi passado como o primeiro valor.gh-127217: Corrige
urllib.request.pathname2url()
para caminhos começando com várias barras no Posix.gh-125866:
urllib.request.pathname2url()
now adds an empty authority when generating a URL for a path that begins with exactly one slash. For example, the path/etc/hosts
is converted to the scheme-less URL///etc/hosts
. As a result of this change, URLs without authorities are only generated for relative paths.gh-127221: Add colour to
unittest
output. Patch by Hugo van Kemenade.gh-127035: Corrige
shutil.which
no Windows. Agora ele analisa a correspondência direta se e somente se o comando termina com uma extensão PATHEXT ou X_OK não está no modo. Suporta arquivos sem extensão se “.” estiver em PATHEXT. Suporta extensões PATHEXT que terminam com um ponto.gh-122273: Suporte ao histórico de PyREPL no Windows. Patch por devdanzin e Victor Stinner.
gh-125866:
urllib.request.pathname2url()
andurl2pathname()
no longer convert Windows drive letters to uppercase.gh-127078: Corrige o problema em que
urllib.request.url2pathname()
falhava ao descartar uma barra extra antes de uma unidade UNC no caminho da URL no Windows.gh-126766: Corrige o problema em que
urllib.request.url2pathname()
falhava ao descartar qualquer autoridade ‘localhost’ presente na URL.gh-127065: Corrige o travamento ao chamar uma instância
operator.methodcaller()
de vários threads na construção de threads livres.gh-127090: Fix value of
urllib.response.addinfourl.url
forfile:
URLs that express relative paths and absolute Windows paths. The canonical URL generated byurllib.request.pathname2url()
is now used.gh-126992: Fix LONG and INT opcodes to only use base 10 for string to integer conversion in
pickle
.gh-126997: Corrige o suporte de opcodes STRING e GLOBAL com argumentos não ASCII em
pickletools
.pickletools.dis()
agora emite bytes não ASCII em argumentos STRING, BINSTRING e SHORT_BINSTRING como escape (\\xXX
).gh-126316:
grp
: Tornagrp.getgrall()
seguro para thread adicionando um mutex. Patch por Victor Stinner.gh-126618: Corrige a representação de objetos
itertools.count
quando o valor da contagem ésys.maxsize
.gh-126615: The
COMError
exception is now public. Previously, this was private and only available in_ctypes
.gh-126985: When running under a virtual environment with the
site
disabled (see-S
),sys.prefix
andsys.base_prefix
will now point to the virtual environment, instead of the base installation.gh-112192: In the
trace
module, increase the coverage precision (cov%
) to one decimal.gh-118761: Improve import time of
mimetypes
by around 11-16 times. Patch by Hugo van Kemenade.gh-126947: Raise
TypeError
in_pydatetime.timedelta.__new__()
if the passed arguments are notint
orfloat
, so that the Python implementation is in line with the C implementation.gh-126946: Improve the
GetoptError
error message when a long option prefix matches multiple accepted options ingetopt.getopt()
andgetopt.gnu_getopt()
.gh-126899: Make tkinter widget methods
after()
andafter_idle()
accept arguments passed by keyword.gh-85168: Corrige problema em que
urllib.request.url2pathname()
epathname2url()
sempre usavam UTF-8 ao citar e descitar URIs de arquivo. Agora eles usam tratador de erros e codificação do sistema de arquivos.gh-126780: Corrige
os.path.normpath()
para caminhos relativos à unidade no Windows.gh-126775: Torna
linecache.checkcache()
seguro para thread e seguro para reentrada do GC.gh-126601: Fix issue where
urllib.request.pathname2url()
raisedOSError
when given a Windows path containing a colon character not following a drive letter, such as before an NTFS alternate data stream.gh-126727:
locale.nl_langinfo(locale.ERA)
agora retorna vários segmentos de descrição de era separados por ponto e vírgula. Anteriormente, ele retornava apenas o primeiro segmento em plataformas com Glibc.gh-118201: Fixed intermittent failures of
os.confstr
,os.pathconf
andos.sysconf
on iOS and Android.gh-86463: The
usage
parameter ofargparse.ArgumentParser
no longer affects the default value of theprog
parameter in subparsers.gh-124008: Corrige possível travamento (na construção de depuração), saída incorreta ou retorno de valor incorreto do binário bruto
write()
ao gravar no console no Windows.gh-123401: O módulo
http.cookies
agora suporta análise de formatos de data obsoletos de RFC 850, de acordo com os requisitos do RFC 9110. Patch por Nano Zheng.gh-122431:
readline.append_history_file()
agora levantaValueError
quando recebe um valor negativo.gh-122356: Guarantee that the position of a file-like object passed to
zipfile.is_zipfile()
is left untouched after the call. Patch by Bénédikt Tran.gh-122288: Improve the performances of
fnmatch.translate()
by a factor 1.7. Patch by Bénédikt Tran.gh-88110: Corrigido
multiprocessing.Process
relatando um.exitcode
de 1 mesmo em caso de sucesso ao usar o método de início"fork"
ao usar umconcurrent.futures.ThreadPoolExecutor
.gh-97514: Authentication was added to the
multiprocessing
forkserver start method control socket so that only processes with the authentication key generated by the process that spawned the forkserver can control it. This is an enhancement over the other gh-97514 fixes so that access is no longer limited only by filesystem permissions.The file descriptor exchange of control pipes with the forked worker process now requires an explicit acknowledgement byte to be sent over the socket after the exchange on all forkserver supporting platforms. That makes testing the above much easier.
Documentação¶
gh-127347: Publicly expose
traceback.print_list()
intraceback.__all__
.
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 throughgc.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çõesfrom
, use__file__
na mensagem de erro se__spec__.origin
não for um localgh-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 callingargparse.ArgumentParser.add_argument_group()
orargparse.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()
ouPyCode_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__()
debytearray
travando quandoREAD
ouWRITE
são passados como sinalizadores.gh-126937: Fix
TypeError
when actypes.Structure
has a field size that doesn’t fit into an unsigned 16-bit integer. Instead, the maximum number of bits issys.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()
tomemoryview
objects. Patch by Bénédikt Tran.gh-125420: Add
memoryview.count()
tomemoryview
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¶
gh-127896: The previously undocumented function
PySequence_In()
is soft deprecated. UsePySequence_Contains()
instead.gh-127791: Corrige perda de retornos de chamada após mais de uma chamada para
PyUnstable_AtExit()
.gh-127691: The Unicode Exception Objects C API now raises a
TypeError
if its exception argument is not aUnicodeError
object. Patch by Bénédikt Tran.gh-123378: Ensure that the value of
UnicodeEncodeError.end
retrieved byPyUnicodeEncodeError_GetEnd()
lies in[min(1, objlen), max(min(1, objlen), objlen)]
where objlen is the length ofUnicodeEncodeError.object
. Similar arguments apply toUnicodeDecodeError
andUnicodeTranslateError
and their corresponding C interface. Patch by Bénédikt Tran.gh-127314: Improve error message when calling the C API without an active thread state on the free-threaded build.
gh-123378: Ensure that the value of
UnicodeEncodeError.start
retrieved byPyUnicodeEncodeError_GetStart()
lies in[0, max(0, objlen - 1)]
where objlen is the length ofUnicodeEncodeError.object
. Similar arguments apply toUnicodeDecodeError
andUnicodeTranslateError
and their corresponding C interface. Patch by Bénédikt Tran.gh-109523: Reading text from a non-blocking stream with
read
may now raise aBlockingIOError
if the operation cannot immediately return bytes.gh-102471: Add a new import and export API for Python
int
objects (PEP 757):Patch por Victor Stinner.
gh-121058:
PyThreadState_Clear()
now warns (and callssys.excepthook
) if the thread state still has an active exception.
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
quandosys.exit()
é chamado com0xffffffff
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¶
Testes¶
Segurança¶
gh-126623: Atualiza libexpat para 2.6.4
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
andexec_prefix
keys fromsysconfig.get_config_vars()
incorrectly having the same value assys.base_prefix
andsys.base_exec_prefix
, respectively, inside virtual environments. They now accurately reflectsys.prefix
andsys.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 supportsslice
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 desite
acontece apóssysconfig
ter construído um cache parasysconfig.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()
ouunittest.mock.patch.object()
) mais de uma vez sem pará-logh-126595: Corrige falha ao instanciar
itertools.count
com uma contagem inicial desys.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 osys.path
do pai durante a importação de módulosmultiprocessing.set_forkserver_preload()
da mesma maneira quesys.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 emsys.path
durante importações de pré-carregamento do forkserver em vez do caminho absoluto deos.getcwd()
no momento da importação de multiprocessamento usado no workersys.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
emultiprocessing.RLock
repr
não dizem mais “unknown” no macOS.gh-126476: Levanta
calendar.IllegalMonthError
(agora uma subclasse deIndexError
) paracalendar.month()
quando o mês de entrada não está correto.gh-126489: A implementação Python de
pickle
não chama maispickle.Pickler.persistent_id()
para o resultado depersistent_id()
.gh-126451: Register the
contextvars.Context
type tocollections.abc.Mapping
.gh-126175: Add
msg
,doc
,pos
,lineno
andcolno
attributes totomllib.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
andmultiprocessing.managers.ListProxy
types inmultiprocessing.managers
tocollections.abc.MutableMapping
andcollections.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 apathlib.Path
object for the pattern.gh-126353:
asyncio.get_event_loop()
now does not implicitly creates an event loop. It now raises aRuntimeError
if there is no set event loop. Patch by Kumar Aditya.gh-126313: Corrige um problema em
curses.napms()
quandocurses.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 newos.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()
eurl2pathname()
removiam barras de caminhos de unidade DOS do Windows e URLs.gh-126223: Levanta
UnicodeEncodeError
em vez de umSystemError
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 atributoast.AST._fields
é excluído.gh-126106: Corrige uma possível desreferência de ponteiro
NULL
emssl
.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ãoNone
. 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 ofos.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 nowpickleable
andcopyable
.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
andFancyURLopener
classes fromurllib.request
. They had previously raisedDeprecationWarning
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
epersistent_load
de instâncias das classesPickler
eUnpickler
no módulopickle
.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 implementtime.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 ofannotationlib
, fix bug where nested expressions were not returned asannotationlib.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()
, andthreading.Thread.join()
now interrupts the function call and raises aKeyboardInterrupt
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 emvenv
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étodostrftime()
das classesdatetime
datetime
,date
etime
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 Trangh-122549: Add
platform.invalidate_caches()
to invalidate cached results.gh-120754: Atualiza chamadas
read
ilimitadas emzipfile
para especificar umsize
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 levantaNotADirectoryError
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()
andpkgutil.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 andNone
inurllib.parse
functionsparse_qsl()
andparse_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 deSystemError
ao tentar iterar sobre um objetomemoryview
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 ofwarnings.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 itsco_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 inco_consts
is the docstring. If a code object has no docstring,None
will NOT be inserted.gh-126076: Objetos realocados, como objetos
tuple
,bytes
estr
são rastreados corretamente portracemalloc
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
andLOAD_CONST_IMMORTAL
instructions.LOAD_SMALL_INT
pushes a small integer equal to theoparg
to the stack.LOAD_CONST_IMMORTAL
does the same asLOAD_CONST
but is more efficient for immortal objects. RemovesRETURN_CONST
instruction.gh-125942: No Android, a configuração
errors
desys.stdout
foi alterada desurrogateescape
parabackslashreplace
.gh-125859: Corrige uma falha na construção de threads livres quando
gc.get_objects()
ougc.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 existingghccc
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 caminhosPy_DECREF
especializados. Patch por Pablo Galindogh-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__
ofstaticmethod
andclassmethod
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 likezip()
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¶
gh-126554: Corrige o tratamento de erros em objetos
ctypes.CDLL
que podem resultar em uma falha em situações raras.gh-126061: Add
PyLong_IsPositive()
,PyLong_IsNegative()
andPyLong_IsZero()
for checking if aPyLongObject
is positive, negative, or zero, respectively.gh-125608: Corrige um bug em que os observadores de dicionário (por exemplo,
PyDict_Watch()
) no dicionário de atributos de um objeto (__dict__
) não eram acionados quando os atributos do objeto eram modificados.gh-123619: Added the
PyUnstable_Object_EnableDeferredRefcount()
function for enabling PEP 703 deferred reference counting.gh-121654: Add
PyType_Freeze()
function to make a type immutable. Patch by Victor Stinner.gh-120026: The
Py_HUGE_VAL
macro is soft deprecated.
Construção¶
gh-126691: Removed the
--with-emscripten-target
configure flag. We unified thenode
andbrowser
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 ofwasm32-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 thehost_prefix
used bygetpath.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¶
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 comopython3.exe
em vez depython3.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 thetest_os
andtest_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 levantarOSError
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()
detest_posixpath
. Chamagetpwnam()
para obterpw_dir
, pois pode ser diferente degetpwall()
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ãois_multicast
,is_reserved
,is_link_local
,is_global
eis_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 ondeAF_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 parapython -m asyncio
. Os eventos em questão sãocpython.run_stdin
ecpython.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 de0o700
para restringir o novo diretório ao usuário atual. Isso corrige CVE 2024-4030 afetandotempfile.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
ebdb
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
andWeakValueDictionary
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 objetoPurePath
com umparser
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ódulosite
não importa mais o módulo_pyrepl
. Além disso, o módulosite
agora respeita as opções de linha de comando-E
e-I
: ignorePYTHON_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 theLC_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 deasyncio.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-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()
eos.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 invalidhelp
arguments toadd_argument()
,add_subparsers()
andadd_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 comhappy_eyeballs_delay
gh-124390: Fixed
AssertionError
when usingasyncio.staggered.staggered_race()
withasyncio.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 explicitnargs=0
are specified for positional arguments.gh-124835: Make
tomllib.loads()
raiseTypeError
notAttributeError
on bad input types that do not have thereplace
attribute. Improve error message whenbytes
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 incorrecttype_params
argument. Now it raises aTypeError
when a type parameter without a default follows one with a default, and when an entry in thetype_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 toinspect.Signature.format()
. Use the new functionality to improve the display of annotations in signatures inpydoc
. 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 mesmocontext
. 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 comnargs='?'
,default=argparse.SUPPRESS
etype
especificado.gh-120378: Corrige uma falha relacionada a um estouro de inteiro em
curses.resizeterm()
ecurses.resize_term()
.gh-124498: Corrige
typing.TypeAliasType
para não ser genérico, quandotype_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 againstchoices
. Optional arguments withnargs
equal to'?'
no longer check const againstchoices
.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()
esignal.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()
inunittest.mock.create_autospec()
. Nowcreate_autospec
will check for potential dataclasses and usedataclasses.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 whereuntil
has no effect when it appears in acommands
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
comallow_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
'*'
ouargparse.REMAINDER
não são mais necessários. Isso permite usar argumento posicional comnargs='*'
e semdefault
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 ofctypes.Structure
andUnion
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óduloipaddress
.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) emargparse
. 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 Windowsgh-124171: Adiciona solução alternativa para implementações quebradas de
fmod()
no Windows, que perdem o sinal de zero (por exemplo,fmod(-10, 1)
retorna0.0
). Patch por Sergey B Kirpichev.gh-123978: Remove
time.thread_time()
etime.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 underscoresgh-123935: Corrige detecção de slots pai para dataclasses que herdam de classes com
__dictoffset__
.gh-123892: Adicionar
"_wmi"
asys.stdlib_module_names
. Patch por Victor Stinner.gh-84808: Fix error handling in
socket
methodconnect_ex()
on platforms whereerrno
can be negative.gh-123756: Added a new argument
mode
topdb.Pdb
. Only allowpdb
from command line to userestart
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óduloscollections.abc
edecimal
(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
whencsv.reader()
,csv.writer()
, orcsv.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 indis
output. Patch by Alexandr153.gh-123341: Add
__class_getitem__()
totkinter.Event
for type subscript support at runtime. Patch by Adonis Rakateli.gh-119518: Speed up normalization of
pathlib.PurePath
andPath
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()
andmove_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 serstr()
. Patch por Sergey B Kirpichev.gh-123240: Levanta eventos de auditoria para
input()
no novo REPL.gh-76960: Fix
urllib.parse.urljoin()
andurllib.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) inurljoin()
. Preserve empty components (authority, params, query) inurldefrag()
.gh-116810: Resolve um vazamento de memória introduzido no
ssl
do CPython 3.10 quando a propriedadessl.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()
andElement
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()
eurllib.parse.urlunparse()
.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 anyshutil
function since Python 3.4. It’s now an alias forRuntimeError
.gh-123085: In a bare call to
importlib.resources.files()
, ensure the caller’s frame is properly detected whenimportlib.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 porhttp.cookies
.gh-123049: Add support for
UNNAMED_SECTION
inconfigparser.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 apenasfiles(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 ofinspect.iscoroutinefunction()
.gh-116263:
logging.handlers.RotatingFileHandler
não substitui mais arquivos de log vazios.gh-105376: Restaura o método descontinuado
warn()
dologging
. Ele foi removido no Python 3.13 alpha 1. Mantém o método descontinuadowarn()
no Python 3.13. Patch por Victor Stinner.gh-122311: Improve errors in the
pickle
module.PicklingError
is now raised more often instead ofUnicodeEncodeError
,ValueError
andAttributeError
, 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 todataclasses.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)
andcmath.tanh(infj)
for recent C standards.gh-122478: Remove internal frames from tracebacks shown in
code.InteractiveInterpreter
with non-defaultsys.excepthook()
. Save correct tracebacks insys.last_traceback
and update__traceback__
attribute ofsys.last_value
andsys.last_exc
.gh-116622: No Android, as constantes
FICLONE
eFICLONERANGE
não são mais expostas porfcntl
, 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 umsys.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 Hsinggh-122400: Lida com
ValueError
s levantados poros.stat()
emfilecmp.dircmp
efilecmp.cmpfiles()
. Patch por Bénédikt Tran.gh-121650: Cabeçalhos
email
com quebras de linha incorporadas agora são citados na saída. Ogenerator
agora se recusará a serializar (escrever) cabeçalhos que são dobrados ou delimitados de forma insegura; consulteverify_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:
evaluate_value
ontyping.TypeAliasType
evaluate_bound
,evaluate_constraints
, andevaluate_default
ontyping.TypeVar
evaluate_default
ontyping.ParamSpec
evaluate_default
ontyping.TypeVarTuple
gh-119180: Fix handling of classes with custom metaclasses in
annotationlib.get_annotations
.gh-122170: Lida com
ValueError
s levantadas poros.stat()
emlinecache
. 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 comcsv.QUOTE_NONNUMERIC
oucsv.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 queinspect.iscoroutinefunction()
retorne o resultado correto.gh-122081: Corrige uma falha na função opcional
decimal.IEEEContext()
disponível por meio do sinalizador de configuraçãoEXTRA_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
constructorFraction.from_number()
.gh-121798: Add alternative
Decimal
constructorDecimal.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ávelCAN_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
functionsisqrt()
,log()
,log2()
andlog10()
now support integers larger than2**2**32
on 32-bit platforms.gh-121474: Corrigida a verificação de sanidade ausente para o argumento
parties
no construtorthreading.Barrier
. Patch por Clinton Christian (pygeek).gh-121450: Hard-coded breakpoints (
breakpoint()
andpdb.set_trace()
) now reuse the most recentPdb
instance that callsPdb.set_trace()
, instead of creating a new one each time. As a result, all the instance specific data likedisplay
andcommands
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 writingsocket.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 levantariaDeprecationWarning
. 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 validaction
forwarnings.simplefilter()
andwarnings.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__()
defunctools.partialmethod
. Patch por Bénédikt Tran.gh-121018: Fixed issues where
argparse.ArgumentParser.parse_args()
did not honorexit_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
asc_float_complex
,c_double_complex
andc_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 Hsinggh-120769: Faz com que uma linha vazia em
pdb
repita o último comando mesmo quando o comando é decmdqueue
.gh-120780: Show string value of LOAD_SPECIAL oparg in
dis
output.gh-41431: Add
datetime.time.strptime()
anddatetime.date.strptime()
. Contributed by Wannes Boeykens.gh-120743: Soft deprecate
os.popen()
andos.spawn*
functions. They should no longer be used to write new code. Thesubprocess
module is recommended instead. Patch by Victor Stinner.gh-120732: Corrige
name
passando para o objetounittest.mock.Mock
ao usarunittest.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 theDOTALL
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
andipaddress.IPv6Address
attributesversion
andmax_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 inpdb
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 thanNone
. 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 todataclasses
,typing.TypedDict
, andtyping.NamedTuple
.gh-119600: Corrige
unittest.mock.patch()
para não ler atributos do alvo quandonew_callable
estiver definido. Patch por Robert Collins.gh-120289: Corrigido o problema de uso após liberação em
cProfile
ao desabilitardisable()
eclear()
em temporizadores externos.gh-82017: Added support for converting any objects that have the
as_integer_ratio()
method to aFraction
.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ânticafrom __future__ import annotations
estivesse habilitada. Patch por Alex Waygood.gh-114053: Corrige
NameError
errôneo ao chamarinspect.get_annotations()
comeval_str=True`
em uma classe que fazia uso de parâmetros do tipo PEP 695 em um módulo que tinhafrom __future__ import annotations
no topo do arquivo. Patch por Alex Waygood.gh-120268: Proibe passar
None
paradatetime.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 topdb.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
emimportlib.util
até que o carregamento preguiçoso seja usado.gh-120157: Remove unused constant
concurrent.futures._base._FUTURE_STATES
inconcurrent.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étodosymtable.SymbolTable.get_type
. Patch por Bénédikt Tran.gh-120029: Expose
symtable.Symbol
methodsis_free_class()
,is_comp_iter()
andis_comp_cell()
. Patch by Bénédikt Tran.gh-120108: Corrige chamada de
copy.deepcopy()
em árvoresast
que foram modificadas para ter referências a nós pais. Patch por Jelle Zijlstra.gh-120056: Add
socket.IP_RECVERR
andsocket.IP_RECVTTL
constants (both available since Linux 2.2). Andsocket.IP_RECVORIGDSTADDR
constant (available since Linux 2.6.29).gh-120057: Added the
os.environ.refresh()
method to updateos.environ
with changes to the environment made byos.putenv()
, byos.unsetenv()
, or made outside Python in the same process. Patch by Victor Stinner.gh-120029: Expose
symtable.Symbol.is_type_parameter()
in thesymtable
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 umPropertyMock
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()
eshowtopic()
agora respeitam um argumento output configurado parapydoc.Helper
e não usam o pager em tais casos. Patch por Enrico Tröger.gh-117398: O módulo
_datetime
(implementação C paradatetime
) 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 tofloat
instead ofcomplex
.gh-119770: Make
termios
ioctl()
constants positive. Patch by Victor Stinner.gh-89727: Corrige problema com
shutil.rmtree()
onde umaRecursionError
é levantada em árvores de diretório profundas.gh-119577: O
DeprecationWarning
emitido ao testar o valor verdade de umxml.etree.ElementTree.Element
agora descreve o retorno incondicional deTrue
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 umaRecursionError
é levantada em árvores de diretório profundas. Um erro de recursão não é mais levantado quandormtree.avoids_symlink_attacks
é falso.gh-93963: Remove deprecated names from
importlib.abc
as found inimportlib.resources.abc
.gh-119118: Corrige regressão de desempenho no módulo
tokenize
armazenando em cache o atributo de tokenline
e calculando o deslocamento da coluna de forma mais eficiente.gh-89727: Corrige problema com
os.fwalk()
onde umaRecursionError
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
andast.Ellipsis
. They had all emitted deprecation warnings since Python 3.12. Patch by Alex Waygood.gh-119555: Captura
SyntaxError
decompile()
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 ofre
. Patch by Jelle Zijlstra.gh-119127: Positional arguments of
functools.partial()
objects now support placeholders viafunctools.Placeholder
.gh-113892: Agora, o método
sock_connect
deasyncio.ProactorEventLoop
levanta umValueError
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 anunsigned long
instead of anunsigned int
for the request parameter offcntl.ioctl()
to support requests larger thanUINT_MAX
. Patch by Victor Stinner.gh-119105:
difflib
’sDIffer.compare()
(and so alsondiff
) 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-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
**
oupow()
comFraction
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 levantavaTypeError
quando dadoNone
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 quandof_trace
do quadro do chamador não estiver definidogh-82805: Support single-dot file extensions in
pathlib.PurePath.suffix
and related attributes and methods. For example, thesuffixes
ofPurePath('foo.bar.')
are now['.bar', '.']
rather than[]
. This brings file extension splitting in line withos.path.splitext()
.gh-118924: Remove
version
andversion_info
fromsqlite3
. 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 levantaAttributeError
em vez deTypeError
.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 fromurllib.parse
. It had previously raised aDeprecationWarning
since Python 3.11. Patch by Nikita Sobolev.gh-118824: Remove deprecated
pty.master_open()
andpty.slave_open()
. Usepty.openpty()
instead. Patch by Nikita Sobolev.gh-118851: Argumentos
ctx
para os construtores de classes de nóast
agora são padronizados paraast.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
andcollections.abc.ByteString
are removed. They had previously raised aDeprecationWarning
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
para1
.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 frompathlib.Path.exists()
andis_*()
methods, rather than a selection of more common errors. The new behaviour is consistent withos.path.exists()
,os.path.isdir()
, etc. Usepathlib.Path.stat()
to retrieve the file status without suppressing exceptions.gh-78707: Drop support for passing additional positional arguments to
pathlib.PurePath.relative_to()
andis_relative_to()
.gh-118507: Corrige
os.path.isfile()
no Windows para pipes. Aceleraos.path.isjunction()
eos.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 depdb
. 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 qualquerOSError
deos.readlink()
quando o modo strict está desabilitado (o padrão).gh-118263: Acelera
os.path.splitroot()
eos.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 Kulikgh-118033: Corrige
dataclasses.dataclass()
não criando um slot__weakref__
ao subclassificartyping.Generic
.gh-117766: Sempre usa
str()
para exibirchoices
emargparse
.gh-106531: Em
importlib.resources
, sincronizar com importlib_resources 6.3.2, incluindo:MultiplexedPath
agora espera caminhosTraversable
, descontinuando argumentos de string paraMultiplexedPath
; Suporte habilitado para recursos em pacotes de espaço de nomes em arquivos zip; CorrigidoNotADirectoryError
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 ainspect.Signature
instance. Patch by Sergey B Kirpichev.gh-115808: Add
operator.is_none()
andoperator.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 correspondingdataclasses.Field
object.In order to support this feature we are changing the
__slots__
format in dataclasses fromtuple
todict
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()
essl.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()
anddatetime.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 debool
,str
,bytearray
ouint
.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()
andcopy()
for proxies oflist
fromkeys()
,reversed(d)
,d | {}
,{} | d
,d |= {'b': 2}
for proxies ofdict
bpo-45767: Corrige conversão de inteiros em
os.major()
,os.minor()
eos.makedev()
. Suporte a números de dispositivos maiores que2**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 efficientshutil
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 comoimportlib.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 diretivasversionchanged
,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()
emultiprocessing.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 dePy_Initialize
em vez de depois dele (já quePy_Main
faz sua própria chamada paraPy_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
andprev_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 objetosUnicodeError
quando os valoresUnicodeError.start
eUnicodeError.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 REPLhelp()
.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 comovt100
.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 objetomemoryview
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 usingcase ... 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 usingexcept 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 aPYTHON_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 Galindogh-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 functionsCALL_KW_BOUND_METHOD
for calls to bound methodsCALL_KW_NON_PY
for all other calls
gh-122821: Make sure that branches in
while
statements have consistent offsets forsys.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. Otp_basicsize
do tipo agora considera campos não sequenciais que não estão incluídos noPy_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 monitoramentoRAISE
.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
ordict
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 ofPyLong_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. UseBUILD_MAP
instead.gh-122029: Emite eventos
c_call
emsys.setprofile()
quando umPyMethodObject
apontando para umPyCFunction
é 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()
andset.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 usaryield 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 raisesSyntaxError
. 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 forlist.index()
,range.index()
,deque.index()
,deque.remove()
andShareableList.index()
no longer contain the repr of the searched value (which can be arbitrary large) and are consistent with error messages for otherindex()
andremove()
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 sinalizadorPy_ASNATIVEBYTES_ALLOW_INDEX
foi adicionado para permitir isso.gh-120838:
Py_Finalize()
ePy_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 repositoryDoc
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
andBEFORE_ASYNC_WITH
instructions. Add the newLOAD_SPECIAL
instruction. Generate code forwith
andasync 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 CPyUnicode_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 objetosstr
.gh-120485: Add an override of
allow_reuse_port
on classes subclassingsocketserver.TCPServer
whereallow_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 objetosbytes
ebytearray
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()
andbytearray.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 Galindogh-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 decollections.abc.Mapping
e pode ser correspondido como um mapeamento em instruçõesmatch
gh-120080: Direct call to the
int.__round__()
now acceptsNone
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 blocoselif
/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 Galindogh-119180:
classmethod()
andstaticmethod()
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 emprestadagh-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 Galindogh-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 withLOAD_COMMON_CONSTANT
and add support forNotImplementedError
.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. And0 ** -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()
paraFrameLocalsProxy
que retorna umdict
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 raisesTypeError
. 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 todifflib.unified_diff()
anddifflib.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 ofAST
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()
andcomplex.from_number()
.gh-95144: Improve the error message from
a in b
whenb
is not a container to mention the term “container”.bpo-24766: Corrige manipulação do argumento
doc
para subclasses deproperty
.
API C¶
gh-123961: Convert the curses.window static type exposed by the
PyCursesWindow_Type
macro inInclude/py_curses.h
to a heap type. Patch by Bénédikt Tran.gh-124502: Add
PyUnicode_Equal()
function to the limited C API: test if two strings are equal. Patch by Victor Stinner.gh-124296:
PyDictObject
no longer maintains a private version tag fieldma_version_tag
per PEP 699. This field was originally added in Python 3.6 (PEP 509) and deprecated in Python 3.12.gh-124160: Corrige travamento ao importar módulos contendo inicialização de estado e fase única em um subinterpretador.
gh-124153: Add
PyType_GetBaseByToken()
andPy_tp_token
slot for easier type checking, related to PEP 489 and PEP 630.gh-124127: In the limited C API 3.14 and newer,
Py_REFCNT()
is now implemented as an opaque function call to hide implementation details. Patch by Victor Stinner.gh-123880: Corrige um bug que impedia importações circulares de módulos de extensão que usam inicialização de fase única.
gh-123909:
PyType_FromSpec()
,PyType_FromSpecWithBases()
andPyType_FromModuleAndSpec()
will now fail if the metaclass of the new type has customtp_new
.gh-107954: Add functions to configure the Python initialization (PEP 741):
Patch por Victor Stinner.
gh-107954: Add functions to get and set the current runtime Python configuration:
Patch por Victor Stinner.
gh-123465:
Py_RELATIVE_OFFSET
is now allowed inPyMemberDef
for the special offset member"__vectorcalloffset__"
, as well as the discouraged special offset members"__dictoffset__"
and"__weaklistoffset__"
gh-100554: Added a slot
Py_tp_vectorcall
to settp_vectorcall
via thePyType_FromSpec()
function family. Limited API extensions can use this feature to provide more efficient vector call-based implementation of__new__
and__init__
.gh-122854: Add
Py_HashBuffer()
to compute and return the hash value of a buffer. Patch by Antoine Pitrou and Victor Stinner.gh-122728: Corrige
PyEval_GetLocals()
para evitarSystemError
(“argumento ruim para função interna”). Patch por Victor Stinner.gh-116622: Faz
PyObject_Print
contornar um bug no Android e OpenBSD que o impedia de levantar uma exceção ao tentar gravar em um fluxo somente leitura.gh-105201: Add
PyIter_NextItem()
to replacePyIter_Next()
, which has an ambiguous return value. Patch by Irit Katriel and Erlend Aasland.gh-121489: Exporta
_PyBytes_Join()
privada novamente.gh-121645: Add
PyBytes_Join(sep, iterable)
function, similar tosep.join(iterable)
in Python. Patch by Victor Stinner.gh-89364: Exporta a função
PySignal_SetWakeupFd()
. Anteriormente, a função era documentada, mas não podia ser usada em código de terceiros. Patch por Victor Stinner.gh-113993:
PyUnicode_InternInPlace()
não impede mais que seu argumento seja coletado como lixo.Várias funções que usam
char *
agora são documentadas como possivelmente impedindo que objetos de string sejam coletados como lixo; consulte a documentação para obter detalhes:PyUnicode_InternFromString()
,PyDict_SetItemString()
,PyObject_SetAttrString()
,PyObject_DelAttrString()
,PyUnicode_InternFromString()
e funções de conveniênciaPyModule_Add*
.gh-113601: Removidas asserções de construção de depuração relacionadas a strings internas, que eram falsamente acionadas por extensões ABI estáveis.
gh-112136: Restaura a estrutura privada
_PyArg_Parser
e a função privada_PyArg_ParseTupleAndKeywordsFast()
, removidas anteriormente no Python 3.13 alpha 1. Patch por Victor Stinner.gh-120642: Remova o tipo privado
_Py_CODEUNIT
da API C pública. O cabeçalho internopycore_code.h
agora deve ser usado para obter esse tipo interno. Patch por Victor Stinner.gh-120858:
PyDict_Next()
não trava mais o dicionário na construção de threads livres. O bloqueio precisa ser feito pelo chamador em todo o laço de iteração.gh-120642: Remove as seguintes funções instáveis:
PyUnstable_Replace_Executor()
PyUnstable_SetOptimizer()
PyUnstable_GetOptimizer()
PyUnstable_GetExecutor()
PyUnstable_Optimizer_NewCounter()
PyUnstable_Optimizer_NewUOpOptimizer()
Patch por Victor Stinner.
gh-120389: Add new functions to convert C
<stdint.h>
numbers from/to Pythonint
:Patch por Victor Stinner.
gh-120600: In the limited C API 3.14 and newer,
Py_TYPE()
is now implemented as an opaque function call to hide implementation details. Patch by Victor Stinner.gh-70278:
PyUnicode_FromFormat()
no longer produces the ending\ufffd
character for truncated C string when use precision with%s
and%V
. It now truncates the string before the start of truncated multibyte sequences.gh-119771: Set
errno
in_Py_c_pow()
on overflows. Patch by Sergey B Kirpichev.gh-119182: Add a new
PyUnicodeWriter
API to create a Pythonstr
object:Patch por Victor Stinner.
gh-119613: Soft deprecate the
Py_MEMCPY
macro: use directlymemcpy()
instead. Patch by Victor Stinner.gh-119775: Creating
immutable types
with mutable bases was deprecated since 3.12 and now raises aTypeError
.gh-119585: Corrige travamento quando um estado de thread que foi criado por
PyGILState_Ensure()
chama um destruidor que durantePyThreadState_Clear()
chama de volta paraPyGILState_Ensure()
ePyGILState_Release()
. Isso pode ocorrer quando na construção de threads livres ou ao usar variáveis de thread local cujos destruidores chamamPyGILState_Ensure()
.gh-119613: Macros
Py_IS_NAN
,Py_IS_INFINITY
andPy_IS_FINITE
are soft deprecated.gh-119336: Restaura a função
_PyLong_NumBits()
removida. Ela é usada pelo projeto pywin32. Patch por Ethan Smithgh-119344: A API da seção crítica agora é pública como parte da API C não limitada.
gh-119333: Add
PyContext_AddWatcher()
andPyContext_ClearWatcher()
APIs to register callbacks to receive notification on enter and exit of context objects.gh-119247: Adicionadas as macros
Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST
ePy_END_CRITICAL_SECTION_SEQUENCE_FAST
para tornar possível usar as APIs PySequence_Fast com segurança quando de threads livres, e atualizar str.join para funcionar sem que a GIL as use.gh-111389: Adicionar constante
PyHASH_MULTIPLIER
: multiplicador primo usado em string e vários outros hashes. Patch por Victor Stinner.gh-118771: Several C declarations with names that didn’t start with the
Py
or_Py
prefixes, which were added by mistake in 3.13 alpha and beta releases, were moved to internal headers.gh-116984: Faz mimalloc incluir relativo ao arquivo atual para evitar que incorporadores ou extensões precisem incluir
Internal/mimalloc
se eles já estiverem incluindo cabeçalhos CPython internos.gh-118789: Adiciona
PyUnstable_Object_ClearWeakRefsNoCallbacks()
, que limpa weakrefs sem chamar seus callbacks.gh-118789: Restaura
_PyWeakref_ClearRef
que foi removido anteriormente no Python 3.13 alpha 1.gh-116560: Add
PyLong_GetSign()
function. Patch by Sergey B Kirpichev.gh-97588: Fix creating bitfields in
ctypes
structures and unions. Fields no longer overlap.gh-87135: Attempting to acquire the GIL after runtime finalization has begun in a different thread now causes the thread to hang rather than terminate, which avoids potential crashes or memory corruption caused by attempting to terminate a thread that is running code not specifically designed to support termination. In most cases this hanging is harmless since the process will soon exit anyway.
The
PyThread_exit_thread
function is now deprecated. Its behavior is inconsistent across platforms, and it can only be used safely in the unlikely case that every function in the entire call stack has been designed to support the platform-dependent termination mechanism. It is recommended that users of this function change their design to not require thread termination. In the unlikely case that thread termination is needed and can be done safely, users may migrate to calling platform-specific APIs such aspthread_exit
(POSIX) or_endthreadex
(Windows) directly.bpo-34008: Adiciona
Py_IsInitialized
à lista de APIs que são seguras para chamar antes que o interpretador seja inicializado e atualiza os testes de incorporação para cobri-lo.
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 configurationgh-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
paraLDCXXSHARED
emsysconfig
. Patch por Pablo Galindogh-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 paraLIBPYTHON
, 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 queFileNotFoundError
poderia ser causado por outro processo que já estava movendojit_stencils.h.new
parajit_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
ecurses.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çãoSHT_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¶
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()
ejson.dump()
ao usar o argumento indent. Dependendo dos dados, a codificação usandojson.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 comPYTHON_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 retornaTrue
porque a GIL está sempre habilitada. Na construção de threads livres, ela pode retornarTrue
ouFalse
.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 levantarTypeError
.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()
easync_generator.asend().close()
para fechar sua seção do gerador assíncrono subjacentegh-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
ePyFrame_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 ambientePYTHON_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 antigoPYTHON_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 casosfrom x import
eimport
. Agora, ele indica aos usuários queimport
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 chamaragen.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
ebytearray
adaptando-os à convenção de chamadaMETH_FASTCALL
:count()
find()
index()
rfind()
rindex()
gh-117709: Acelera as chamadas para
str()
com argumento somente posicional, usando a convenção de chamada PEP 590vectorcall
. 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
ePY_MONITORING_EVENT_EXCEPTION_HANDLED
não manipulados desys.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 slotPy_mod_gil
, enquanto módulos init monofásicos chamamPyUnstable_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()
ePyRefTracer_GetTracer()
, que permite rastrear a criação e destruição de objetos da mesma forma que o módulotracemalloc
faz. Patch por Pablo Galindogh-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
eassignment
simples. Patch por Pablo Galindo.gh-105879: Permite que os argumentos globals e locals para
exec()
eeval()
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 detyping._eval_type()
outyping.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âmetrotype_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
etyping.AsyncContextManager
, representando os tipos de retorno de__exit__()
e__aexit__()
respectivamente. Este parâmetro tem como padrãobool | None
.gh-118650: O módulo
enum
permite que o método chamado_repr_*
seja definido em tiposEnum
.gh-118648: Adiciona padrões de parâmetros de tipo para
typing.Generator
etyping.AsyncGenerator
.gh-101137: O tipo MIME
text/x-rst
agora é suportado pormimetypes
.gh-118164: A implementação Python do módulo
decimal
poderia parecer travar em casos de potência relativamente pequena (como2**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 de10**precision
(que poderia ser efetivamente muito grande para ser computada).gh-111744:
breakpoint()
epdb.set_trace()
agora entram no depurador imediatamente após a chamada, em vez de antes da próxima linha ser executada.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 chamadafunctools.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ânciasoperator.attrgetter
,operator.itemgetter
eoperator.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 edata()
para obter os dados da imagem. Adiciona os parâmetros background e grayscale ao métodowrite()
dePhotoImage
.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étodoscopy()
,zoom()
esubsample()
daPhotoImage
. Adiciona os parâmetros zoom e subsample ao métodocopy()
dePhotoImage
.gh-118221: Corrige um bug em que
sqlite3.Connection.iterdump()
poderia falhar se umrow 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óduloinspect
. 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 emgetattr_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óduloast
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 atuple
embutido.typing.Unpack
agora levantaTypeError
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. Aceleraos.path.splitroot()
com uma implementação nativa.gh-117535: Altera o nome de arquivo desconhecido de
warnings
desys
para<sys>
para esclarecer que não é um nome de arquivo real.gh-114053: Corrige
NameError
errôneo ao chamartyping.get_type_hints()
em uma classe que fazia uso de parâmetros de tipo PEP 695 em um módulo que tinhafrom __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 argumentofilter
não for fornecido paraextract()
ouextractall
, 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 inicialis_dir()
. Como resultado dessa alteração,glob()
não pode mais levantarOSError
.gh-77102: O módulo
site
agora analisa o arquivo.pth
com UTF-8 primeiro, e codificação da localidade seUnicodeDecodeError
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()
usandoos.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 embuiltin_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
comofilename
para o comandobreak
depdb
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étodocancel()
da tarefa pai. Isso garante que umaasyncio.CancelledError
será levantada no próximoawait
, 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 mensagensemail
. 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 emguess_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
eImportError
agora incluem apenas nomes sublinhados se o nome original estiver sublinhado.gh-116023: Não mostra campos vazios (valor
None
ou[]
) emast.dump()
por padrão. Adiciona o parâmetroshow_empty=False
para mostrá-los opcionalmente.gh-115961: Adicionados atributos
name
emode
para objetos compactados e arquivados do tipo arquivo nos módulosbz2
,lzma
,tarfile
ezipfile
. O valor do atributomode
degzip.GzipFile
foi alterado de inteiro (1
ou2
) para string ('rb'
ou'wb'
). O valor do atributomode
do objeto arquivo ou similar legível retornado porzipfile.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çãomultiprocessing
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-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__()
atypes.GeneratorType
etypes.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
emargparse
simplificando a formatação de uso. Patch por Ali Hamdan.gh-102402: Ajusta
logging.LogRecord
para usartime.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 departial
. Em vez disso, tanto a versão Python quanto a versão C realizam uma verificaçãoisinstance(func, partial)
no primeiro argumento departial
.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
como2
antes de criar o objetoTk
ou chamar o métodowantobjects()
do objetoTk
com o argumento2
agora faz com que argumentos para retornos de chamada registrados no módulotkinter
sejam passados como vários objetos Python (int
,float
,bytes
,tuple
), dependendo de sua representação interna em Tcl, em vez de semprestr
.tkinter.wantobjects
agora está definido como2
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 paraUseTIER2
.gh-115119: A opção
configure
--with-system-libmpdec
agora tem como padrãoyes
. A cópia empacotada delibmpdecimal
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 de0o700
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 sinalizadorSTARTF_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 definirPATH
ao instalar para o shell Fish.
IDLE¶
bpo-34774: Use o tema de cores selecionado pelo usuário para Help => IDLE Doc.
API C¶
gh-118124: Corrige
Py_BUILD_ASSERT
ePy_BUILD_ASSERT_EXPR
para expressões não constantes: usestatic_assert()
no C11 e mais recentes. Patch por Victor Stinner.gh-110850: Adiciona variante “Raw” das funções PyTime
Patch por Victor Stinner.
gh-117987: Restaura funções removidas no Python 3.13 alpha 1:
Patch por Victor Stinner.
gh-117929: Restaura função removida
PyEval_InitThreads()
. Patch por Victor Stinner.gh-117534: Melhora a lógica de validação na implementação C de
datetime.datetime.fromisoformat()
para lidar melhor com anos inválidos. Patch por Vlad Efanov.gh-68114: Corrigido o tratamento de skipitem() dos antigos formatadores ‘w’ e ‘w#’. Eles não são mais suportados e agora levantam uma exceção se usados.
gh-111997: Adiciona uma API C para disparar eventos de monitoramento.
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
ebytearray
adaptando-os à convenção de chamadaMETH_FASTCALL
:endswith()
startswith()
gh-117431: Melhora o desempenho dos seguintes métodos
str
adaptando-os à convenção de chamadaMETH_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 Semyongh-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
, definearg0
comosys.monitoring.MISSING
em vez deNone
para o eventoCALL
.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 emitaCALL
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 pormimetypes
.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()
eos.path.expanduser()
.gh-117584: Levanta
TypeError
para objetos que não são caminhos emposixpath.relpath()
.gh-117467: Preserva a propriedade de mailbox ao reescrever em
mailbox.mbox.flush()
. Patch por Tony Mountifield.gh-114848: Levanta
FileNotFoundError
quandogetcwd()
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 deCancelledError
,TimeoutError
eInvalidStateError
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()
eglob.glob1()
. Useglob.glob()
e passe um diretório para seu argumento root_dir.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 recomendemtime = 0
para gerar fluxos determinísticos.gh-117310: Corrigida uma falha improvável inicial e extra
Py_DECREF
emssl
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 CSSL_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 quandostdout=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 aumentandochunksize
.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çõesENTER_EXECUTOR
.gh-117182: O carregamento preguiçoso de módulos que modificam seu próprio
__class__
não reverte mais o__class__
paratypes.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()
etime.strptime()
que sempre falha ao analisar uma sequência de datas com umValueError
envolvendo um dia do mês, comostrptime("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 maisWaitForSingleObject()
com um tempo limite negativo: passe0
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ógioGetSystemTimePreciseAsFileTime()
para ter uma resolução melhor que 1 us, em vez do relógioGetSystemTimeAsFileTime()
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çõesurllib.parse
parse_qs()
eparse_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 paraMetadataPathFinder.invalidate_caches
.gh-116647: Corrige filho recursivo em dataclasses
gh-113171: Corrige vários falsos positivos e falsos negativos em
ipaddress.IPv4Address.is_private
(veja estas documentações para detalhes)
Também nos atributos correspondentes
ipaddress.IPv4Network
eipaddress.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çãofma()
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()
eread_text()
não estão mais descontinuadas e oferecem suporte a subdiretórios por meio de vários argumentos posicionais. A funçãocontents()
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 widgetstkinter.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()
eshutil.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
parawhen='MIDNIGHT'
ewhen='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
ePyThreadState.on_delete_data
foram removidos.gh-113538: Adiciona os métodos
asyncio.Server.close_clients()
easyncio.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-112948: Torna a conclusão de
pdb
semelhante ao Python REPLgh-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étodoshutdown()
.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 deconcurrent.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 gerarOSError
. 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 deunittest.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
, poisCleanImport
não remove módulos importados durante o contexto. Use-o em testes importlib.resources para evitar deixarmod
por aí para impedir testes importlib.metadata.
Construção¶
Windows¶
gh-117267: Garante que
DirEntry.stat().st_ctime
se comporte consistentemente comos.stat()
durante o período de descontinuação dest_ctime
contendo o mesmo valor quest_birthtime
. Após o período de descontinuação,st_ctime
será o tempo de alteração de metadados (ou indisponível por meio deDirEntry
), e apenasst_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ógioQueryPerformanceCounter()
para ter uma resolução melhor que 1 us, em vez do relógioGetTickCount64()
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óriocpython-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 paraPyUnstable_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
ePy_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()
ePy_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#
paraPyUnicode_FromFormat()
: formata o nome totalmente qualificado de um tipo de objeto e de um tipo: chamaPyType_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 atributotype.__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 af"{type.__module__}.{type.__qualname__}"
, outype.__qualname__
setype.__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()
ePyLong_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¶
gh-115398: Permite controlar o adiamento da nova análise Expat >=2.6.0 (CVE 2023-52425) adicionando cinco novos métodos:
gh-114572:
ssl.SSLContext.cert_store_stats()
essl.SSLContext.get_ca_certs()
agora travam corretamente o acesso ao armazenamento de certificados, quando ossl.SSLContext
é compartilhado entre várias threads.
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 Galindogh-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 Galindogh-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 objetostr
.gh-112175: Cada
PyThreadState
agora tem seu próprioeval_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 Galindogh-115154: Corrige um bug que estava fazendo com que a função
tokenize.untokenize()
manipulasse literais nomeados unicode incorretamente. Patch por Pablo Galindogh-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ãoNone
. 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-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 conjuntodocserver
.gh-116127:
typing
: implementa PEP 705 que adiciona suporte atyping.ReadOnly
paratyping.TypedDict
.gh-116325:
typing
: levantaSyntaxError
em vez deAttributeError
em referências de encaminhamento como strings vazias.gh-115957: Quando
asyncio.TaskGroup.create_task
é chamado em umasyncio.TaskGroup
inativo, a corrotina fornecida será fechada (o que impede umRuntimeWarning
).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__
comoNone
ao executar um script compdb
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 errosreplace
.gh-89547: Adiciona suporte para formulários especiais de digitação aninhada como Final[ClassVar[int]].
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
emwebbrowser
para verificar a área de trabalho. Prefira-a ao descontinuadoGNOME_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 (comowith (x() if y else z()): ...
) como sintaxe inválida sefeature_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 usandotimes()
ouCLOCK_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 chamarclock()
.gh-115809: Melhora o algoritmo para calcular quais arquivos de log revertidos devem ser excluídos em
logging.TimedRotatingFileHandler
. Agora é confiável para manipuladores semnamer
e comnamer
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()
eparse_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
emcsv
.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étodosproperty
getter()
,setter()
edeleter()
.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__
. Corrigeinspect.Signature.from_callable()
para embutidoclassmethod()
estaticmethod()
.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 eminspect.Signature.from_callable()
.gh-113942:
pydoc
não ignora mais funções globais implementadas como métodos embutidos, comoMethodDescriptorType
eWrapperDescriptorType
.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çãoValueError
quando passado um iterável vazio. Anteriormente,IndexError
era levantada.posixpath.commonpath()
agora levanta uma exceçãoTypeError
quando passadoNone
. 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 levantaValueError
, assim comopathlib.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
eVERIFY_X509_STRICT
ao contexto SSL padrão criado comssl.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 argumentostream
ausente.gh-90095: Faz .pdbrc e -c funcionarem com quaisquer comandos pdb válidos.
gh-107625: Levanta
configparser.ParsingError
dos métodosread()
eread_file()
deconfigparser.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)
ondex
é uma funçãolambda
, 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
comofilecmp.cmp()
. Patch original por Steven Ward. Aprimorado por Tobias Rautenkranzgh-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 codeccp932
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 desys.__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¶
gh-115399: Documenta CVE 2023-52425 do Expat <2.6.0 em “Vulnerabilidades em XML”.
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 comtest.bisect_cmd
para identificar testes com falha. Patch por Victor Stinner.gh-115596: Corrige
ProgramPriorityTests
emtest_os
alterando permanentemente a prioridade do processo.gh-115556: No Windows, vírgulas passadas em argumentos para
Tools\buildbot\test.bat
ePCbuild\\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 comclang-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¶
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úblicoPyCFunctionFastWithKeywords
(Python 3.13a4). Patch por Victor Stinner.gh-111418: Adiciona as macros C
PyHASH_MODULUS
,PyHASH_BITS
,PyHASH_INF
ePyHASH_IMAG
. Patch por Sergey B Kirpichev.
Python 3.13.0 alpha 4¶
Data de lançamento: 2024-02-15
Segurança¶
gh-115399: Atualiza libexpat empacotado para 2.6.0
gh-115243: Corrige possíveis travamentos em
collections.deque.index()
quando o deque é modificado simultaneamente.
Núcleo e embutidos¶
gh-112087: Para um iterador reverso vazio for, lista será reduzida para
reversed()
. Patch por Donghee Nagh-114570: Adiciona exceção
PythonFinalizationError
. Esta exceção derivada deRuntimeError
é 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 geralsys._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
efrozenset
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 paraint
.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 levantaValueError
para valores fora do intervalo válido. Anteriormente, levantavaOverflowError
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, incluindoob_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 deint
a um atributo que corresponde a um membro struct C de type T_UINT e T_ULONG. Corrige umRuntimeWarning
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 paraint
.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 emconfigure
ou--experimental-jit
para construções baseadas emPCbuild
) para construir um compilador experimental just-in-time, baseado em copy-and-patchgh-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 deDecimal
: * vazamento de memória em alguns casos raros ao usar a opção de formatoz
(coagir negativo 0) * saída incorreta ao aplicar a opção de formatoz
ao tipoF
(ponto fixo comNAN
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
ecomplex
.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éricostyping
(incluindo aliases genéricos criados usandotyping.Annotated
). Anteriormente, apenasAttributeError
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 emglob()
recursivo.gh-67837: Evita condições de corrida na criação de diretórios durante a extração simultânea em
tarfile
ezipfile
.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 definirwantobjects
como 0 não tem mais efeito. Adiciona um novo parâmetro return_ints: especificarreturn_ints=True
faz com queText.count()
sempre retorna a contagem única como um inteiro em vez de uma tupla de 1 elemento ouNone
.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 paratermios
.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__
retornamNotImplemented
se um dos comparandos fordate
e o outro fordatetime
em vez de ignorar a parte do tempo e o fuso horário ou retornar forçadamente “não igual” ou levantarTypeError
. Ele torna a comparação das subclassesdate
edatetime
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 Russogh-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
eemail.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 seutf8
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 dadosdbm.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 porxml.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 paradbm
, e torna-o o novo backend padrãodbm
. 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()
estopTest()
desbalanceadas.gh-75128: Ignora uma
OSError
emasyncio.BaseEventLoop.create_server()
quando o IPv6 estiver disponível, mas a interface não puder realmente suportá-lo.gh-114423: As entradas
_DummyThread
emthreading._active
agora são removidas automaticamente quando o thread relacionado morre.gh-114257: Descarta o erro
FileNotFound
emctypes.util.find_library()
e retorna apenasNone
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 novatty.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 manualstty(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__
emdataclasses
agora tem o primeiro argumento chamadoself
, em vez deobj
.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()
erglob()
.gh-112202: Garante que uma chamada
asyncio.Condition.notify()
não seja perdida se aTask
despertada for cancelada simultaneamente ou encontrar qualquer outro erro.gh-113951: Corrige o comportamento dos métodos
tag_unbind()
das classestkinter.Text
etkinter.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
eQUOTE_STRINGS
emcsv.reader()
.gh-113225: Acelera
pathlib.Path.walk()
usandoos.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()
edatetime.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
usandopdb
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ódulomimetypes
.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: chamarw.wm_attributes(return_python_dict=True)
retorna os atributos como um dict em vez de uma tupla. Chamarw.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 diretamenteos.makedirs()
com o kwargexist_ok=True
.gh-75705: Define o envelope unixfrom em
mailbox.mbox
emailbox.MMDF
.gh-106233: Corrige o stacklevel em
InvalidTZPathWarning
durante a importação do módulozoneinfo
.gh-105102: Permita que
ctypes.Union
seja aninhado emctypes.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
comshutdown()
.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()
eos.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 encapsuladasfunctools.partialmethod
da mesma forma que oferecem suporte afunctools.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ódulocsv
em vez de reexportá-la do módulo interno_csv
e remove__doc__
decsv.__all__
.Move
csv.__version__
para o módulocsv
em vez de reexportá-lo do módulo interno_csv
e remove__version__
decsv.__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 comzinfo.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ódulogrp
.
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
eos.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¶
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¶
gh-111140: Adiciona as funções
PyLong_AsNativeBytes()
,PyLong_FromNativeBytes()
ePyLong_FromUnsignedNativeBytes()
.gh-114685:
PyBuffer_FillInfo()
agora levanta umaSystemError
se chamada comPyBUF_READ
ouPyBUF_WRITE
como sinalizadores. Esses sinalizadores devem ser usados apenas com a API CPyMemoryView_*
.gh-114685:
PyObject_GetBuffer()
agora levanta umaSystemError
se chamado comPyBUF_READ
ouPyBUF_WRITE
como sinalizadores. Esses sinalizadores devem ser usados somente com a API CPyMemoryView_*
.gh-114626: Adiciona os typedefs
PyCFunctionFast
ePyCFunctionFastWithKeywords
(idênticos aos typedefs_PyCFunctionFast
e_PyCFunctionFastWithKeywords
existentes, apenas sem um prefixo_
inicial).gh-114329: Adiciona
PyList_GetItemRef()
, que é semelhante aPyList_GetItem()
, mas retorna uma referência forte em vez de uma referência emprestada.gh-110850: Adiciona a API C de PyTime:
Tipo
PyTime_t
.Constantes
PyTime_MIN
ePyTime_MAX
.Funções
PyTime_AsSecondsDouble()
,PyTime_Monotonic()
,PyTime_PerfCounter()
ePyTime_Time()
.
Patch por Victor Stinner.
gh-112066: Adiciona
PyDict_SetDefaultRef()
: insere uma chave e um valor em um dicionário se a chave ainda não estiver presente. Isto é similar adict.setdefault()
, mas retorna um valor inteiro indicando se a chave já estava presente. Também é similar aPyDict_SetDefault()
, mas retorna uma referência forte em vez de uma referência emprestada.
Python 3.13.0 alpha 3¶
Data de lançamento: 2024-01-17
Segurança¶
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 Galindogh-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-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-112943: Calcula corretamente os deslocamentos de coluna final para tokens multilinha no módulo
tokenize
. Patch por Pablo Galindogh-112125: Corrige
None.__ne__(None)
retornandoNotImplemented
em vez deFalse
.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()
ebinascii.crc32()
poderiam produzir resultados incorretos em entradas de vários gigabytes. Incluindo ao usarzipfile
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 tipoT
emraise 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 quegetcoroutinestate()
egetgeneratorstate()
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ânciacomplex
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
emsocket.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 usandod
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 porzipfile.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()
dotkinter
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
emmap.MAP_TPRO
. Todos eles são sinalizadoresmmap(2)
no macOS.gh-113848: Os gerenciadores de contexto
asyncio.TaskGroup()
easyncio.timeout()
agora manipulam as subclassesCancelledError
, bem comoCancelledError
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 blocoasyncio.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
aimportlib.resources
(para que o código esteja em conformidade com a documentação)gh-111693:
asyncio.Condition.wait()
agora levanta novamente a mesma instânciaCancelledError
que pode ter causado sua interrupção. Corrigida a condição de corrida emasyncio.Semaphore.acquire()
quando interrompido com umaCancelledError
.gh-113791: Adiciona
CLOCK_MONOTONIC_RAW_APPROX
eCLOCK_UPTIME_RAW_APPROX
atime
no macOS. Esses são relógios disponíveis no macOS 10.12 ou posterior.gh-112932: Restaura a capacidade de
zipfile
deextractall
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 privadaPurePathBase
.gh-113594: Corrige
UnicodeEncodeError
ememail
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
. Passarallow_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
epickletools
.gh-113537: Suporte a cargas de
str
emplistlib.loads()
.gh-89850: Adiciona implementações padrão dos métodos
pickle.Pickler.persistent_id()
epickle.Unpickler.persistent_load()
na implementação C. Chamarsuper().persistent_id()
esuper().persistent_load()
em subclasses da implementação C das classespickle.Pickler
epickle.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 pormultiprocessing.manager
emultiprocessing.resource_sharer
para reduzir significativamente o risco de obter um erro de conexão recusada ao criar ummultiprocessing.connection.Connection
para eles.gh-113568: Levanta eventos de auditoria de
pathlib.Path
e não de sua classe base privadaPathBase
.gh-113543: Garante que
webbrowser.MacOSXOSAScript
envie o evento de auditoriawebbrowser.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ódulopyexpat
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 estruturaXMLParser
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 comoruntime-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
emplistlib
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 transformaStopIteration
emRuntimeError
em vez de travar ou apresentar outro comportamento incorreto. Contribuição de patch de Jamie Phan.gh-113225: Acelera
pathlib.Path.glob()
usandoos.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çãoos.posix_spawn()
comclose_fds=True
em plataformas ondeposix_spawn_file_actions_addclosefrom_np
está disponível. Patch por Jakub Kulik.gh-113199: Faz
http.client.HTTPResponse.read1
ehttp.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 emos.chmod()
no Windows.gh-113188: Corrige
shutil.copymode()
eshutil.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 aceitaenv=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
parabatched()
no móduloitertools
.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
, adicionadoEntryPoints.__repr__
, introduzido o scriptdiagnose
, adicionada a propriedadeDistribution.origin
e removido o acessoEntryPoint
descontinuado por índice numérico (comportamento de tupla).gh-59616: Adiciona suporte para
os.lchmod()
e o argumento follow_symlinks emos.chmod()
no Windows. Observe que o valor padrão de follow_symlinks emos.lchmod()
éFalse
no Windows.gh-112559:
signal.signal()
esignal.getsignal()
não chamam maisrepr
em manipuladores chamáveis.asyncio.run()
easyncio.Runner.run()
não chamam maisrepr
nos resultados da tarefa. Patch por Yilei Yang.gh-112962: As funções do módulo
dis
adicionam informações de cache à instânciaInstruction
em vez de criar instâncias falsasInstruction
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
eLOG_LAUNCHD
ao módulosyslog
, todos eles constantes usados no macOS.gh-112800: Corrige
asyncio
SubprocessTransport.close()
para não lançarPermissionError
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 deshutil.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 aprotocolos runtime-checkable
simples em cerca de 6%. Patch por Alex Waygood.gh-74690: Aceleração de verificações de
isinstance()
em cerca de 20% paraprotocolos verificáveis em tempo de execução
que têm apenas um membro chamável. Aceleração de verificações deissubclass()
para esses protocolos em cerca de 10%. Patch por Alex Waygood.gh-112645: Remoção de erro de descontinuação ao passar
onerror
parashutil.rmtree()
.gh-112640: Adiciona o parâmetro
kwdefaults
atypes.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 emasyncio.create_task()
.gh-112618: Corrige um bug de armazenamento em cache relacionado a
typing.Annotated
.Annotated[str, True]
não é mais idêntico aAnnotated[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ápidovfork()
quando poderia devido a um bug lógico, em vez disso, voltando para o seguro, mas mais lentofork()
.Também foi corrigido um segundo bug de segurança potencial do 3.12.0. Se um valor de
extra_groups=[]
fosse passado parasubprocess.Popen
ou APIs relacionadas, a chamada de sistemasetgroups(0, NULL)
subjacente para limpar a lista de grupos não seria feita no processo filho antes deexec()
.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 emsocket.if_indextoname()
em plataformas não Windows de 64 bits.gh-112578: Corrige uma
RuntimeWarning
espúrio ao executar o módulozipfile
.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
orreadline
)gh-112328: [Enum] Make
EnumDict
,EnumDict.member_names
,EnumType._add_alias_
andEnumType._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 atyping.TypedDict
. Patch by Jelle Zijlstra.gh-101336: Add
keep_alive
keyword parameter forAbstractEventLoop.create_server()
andBaseEventLoop.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 withAttributeError
. 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 hasNone
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 atyping.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 oftraceback.TracebackException
. Addexc_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 Shawgh-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 inpydoc
to render more readable signatures that have new lines between parameters.gh-112105: Make
readline.set_completer_delims()
work with libeditgh-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 theNamedTuple
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]
inpdb
if safe_path is setgh-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’sunbind()
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 ofpdb
to the same channel as the debugger. Add tests and improve docs.gh-102988:
email.utils.getaddresses()
andemail.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: usestrict=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 withinspect.cleandoc()
before writing them. Patch by Filip Łapkiewicz.gh-82300: Add
track
parameter tomultiprocessing.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 forpathlib.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 ofitertools.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()
andgroup()
, defaulting toTrue
.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
toPatternError
for clarity, and keptre.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 aPermissionError
withNotADirectoryError
during directory cleanup. It now correctly raisesPermissionError
if errors are not ignored. Patch by Andrei Kulakov and Ken Jin.bpo-32731:
getpass.getuser()
now raisesOSError
for all failures rather thanImportError
on systems lacking the