Changelog¶
Python next¶
Дата выхода: XXXX-XX-XX
Безопасность¶
gh-118773: Исправлено создание ACL в
os.mkdir()
под Windows для корректной работы на неанглоязычных машинах.gh-118486:
os.mkdir()
в Windows теперь принимает режим0o700
, чтобы ограничить новый каталог текущим пользователем. Это исправляет CVE-2024-4030, влияющие наtempfile.mkdtemp()
в сценариях, где базовый временный каталог более разрешен, чем по умолчанию.
Ядро и встроенные модули¶
gh-119180:
classmethod()
иstaticmethod()
теперь лениво оборачивают атрибуты__annotations__
и__annotate__
своих базовых вызываемых элементов. См. PEP 649. Исправление от Jelle Zijlstra.gh-119821: Исправление выполнения annotation scopes внутри классов, когда
globals
имеет значение non-dict. Исправление от Jelle Zijlstra.gh-119740: Уберите ранее устаревшее делегирование
int()
в__trunc__()
.gh-119689: Генерируем метаданные эффекта стека для псевдоинструкций из bytecodes.c.
gh-109218:
complex()
теперь принимает строку только в качестве позиционного аргумента. Передача комплексного числа в качестве аргумента «real» или «imag» устарела; его следует передавать только в качестве одиночного позиционного аргумента.gh-119548: Добавьте команду
clear
в REPL. Исправление от Пабло Галиндоgh-111999: Исправьте подпись
str.format_map()
.gh-119560: Некорректное утверждение в бета-версии 1 было удалено. Утверждение не срабатывало, если
PyState_FindModule()
использовалось в функции init модуля расширения до того, как модуль def был инициализирован.gh-119369: Исправление тупика при удалении потока в свободно-поточной сборке, который мог возникнуть, когда GIL был включен во время выполнения.
gh-119525: Исправление тупика, связанного с кэшем
_PyType_Lookup()
в свободно-поточной сборке, когда GIL динамически включается во время выполнения.gh-119311: Исправлена ошибка, из-за которой имена в базах общих классов неожиданно искажались.
gh-119395: Исправлена ошибка, при которой имена, появляющиеся после общего класса, искажались так, как будто они находятся в общем классе.
gh-119180: Замените опкод
LOAD_ASSERTION_ERROR
наLOAD_COMMON_CONSTANT
и добавьте поддержкуNotImplementedError
.gh-119213: Не встроенные модули, построенные с помощью аргумента clinic, аварийно завершали работу, если использовались в подинтерпретаторе перед основным интерпретатором. Объекты, которые вызывали проблему из-за небрежной утечки между интерпретаторами, были исправлены.
gh-119011: Исправляет
type.__type_params__
, чтобы вернуть пустой кортеж вместо дескриптора.gh-118692: Избегайте создания ненужных экземпляров
StopIteration
для мониторинга.gh-119180: Добавьте атрибут
__annotate__
к функциям, классам и модулям как часть PEP 649. Исправление от Jelle Zijlstra.gh-119049: Исправлено отображение исходной строки для предупреждений, созданных C API, если модуль
warnings
еще не был импортирован.gh-118844: Исправление сбоев сборки при конфигурировании с использованием
--disable-gil
и--enable-experimental-jit
.gh-118921: Добавьте метод
copy()
дляFrameLocalsProxy
, который возвращает снимокdict
для локальных переменных.gh-117657: Исправление гонок данных в поле, хранящем указатель на главный поток интерпретатора, которые возникают в свободно-поточных сборках.
gh-118750: Если доступна C-версия модуля
decimal
,int(str)
теперь использует ее для асимптотически более быстрого преобразования. Однако это применимо только в том случае, если строка содержит более 2 миллионов цифр.gh-118507: Ускорение
os.path.isjunction()
иos.path.lexists()
под Windows с нативной реализацией.gh-118767: Использование
NotImplemented
в булевом контексте теперь приводит к появлениюTypeError
. Внесено Желем Зейлстра.gh-118561: Исправление состояния гонки в свободно-поточной сборке, когда
list.extend()
мог открыть неинициализированную память для одновременных читателей.gh-118263: Ускорить
os.path.splitroot()
иos.path.normpath()
с помощью прямого вызова C.gh-117558: Улучшение сообщений об ошибках, когда ожидается строка, байт или объект байтового массива длины 1.
gh-117195: Избегайте отказа утверждения для отладочных сборок при вызове
object.__sizeof__(1)
Библиотека¶
gh-119770: Сделайте константы
termios
ioctl()
константы положительными. Исправление Виктора Стиннера.gh-89727: Исправлена проблема с
shutil.rmtree()
, когда в глубоких деревьях каталогов поднималсяRecursionError
.gh-89727: Частично исправлена проблема с
shutil.rmtree()
, когда при глубоких деревьях каталогов возникала ошибкаRecursionError
. Ошибка рекурсии больше не возникает, когдаrmtree.avoids_symlink_attacks
равен false.gh-93963: Удалите устаревшие имена из
importlib.abc
, найденные вimportlib.resources.abc
.gh-119118: Исправление регрессии производительности в модуле
tokenize
за счет кэширования атрибута токенаline
и более эффективного вычисления смещения столбцов.gh-89727: Исправление проблемы с
os.fwalk()
, когда возникала ошибкаRecursionError
на глубоких деревьях каталогов, путем изменения реализации на итеративную, а не рекурсивную.gh-119594: Если вызвать pow(fractions.Fraction, x, module) с модулем не None, то в сообщении об ошибке теперь говорится о несовместимости типов, а не о том, что pow принимает только 2 аргумента. Исправление Вима Жантина-Гленна и Марка Дикинсона.
gh-119562: Удалите
ast.Num
,ast.Str
,ast.Bytes
,ast.NameConstant
иast.Ellipsis
. Все они выдавали предупреждения об устаревании с Python 3.12. Исправление от Алекса Уэйгуда.gh-119555: Перехват
SyntaxError
изcompile()
в методе runsource() InteractiveColoredConsole. Исправление от Sergey B Kirpichev.gh-117865: Улучшение времени импорта модуля
ast
за счет отсрочки импортаre
. Исправление от Jelle Zijlstra.gh-113892: Теперь метод
sock_connect
изasyncio.ProactorEventLoop
вызывает ошибкуValueError
, если данный сокет не находится в неблокирующем режиме, а также в других реализациях циклов.gh-69214: Исправьте
fcntl.ioctl()
Параметр request: используйтеunsigned long
вместоunsigned int
для параметра request вfcntl.ioctl()
, чтобы поддерживать запросы большеUINT_MAX
. Исправление Виктора Стиннера.gh-119105:
difflib
отDIffer.compare()
(а значит, иndiff
) больше не могут быть спровоцированы на поведение в кубическом времени или на неограниченную рекурсию, и в целом должны быть быстрее в обычных случаях. Результаты могут измениться в некоторых случаях, хотя это должно быть редкостью. На корректность диффов это не влияет. Некоторые похожие строки, расположенные далеко друг от друга, могут быть представлены как удаляющие одну и добавляющие другую, тогда как раньше они отображались на соседних строках вывода с разметкой, показывающей внутристрочные различия.gh-119443: Интерактивный REPL больше не работает при включенной
from __future__ import annotations
. Исправление от Jelle Zijlstra.gh-119461: Добавьте константу
socket.VMADDR_CID_LOCAL
. Исправление Виктора Стиннера.gh-117398: Объекты в C-API datetime теперь выделяются статически, что означает лучшую сохранность памяти, особенно при перезагрузке модуля. Это должно быть прозрачно для пользователей.
gh-118894:
asyncio
REPL теперь имеет те же возможности, что и PyREPL.gh-118911: В PyREPL обновлена логика
maybe-accept
, так что если пользователь дважды нажимает кнопку Enter, он может завершить блок, даже если в нем есть пробельные символы. Кроме того, теперь, когда пользователь нажимает стрелку вверх, курсор находится на последней функциональной строке. Это соответствует поведению IPython. Исправление от Aya Elsayed.gh-111201: Удалите зависимость от
readline
из нового Python REPL.gh-119189: При использовании оператора
**
илиpow()
сFraction
в качестве основания и экспоненты, которая не является рациональной, плавающей или комплексной, дробь больше не преобразуется в плавающую.gh-119174: Исправление высокого DPI, из-за которого окна turtledemo(примеры черепашьей графики) размываются Патч от Wulian233 и Terry Jan Reedy
gh-119121: Исправление ошибки NameError, возникающей в
asyncio.staggered.staggered_race
. Теперь эта функция протестирована.gh-119105:
difflib.Differ
намного быстрее для некоторых случаев, когда многие пары строк одинаково похожи.gh-119113: Исправлена проблема, из-за которой
pathlib.PurePath.with_suffix()
не поднималTypeError
, если в качестве суффикса был указанNone
.gh-118643: Исправление ошибки AttributeError в модуле
email
при повторном складывании длинного списка адресов. Также исправлено больше случаев неправильного кодирования разделителя адресов в списке адресов.gh-58933: Обеспечивает корректный возврат
pdb
в вызывающий кадр, еслиf_trace
вызывающего кадра не установленgh-82805: Поддержка расширений файлов с одной точкой в
pathlib.PurePath.suffix
и связанных с ними атрибутов и методов. Например,suffixes
вPurePath('foo.bar.')
теперь['.bar', '.']
, а не[]
. Это приводит разделение расширений файлов в соответствие сos.path.splitext()
.gh-118924: Удалите
version
иversion_info
изsqlite3
. Исправление от Хьюго ван Кеменаде.gh-118928: Запрет использования последовательности параметров с именованными заполнителями в запросах
sqlite3
. Исправление Эрленда Э. Аасланда.gh-118895: Установка атрибутов на
typing.NoDefault
теперь поднимаетAttributeError
вместоTypeError
.gh-118824: Удалите устаревшие
pty.master_open()
иpty.slave_open()
. Вместо них используйтеpty.openpty()
. Исправление Никиты Соболева.gh-118851: Аргументы
ctx
в конструкторах классов узловast
теперь по умолчанию равныast.Load()
. Исправление от Jelle Zijlstra.gh-101588: Удалите copy, deepcopy и pickle из itertools. Ранее они вызывали предупреждение об устаревании (DeprecationWarning), начиная с Python 3.12.
gh-118805: Удалите параметры type, choices и metavar из
argparse.BooleanOptionalAction
. Они были устаревшими начиная с Python 3.12.gh-118803:
typing.ByteString
иcollections.abc.ByteString
удалены. Начиная с Python 3.12, они ранее вызывалиDeprecationWarning
.gh-118798: Параметр isdst был удален из
email.utils.localtime()
. Исправление от Хьюго ван Кеменаде.gh-118760: Восстановите значение по умолчанию
tkiter.wantobjects
до1
.gh-118760: Исправление ошибок при вызове привязок Tkinter в Windows.
gh-74033: Откажитесь от поддержки передачи аргументов с ключевыми словами в
pathlib.Path
.gh-101357: Подавление всех исключений
OSError
из методовpathlib.Path.exists()
иis_*()
, а не выборки более распространенных ошибок. Новое поведение соответствуетos.path.exists()
,os.path.isdir()
и т. д. Используйтеpathlib.Path.stat()
для получения статуса файла без подавления исключений.gh-78707: Отказ от поддержки передачи дополнительных позиционных аргументов в
pathlib.PurePath.relative_to()
иis_relative_to()
.gh-118772: Позволяет экземплярам
typing.TypeVar
без значения по умолчанию следовать за экземплярами без значения по умолчанию в некоторых случаях. Исправление от Jelle Zijlstra.gh-118673: Удалены исполняемые биты и shebang из модулей stdlib.
gh-110863:
os.path.realpath()
теперь подавляет любыеOSError
изos.readlink()
, когда режим strict отключен (по умолчанию).gh-118033: Исправление того, что
dataclasses.dataclass()
не создавал слот__weakref__
при подклассификацииtyping.Generic
.gh-113978: Игнорируйте предупреждения о завершении текста внутри REPL.
gh-103956: Исправление отсутствия символов новой строки в выводе модуля
trace
, когда трассировка строк включена, но строка исходного кода для текущего кадра недоступна.gh-92081: Исправление отсутствия пробелов в заголовках писем, когда пробелы смешаны с закодированными 8-битными символами.
gh-103194: Подготовьте Tkinter к изменениям C API в Tcl 8.7/9.0, чтобы избежать неожиданного возврата
_tkinter.Tcl_Obj
вместоbool
,str
,bytearray
илиint
.gh-87106: Исправлена обработка в
inspect.Signature.bind()
аргументов-ключей, имеющих то же имя, что и позиционные аргументы, когда присутствует переменный аргумент-ключ (например,**kwargs
).gh-103134: Добавьте дополнительные методы к proxy objects в модуль
multiprocessing
:clear()
иcopy()
для проксиlist
.fromkeys()
,reversed(d)
,d | {}
,{} | d
,d |= {'b': 2}
для проксиdict
.
bpo-15987: Реализована функция
ast.compare()
для сравнения двух AST. Исправление сделано Батуханом Таская при некоторой помощи Джереми Хилтона.gh-67693: Исправьте
urllib.parse.urlunparse()
иurllib.parse.urlunsplit()
для URI, путь которых начинается с нескольких косых черт и не имеет авторитета. Основано на исправлении Ашвина Рамасвами.
Тесты¶
gh-119273: Python test runner больше не запускает тесты, использующие TTY (например, test_ioctl) в группе процессов (используя
setsid()
). Ранее тесты, использующие TTY, пропускались. Исправление Виктора Стиннера.gh-119050: Бегунок для тестирования regrtest: Добавлена поддержка XML в программу проверки рефлексии (опция -R). Исправление Виктора Стиннера.
Построить¶
gh-119729: В POSIX-системах имена файлов pkg-config (
.pc
) теперь включают флаги ABI, которые могут включать отладочный («d») и свободно-поточный («t»). Например: *python-3.14.pc
(сборка по умолчанию, без отладки) *python-3.14d.pc
(сборка по умолчанию, с отладкой) *python-3.14t.pc
(сборка со свободным потоком)gh-115119: Возврат к поставляемому libmpdec, если системная версия не может быть найдена.
gh-119132: Обновите
sys.version
, чтобы определить, является ли сборка сборкой по умолчанию или сборкой с использованием свободных потоков. Исправление от Donghee Na.gh-118836: Исправьте
AssertionError
, если при сборке с--enable-experimental-jit
компилятор выдает секциюSHT_NOTE
.gh-118943: Исправление возможного состояния гонки, влияющего на параллельные сборки, настроенные с помощью
--enable-experimental-jit
, когда ошибки компиляции могли быть вызваны неполностью сгенерированным заголовочным файлом.
Windows¶
gh-119690: Добавлена поддержка Юникода и исправлены события аудита для
_winapi.CreateNamedPipe
.gh-111201: Добавьте поддержку нового pyrepl в Windows
gh-119070: Исправлена работа
py.exe
с шебангами типа/usr/bin/env python3.12
, которые ранее интерпретировались какpython3.exe
вместоpython3.12.exe
.gh-117505: Устраняет проблему, связанную с тем, что программа установки Windows не запускала ensurepip в полностью изолированном окружении. Это могло привести к неожиданному взаимодействию с пользовательскими сайт-пакетами.
gh-118209: Избегайте сбоев в
mmap
на Windows, когда отображаемая память недоступна из-за ошибок файловой системы или нарушений доступа.gh-116145: Обновление поставляемого Tcl/Tk до версии 8.6.14.
C API¶
gh-119775: Создание
immutable types
с мутабельными базами было устаревшим с версии 3.12 и теперь вызывает ошибкуTypeError
.gh-119585: Исправление сбоя, когда состояние потока, созданное с помощью
PyGILState_Ensure()
, вызывает деструктор, который во времяPyThreadState_Clear()
обращается кPyGILState_Ensure()
иPyGILState_Release()
. Это может произойти в свободно-поточной сборке или при использовании локальных переменных, деструкторы которых вызываютPyGILState_Ensure()
.gh-119613: Макросы
Py_IS_NAN
,Py_IS_INFINITY
иPy_IS_FINITE
- soft deprecated.gh-119336: Восстанавливает удаленную функцию
_PyLong_NumBits()
. Она используется проектом pywin32. Автор патча - Итан Смитgh-119247: Добавлены макросы
Py_BEGIN_CRITICAL_SECTION_SEQUENCE_FAST
иPy_END_CRITICAL_SECTION_SEQUENCE_FAST
, чтобы сделать возможным безопасное использование PySequence_Fast API в свободном потоке, и обновлен str.join для работы без использования GIL.gh-111389: Добавьте константу
PyHASH_MULTIPLIER
: простой множитель, используемый в строковых и различных других хэшах. Патч от Виктора Стиннера.gh-118771: Несколько объявлений языка C с именами, не начинающимися с префиксов
Py
или_Py
, которые по ошибке были добавлены в альфа- и бета-версии 3.13, были перемещены во внутренние заголовки.gh-116984: Сделать mimalloc includes относительным к текущему файлу, чтобы избежать необходимости встраивания или расширения включать
Internal/mimalloc
, если они уже включают внутренние заголовки CPython.gh-118789: Восстановите
_PyWeakref_ClearRef
, который был ранее удален в Python 3.13 alpha 1.gh-97588: Исправлено создание битовых полей в структурах и союзах
ctypes
. Поля больше не перекрываются.
Python 3.13.0 beta 1¶
Дата выхода: 2024-05-08
Безопасность¶
gh-116741: Обновление libexpat до версии 2.6.2
gh-117233: Обнаружение поддержки BLAKE2, SHA3, Shake и усеченного SHA512 в библиотеке libcrypto, похожей на OpenSSL, во время сборки. Это позволяет использовать
hashlib
с библиотеками, которые не поддерживают все алгоритмы, которые поддерживает OpenSSL.
Ядро и встроенные модули¶
gh-118414: Добавьте инструментальные опкоды в утверждение YIELD_VALUE для отслеживания случаев.
gh-117953: Когда встроенный модуль или модуль расширения импортируется в первый раз при активном подынтерпретаторе, функция init модуля теперь сначала запускается основным интерпретатором, прежде чем импорт продолжится в подынтерпретаторе. Следовательно, теперь однофазные модули инициализации терпят неудачу в изолированном суб-интерпретаторе без функции инициализации, запущенной в этом интерпретаторе, тогда как раньше она запускалась в суб-интерпретаторе перед неудачей, потенциально оставляя глобальное состояние и обратные вызовы и оставляя модуль в несогласованном состоянии.
gh-117549: Не используйте синтаксис обозначенных инициализаторов в инлайн-функциях во внутренних заголовках. Они создают проблемы для пользователей C++ или MSVC, которые еще не используют последний стандарт C++ (C++20). Хотя внутренний файл pycore_backoff.h включен (косвенно, через pycore_code.h) в некоторые ключевые программы сторонних разработчиков, которые делают это для скорости.
gh-95382: Улучшение производительности
json.dumps()
иjson.dump()
при использовании аргумента indent. В зависимости от данных кодирование с помощьюjson.dumps()
с indent может быть в 2-3 раза быстрее.gh-116322: В сборках
--disable-gil
GIL будет включен при загрузке модулей расширения C. Если модуль указывает, что он поддерживает работу без GIL, GIL будет отключен после завершения загрузки. В противном случае GIL останется включенным до конца жизни интерпретатора. Это поведение не применяется, если GIL был явно включен или выключен с помощьюPYTHON_GIL
или-Xgil
.gh-118513: Исправление неправильного
UnboundLocalError
, когда два понимания в одной функции ссылаются на одно и то же имя, но в одном понимании имя связано, а в другом является неявным глобальным.gh-118518: Позволяет поддержке perf в Linux работать без фрейм-указателей, используя расширенную поддержку JIT в perf. Функция активируется при использовании переменной окружения
PYTHON_PERF_JIT_SUPPORT
или при запуске Python с-Xperf_jit
. Исправление от Pablo Galindo.gh-117514: Добавьте функцию
sys._is_gil_enabled()
, которая возвращает, включен ли GIL в данный момент. В сборке по умолчанию она всегда возвращаетTrue
, потому что GIL всегда включен. В сборке со свободным потоком она может возвращатьTrue
илиFalse
.gh-118164: Разорвите цикл между Python-реализацией модуля
decimal
и Python-кодом для преобразования целых чисел в строки. Также оптимизируйте преобразование целых чисел в строки для значений в диапазоне от 9_000 до 135_000 десятичных цифр.gh-118473: Исправьте, чтобы
sys.set_asyncgen_hooks()
не устанавливался частично при поднятииTypeError
.gh-118465: Компилятор заполняет новое поле
__firstlineno__
класса номером первой строки определения класса.gh-118492: Исправление проблемы, когда при запуске финализатора кэш типов мог раскрывать ранее использовавшийся атрибут.
gh-117714: обновите
async_generator.athrow().close()
иasync_generator.asend().close()
, чтобы закрыть свои секции базового генератора asyncgh-111201: Интерпретатор interactive теперь реализован на языке Python, что позволяет использовать ряд новых возможностей, таких как цвета, многострочный ввод, просмотр истории и режим вставки. Внесено Пабло Галиндо, Лукашем Ланга и Лисандросом Николау на основе кода из проекта PyPy.
gh-74929: Реализация PEP 667: преобразуйте
FrameType.f_locals
иPyFrame_GetLocals()
, чтобы они возвращали прокси-объект с возможностью записи, когда фрейм ссылается на функцию или понимание.gh-116767: Исправление сбоя в компиляторе на „async with“, имеющем много менеджеров контекста.
gh-118335: Измените способ использования интерпретатора второго уровня. Вместо того чтобы запускать Python с
-X uops
или устанавливать переменную окруженияPYTHON_UOPS=1
, теперь этот выбор делается во время сборки с помощью конфигурации--enable-experimental-jit=interpreter
.**Осторожно! ** Это изменяет переменную окружения для включения или отключения микроопераций на
PYTHON_JIT
. СтараяPYTHON_UOPS
больше не используется.gh-118306: Обновление JIT-компиляции для использования LLVM 18
gh-118160: Annotation scopes внутри классов теперь могут содержать осмысления. Однако во время выполнения такие понимания не вставляются в родительскую область видимости. Исправление от Jelle Zijlstra.
gh-118272: Исправлена ошибка, при которой
generator.close
не освобождал локали генераторного кадра.gh-118216: Не учитывайте импорт
__future__
с точками перед именем модуля.gh-118074: Убедитесь, что объекты-исполнители в массиве COLD_EXITS не предполагаются как GC-совместимые (что привело бы к доступу к байтам вне объекта).
gh-107674: Ленивая загрузка номера строки кадра для повышения производительности трассировки
gh-118082: Улучшено сообщение
SyntaxError
для импорта без имен, как в случаяхfrom x import
иimport
. Теперь оно указывает пользователям, чтоimport
ожидает, что после него будет хотя бы одно имя.gh-118090: Улучшите сообщение
SyntaxError
для пустых скобок типа param.gh-102511: Ускорьте
os.path.splitroot()
с помощью нативной реализации.gh-117958: Добавлен метод
get_jit_code()
для доступа к JIT-компилированному машинному коду из UOp-исполнителя, когда включен экспериментальный JIT. Исправление Энтони Шоу.gh-117901: Добавляет возможность для codegen компилятора сохранять вложенные последовательности инструкций для интроспекции.
gh-116622: Перенаправление stdout и stderr в системный журнал при встраивании в приложение для Android.
gh-109118: annotation scope внутри диапазонов классов теперь могут содержать лямбды.
gh-117894: Запретить повторное использование объектов
agen.aclose()
после.throw()
.gh-117881: предотвращение одновременного доступа к асинхронному генератору с помощью athrow().throw() или asend().throw()
gh-115874: Исправлена возможная ошибка сегментации при сборке мусора для объектов
_asyncio.FutureIter
.gh-117536: Исправьте
RuntimeWarning
при вызовеagen.aclose().throw(Exception)
.gh-117755: Исправление аллокатора mimalloc при выделении огромного количества памяти (около 8 589 934 592 ГБ) на s390x. Исправление от Виктора Стиннера.
gh-117750: Исправлена проблема, из-за которой dict объекта при очистке рассинхронизировался с его внутренними значениями.
obj.__dict__.clear()
теперь очищает внутренние значения, но оставляет dict прикрепленным к объекту.gh-117431: Улучшите производительность следующих методов
bytes
иbytearray
, адаптировав их к соглашению о вызовеMETH_FASTCALL
:count()
find()
index()
rfind()
rindex()
gh-117709: Ускоряет вызовы
str()
с аргументом только с позицией, используя соглашение PEP 590vectorcall
. Исправление Эрленда Аасланда.gh-117680: Дайте
_PyInstructionSequence
интерфейс Python и используйте его в тестах.gh-115776: Статически выделенные объекты, по определению, бессмертны, поэтому должны быть помечены как таковые, независимо от того, находятся ли они в модулях расширения или нет.
gh-117641: Ускорение
os.path.commonpath()
на Unix.gh-117636: Ускорение
os.path.join()
.gh-117607: Ускорение
os.path.relpath()
.gh-117385: Удалите необработанные события
PY_MONITORING_EVENT_BRANCH
иPY_MONITORING_EVENT_EXCEPTION_HANDLED
изsys.settrace()
.gh-116322: Модули расширения могут указать среде выполнения, что они могут работать без GIL. Многофазные модули инициализации делают это, вызывая
Py_MOD_GIL_NOT_USED
для слотаPy_mod_gil
, а однофазные модули инициализации вызываютPyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED)
из своей функции инициализации.gh-116129: Реализуйте PEP 696, добавив поддержку значений по умолчанию для параметров типа. Исправление от Jelle Zijlstra.
gh-93502: Добавьте в C-API две новые функции,
PyRefTracer_SetTracer()
иPyRefTracer_GetTracer()
, которые позволяют отслеживать создание и уничтожение объектов так же, как это делает модульtracemalloc
. Исправление от Пабло Галиндоgh-107674: Значительно улучшена производительность
sys.settrace()
.gh-95754: Улучшите сообщение об ошибке, когда скрипт, затеняющий модуль из стандартной библиотеки, вызывает появление
AttributeError
. Аналогично, улучшите сообщение об ошибке, когда скрипт, затеняющий сторонний модуль, пытается получить доступ к атрибуту этого стороннего модуля во время инициализации.gh-99180: Устранение неинформативных индикаторов отказов в операторах
return
и простыхassignment
. Исправление Пабло Галиндо.gh-105879: Разрешите передавать аргументы globals и locals в
exec()
иeval()
в качестве ключевых слов.
Библиотека¶
gh-118418: Если вы не передадите значение новому параметру type_params из
typing._eval_type()
илиtyping.ForwardRef._evaluate()
, теперь будет выдаваться сообщениеDeprecationWarning
. (Использовать любую из этих частных и недокументированных функций не рекомендуется, но непередача значения параметруtype_params
может привести к некорректному поведению на Python 3.12 или более новых версиях).gh-118660: Добавляет необязательный второй параметр типа к
typing.ContextManager
иtyping.AsyncContextManager
, представляющий типы возврата__exit__()
и__aexit__()
соответственно. По умолчанию этот параметр принимает значениеbool | None
.gh-118650: Модуль
enum
позволяет методу с именем_repr_*
быть определенным на типахEnum
.gh-118648: Добавьте параметр типа по умолчанию к
typing.Generator
иtyping.AsyncGenerator
.gh-101137: Тип Mime
text/x-rst
теперь поддерживаетсяmimetypes
.gh-118164: Python-реализация модуля
decimal
могла зависнуть в относительно небольших по мощности случаях (например,2**117
), если точность контекста была установлена на очень большое значение. Теперь для проверки точности результатов используется другой метод, не требующий вычисления10**precision
(которое может оказаться слишком большим для вычисления).gh-111744:
breakpoint()
иpdb.set_trace()
теперь попадают в отладчик сразу после вызова, а не перед выполнением следующей строки.gh-118406: Добавьте подпись для объектов
sqlite3.Connection
.gh-101732: Используйте функцию времени openssl, совместимую с Y2038, если она доступна.
gh-118404: Исправьте
inspect.signature()
для несравнимых вызываемых элементов.gh-118402: Зафиксируйте
inspect.signature()
для результата вызоваfunctools.cmp_to_key()
.gh-116622: В Android
sysconfig.get_platform
теперь возвращает формат, указанный PEP 738.gh-118285: Позволяет указать подпись пользовательских вызываемых экземпляров типа extension атрибутом
__text_signature__
. Укажите сигнатуры экземпляровoperator.attrgetter
,operator.itemgetter
иoperator.methodcaller
.gh-118314: Исправление краевого случая в строгом режиме
binascii.a2b_base64()
, когда излишняя набивка не обнаруживалась, когда набивка не требовалась.gh-118271: Добавьте методы
PhotoImage
read()
для чтения изображения из файла иdata()
для получения данных изображения. Добавьте параметры background и grayscale в методPhotoImage
write()
.gh-118225: Добавьте метод
PhotoImage
copy_replace()
для копирования области с одного изображения на другое, возможно, с пиксельным масштабированием и/или поддискретизацией. Добавьте параметр from_coords в методыPhotoImage
copy()
,zoom()
иsubsample()
. Добавьте параметры zoom и subsample в методPhotoImage
copy()
.gh-118221: Исправлена ошибка, из-за которой
sqlite3.Connection.iterdump()
мог не работать, если использовался пользовательскийrow factory
. Исправление от Эрленда Аасланда.gh-118013: Исправление регрессии, внесенной в gh-103193, из-за которой вызов
inspect.getattr_static()
на экземпляре приводил к сохранению сильной ссылки на класс этого экземпляра во внутреннем кэше модуляinspect
. Это приводило к непредвиденному расходу памяти, если класс создавался динамически, класс содержал сильные ссылки на другие объекты, которые занимали значительный объем памяти, а кэш содержал единственную сильную ссылку на класс. Исправление регрессии приводит к замедлению работыgetattr_static()
, но функция все равно должна быть значительно быстрее, чем в Python 3.11. Автор исправления - Алекс Уэйгуд.gh-118218: Ускорение
itertools.pairwise()
в общем случае до 1,8x.gh-117486: Улучшено поведение пользовательских подклассов
ast.AST
. Теперь такие классы не требуют изменений в обычном случае, чтобы соответствовать изменениям в поведении модуляast
в Python 3.13. Исправление от Jelle Zijlstra.gh-90848: Исправлена
unittest.mock.create_autospec()
для настройки родительского mock с аргументами в виде ключевых слов.gh-118168: Исправлена некорректная подстановка аргументов при использовании
typing.Unpack
со встроеннымtuple
.typing.Unpack
теперь вызываетTypeError
при использовании с некоторыми недопустимыми типами. Исправление от Jelle Zijlstra.gh-118131: Добавляет интерфейс командной строки для модуля
random
. Исправление авторства Хьюго ван Кеменаде.gh-118107: Исправление
zipimport
чтения файлов ZIP64 со слишком большими или смещенными файловыми записями.gh-117535: Измените неизвестное имя файла
warnings
сsys
на<sys>
, чтобы уточнить, что это не настоящее имя файла.gh-114053: Исправление ошибочного
NameError
при вызовеtyping.get_type_hints()
на классе, который использовал параметры типа PEP 695 в модуле, имеющемfrom __future__ import annotations
в верхней части файла. Исправление от Alex Waygood.gh-116931: Добавить параметр fileobj проверка на
tarfile.TarFile.addfile()
gh-117995: Не поднимайте
DeprecationWarning
, когда sequence параметров используется для связывания индексированных, безымянных держателей. См. также gh-100668.gh-80361: Исправьте ошибку TypeError в
email.Message.get_payload()
, когда кодовая система имеет кодировку RFC 2231.gh-86650: Исправление IndexError при разборе некоторых писем с недопустимым Message-ID (включая одноразовые адреса, сгенерированные Microsoft Outlook).
gh-117691: Улучшены сообщения об ошибках, выдаваемые предупреждениями об устаревании
tarfile
, относящимися к PEP 706. Если аргументfilter
не указан вextract()
илиextractall
, предупреждение об устаревании теперь указывает на строку в коде пользователя, где была вызвана соответствующая функция. Исправление Алекса Уэйгуда.gh-115060: Ускорьте
pathlib.Path.glob()
, отказавшись от начального коллаis_dir()
. В результате этого измененияglob()
больше не может повышатьOSError
.gh-77102: Модуль
site
теперь сначала разбирает файл.pth
с UTF-8, а затем locale encoding, если случитсяUnicodeDecodeError
. Ранее он поддерживал только кодировку локали.gh-76785: Мы раскрыли низкоуровневый модуль
_interpreters
ради реализации в PyPI модуля PEP 734. Иногда он был доступен как модуль_xxsubinterpreters
и ранее использовался только для тестирования. По большей части его следует считать внутренним модулем, как и_thread
и_imp
. См. https://discuss.python.org/t/pep-734-multiple-interpreters-in-the-stdlib/41147/26.gh-115060: Ускоряет
pathlib.Path.glob()
, не сканируя каталоги на наличие сегментов шаблона, не являющихся диковыми символами.gh-117727: Ускорение
pathlib.Path.iterdir()
за счет внутреннего использованияos.scandir()
.gh-117586: Ускорьте
pathlib.Path.walk()
за счет внутренней работы со строками.gh-117722: Измените новую поддержку нескольких разделителей в
asyncio.Stream.readuntil()
, чтобы она принимала только кортежи разделителей, а не произвольные итерационные таблицы.gh-117692: Исправлена ошибка, когда
doctest.DocTestFinder
не справлялся с обернутымbuiltin_function_or_method
.gh-117348: Значительно восстановлена производительность конфигпарсера при импорте за счет отказа от использования классов данных.
gh-117663: Исправьте
_simple_enum
для обнаружения псевдонимов, когда присутствует несколько аргументов, но только один из них является значением-членом.gh-117618: Поддержите
package.module
какfilename
дляbreak
командыpdb
.gh-102247: перечисление кодов статуса с константами в http.HTTPStatus обновлено, чтобы включить имена из RFC9110. Этот RFC включает некоторые HTTP-статусы, ранее использовавшиеся только для WEBDAV, и присваивает им более общие имена.
Старые константы сохраняются для обратной совместимости.
gh-117586: Ускорьте
pathlib.Path.glob()
за счет внутренней работы со строками.gh-117225: Добавляет цвет в вывод doctest. Исправление от Хьюго ван Кеменаде.
gh-117566:
ipaddress.IPv6Address.is_loopback()
теперь будет возвращатьTrue
для IPv4-маппированных loopback-адресов, т.е. адресов в адресном пространстве::ffff:127.0.0.0/104
.gh-117546: Исправлена проблема, из-за которой
os.path.realpath()
переставал разрешать симлинки после того, как встречал цикл симлинка на POSIX.gh-116720: Улучшено поведение
asyncio.TaskGroup
, когда внешняя отмена сталкивается с внутренней отменой. Например, когда две группы задач вложены друг в друга и обе одновременно сталкиваются с исключением в дочерней задаче, было возможно, что внешняя группа задач будет вести себя неправильно, поскольку ее внутренняя отмена была поглощена внутренней группой задач.В случае, когда группа задач отменяется извне и также должна поднять
ExceptionGroup
, она теперь будет вызывать методcancel()
родительской задачи. Это гарантирует, чтоasyncio.CancelledError
будет поднят при следующемawait
, так что отмена не будет потеряна.Дополнительным преимуществом этих изменений является то, что группы задач теперь сохраняют счетчик отмен (
asyncio.Task.cancelling()
).Для обработки некоторых угловых случаев
asyncio.Task.uncancel()
теперь может сбрасывать недокументированный флаг_must_cancel
, когда счетчик отмены достигает нуля.gh-117516: Добавьте
typing.TypeIs
, реализовав PEP 742. Исправление от Jelle Zijlstra.gh-117503: Исправление поддержки не-ASCII имен пользователей в байтовых путях в
os.path.expanduser()
на Posix.gh-117394:
os.path.ismount()
теперь работает в 2-3 раза быстрее, если у пользователя есть права.gh-117313: При повторном складывании сообщений
email
используйте в качестве разделителей строк только'\n'
,'\r'
и'\r\n'
. Сохраните управляющие символы'\v'
,'\f'
,'\x1c'
,'\x1d'
и'\x1e'
и разделители строк Юникода'\x85'
,'\u2028'
и'\u2029'
как есть.gh-117142: Преобразуйте
_ctypes
в многофазную инициализацию (PEP 489).gh-66543: Добавьте функцию
mimetypes.guess_file_type()
, которая работает с путем к файлу. Передача пути к файлу вместо URL вguess_type()
- это soft deprecated.gh-68583: webbrowser CLI: замените getopt на argparse, добавьте длинные опции. Исправление от Хьюго ван Кеменаде.
gh-116871: Предложения имен для
AttributeError
иImportError
теперь включают имена с подчеркиванием, только если исходное имя было подчеркнуто.gh-116023: Не показывать пустые поля (значение
None
или[]
) вast.dump()
по умолчанию. Добавьте параметрshow_empty=False
, чтобы опционально показывать их.gh-115961: Добавлены атрибуты
name
иmode
для сжатых и архивированных файлоподобных объектов в модуляхbz2
,lzma
,tarfile
иzipfile
. Значение атрибутаmode
в модулеgzip.GzipFile
было изменено с целого (1
или2
) на строку ('rb'
или'wb'
). Значение атрибутаmode
читаемого файлоподобного объекта, возвращаемого командойzipfile.ZipFile.open()
, было изменено с'r'
на'rb'
.gh-82062: Исправление
inspect.signature()
для корректной обработки параметров по умолчанию для методов в модулях расширения, которые используют имена, определенные в пространстве имен модуля.gh-83856: Честь
atexit
для всех методов запускаmultiprocessing
gh-113081: Выведите цветное исключение, как во встроенном трассировщике в
pdb
gh-112855: Ускоряет травление объектов
pathlib.PurePath
. Исправление Барни Гейла.gh-109617:
ncurses
: исправлен сбой, который мог произойти на macOS 13 или более ранних версиях, когда Python был собран с помощью SDK Apple Xcode 15.gh-83151: Позволило произвольным операторам и оценкам в оболочке
pdb
обращаться к локальным переменным текущего фрейма, что сделало возможным работу многоохватного кода, например генераторов или вложенных функций.gh-110209: Добавьте
__class_getitem__()
кtypes.GeneratorType
иtypes.CoroutineType
для подсказки типа. Исправление Джеймса Хилтона-Балфа.gh-108191:
types.SimpleNamespace
теперь принимает необязательный позиционный аргумент, который задает начальные значения атрибутов в виде dict или итерации пар ключ-значение.gh-62090: Исправление ошибок утверждения, вызванных пробелами в метаварах или
SUPPRESS
-ед. группами вargparse
, путем упрощения форматирования использования. Исправление Али Хамдана.gh-102402: Настройте
logging.LogRecord
для использованияtime.time_ns()
и исправьте незначительную ошибку, связанную с математикой с плавающей точкой.gh-100242: Приведите чисто питоновскую реализацию
functools.partial.__new__
в большее соответствие с C-реализацией, не проверяя всегда наличие атрибута'func'
на первом аргументеpartial
. Вместо этого и в Python-версии, и в C-версии выполняется проверкаisinstance(func, partial)
на первый аргументpartial
.gh-99730: HEAD-запросы больше не преобразуются в GET-запросы при перенаправлении в urllib.
gh-66410: Установка глобального
tkinter
модуляwantobject
в2
перед созданием объектаTk
или вызов методаwantobject()
объектаTk
с аргументом2
делает теперь аргументы обратных вызовов, зарегистрированных в модулеtkinter
, передаваемыми как различные объекты Python (int
,float
,bytes
,tuple
), в зависимости от их внутреннего представления в Tcl, а не всегдаstr
.tkinter.wantobject
теперь по умолчанию устанавливается на2
.bpo-40943: Исправление нескольких IndexError при разборе писем с усеченными Message-ID, адресом, маршрутами и т. д., например
example@
.bpo-39324: Добавьте сопоставление типов mime для .md <-> text/markdown
bpo-18108:
shutil.chown()
теперь поддерживает аргументы dir_fd и follow_symlinks.bpo-30988: Исправление разбора писем с недействительными заголовками адресов, содержащими ведущую или завершающую точку. Исправление от tsufeki.
bpo-32839: Добавьте метод
after_info()
для виджетов Tkinter.
Документация¶
gh-117928: Минимальная версия Sphinx, необходимая для документации, теперь составляет 6.2.1.
Построить¶
gh-118734: Исправляет сборку Windows при прямом вызове (не через скрипт
build.bat
) без указания значения дляUseTIER2
.gh-115119: Опция
configure
--with-system-libmpdec
теперь по умолчанию принимает значениеyes
. Копияlibmpdecimal
в комплекте будет удалена в Python 3.15.gh-117845: Исправление сборки с последними версиями libedit путем обнаружения сигнатур readline hook в configure.
gh-116622: Добавлен проект тестового стенда для запуска тестового набора на Android.
gh-117645: Увеличьте размер стека WASI с 512 КиБ до 8 МиБ и начальную память с 10 МиБ до 20 МиБ. Исправление Виктора Стиннера.
gh-115119: configure теперь использует pkg-config для обнаружения зависимостей
decimal
, если указана опция--with-system-libmpdec
.
Windows¶
gh-115119: Обновление программы установки Windows для использования libmpdecimal 4.0.0.
gh-118486:
os.mkdir()
теперь принимает режим0o700
, чтобы ограничить новую директорию текущим пользователем.gh-118347: Исправляет неустановку обновлений пусковой установки.
gh-118293: Модуль
multiprocessing
теперь передает флагSTARTF_FORCEOFFFEEDBACK
при порождении процессов, чтобы указать Windows не менять курсор мыши.gh-115009: Обновление программы установки Windows для использования SQLite 3.45.3.
gh-90329: Подавляет предупреждение, отображаемое при создании виртуальной среды, когда запрашиваемый и созданный пути отличаются только коротким (в стиле 8.3) именем. Предупреждения будут продолжать отображаться, если перекресток или симлинк в пути привел к созданию виртуальной среды в другом месте, чем было запрошено изначально.
gh-117786: Исправлена ошибка некорректного запуска виртуальных сред при создании из установки Store.
macOS¶
gh-115119: Обновите программу установки macOS для использования libmpdecimal 4.0.0.
gh-114099: использование символов препроцессора iOS стало совместимым со старыми версиями macOS SDK.
gh-115009: Обновите программу установки macOS для использования SQLite 3.45.3.
gh-91629: Используйте конфиги
~/.config/fish/conf.d
и fish_add_path для установкиPATH
при установке для оболочки Fish.
IDLE¶
bpo-34774: Использовать выбранную пользователем цветовую тему для справки => IDLE Doc.
C API¶
gh-118124: Исправьте
Py_BUILD_ASSERT
иPy_BUILD_ASSERT_EXPR
для неконстантных выражений: используйтеstatic_assert()
на C11 и новее. Исправление Виктора Стиннера.gh-110850: Добавьте «сырой» вариант функций PyTime
Патч Виктора Стиннера.
gh-117987: Восстановление функций, удаленных в Python 3.13 alpha 1:
Патч Виктора Стиннера.
gh-117929: Восстановление удаленной функции
PyEval_InitThreads()
. Патч от Виктора Стиннера.gh-117534: Улучшена логика проверки в C-реализации
datetime.datetime.fromisoformat()
, чтобы лучше справляться с недействительными годами. Исправление от Влада Ефанова.gh-68114: Исправлена работа функции skipitem() со старыми форматерами „w“ и „w#“. Они больше не поддерживаются и теперь вызывают исключение при использовании.
gh-111997: Добавьте C-API для запуска событий мониторинга.
Python 3.13.0 alpha 6¶
Дата выхода: 2024-04-09
Ядро и встроенные модули¶
gh-117648: Улучшение производительности
os.path.join()
иos.path.expanduser()
.gh-117584: Поднимите
TypeError
для непутей вposixpath.relpath()
.gh-117494: Рефакторинг структуры данных последовательности инструкций из файла compile.c в файл instruction_sequence.c.
gh-116968: Вводится унифицированный 16-битный тип счетчика обратного хода (
_Py_BackoffCounter
), общий для адаптивного специализатора уровня 1 и оптимизатора уровня 2. API, используемый для счетчиков адаптивной специализации, изменен, но поведение (как предполагается) идентично.Поведение счетчиков уровня 2 изменено:
Больше нет динамических порогов (мы никогда их не меняли).
Теперь все счетчики используют один и тот же экспоненциальный бэк-офф.
Счетчик для
JUMP_BACKWARD
начинает отсчет с 16.temperature
в боковых выходах начинает отсчет с 64.
gh-117431: Улучшите производительность следующих методов
bytes
иbytearray
, адаптировав их к соглашению о вызовеMETH_FASTCALL
:endswith()
startswith()
gh-117431: Улучшите производительность следующих методов
str
, адаптировав их к соглашению о вызовеMETH_FASTCALL
:gh-117411: Переместите
PyFutureFeatures
во внутренний заголовок и сделайте его приватным.gh-109120: Добавлена обработка некорректных звездных выражений, например
f(3, *)
. Исправление от Григорьева Семенаgh-117381: Исправьте сообщение об ошибке для
ntpath.commonpath()
.gh-117335: Raise TypeError for non-sequences for
ntpath.commonpath()
.gh-117266: Исправлены сбои в некоторых пользовательских подклассах
ast.AST
. Теперь ожидается, что такие классы будут устанавливать атрибут_field_types
.gh-99108: Обновлен
hashlib
встроенный HACL* project C-код из upstream, который мы используем для многих реализаций, когда они не присутствуют через OpenSSL в данной сборке. Это также позволяет избежать редкой возможности возникновения проблемы связывания имени символа C с одним правилом определения.gh-117108: Измените бит старого пространства у объектов в молодом поколении с 0 на gcstate->visited, чтобы у объектов, созданных во время GC, был правильно установлен бит старого пространства, если они будут перемещены в старое поколение.
gh-117108: Цикл GC теперь выбирает размер приращений на основе общего размера кучи, а не скорости создания объектов. Это гарантирует, что он будет успевать за растущей кучей.
gh-117114: Сделать
os.path.isdevdrive()
доступным на всех платформах. Для тех, которые не предлагают Dev Drives, всегда будет возвращатьсяFalse
.gh-116735: Для
INSTRUMENTED_CALL_FUNCTION_EX
установитеarg0
наsys.monitoring.MISSING
вместоNone
для событияCALL
.gh-113964: Запуск новых потоков и создание процессов через
os.fork()
теперь предотвращаются только после выхода всех недемонских потоков.gh-116626: Убедитесь, что
INSTRUMENTED_CALL_FUNCTION_EX
всегда испускаетCALL
gh-116554:
list.sort()
теперь использует больше случаев частичного упорядочивания, в частности, длинные нисходящие пробеги с вложенными пробегами с одинаковыми значениями. Теперь они распознаются как отдельные пробеги (раньше каждый блок повторяющихся значений приводил к созданию нового пробега).gh-114099: Добавлен загрузчик, который может обнаруживать модули расширения в папке Frameworks в стиле iOS.
gh-115775: Компилятор заполняет новое поле
__static_attributes__
класса именами атрибутов этого класса, доступ к которым осуществляется через self.X из любой функции в его теле.gh-115776: Массив значений, структура
PyDictValues
теперь встраивается в объект при выделении. Это обеспечивает лучшую производительность в общем случае и не так сильно снижает производительность, когда__dict__
объекта материализуется.gh-108362: Реализуйте инкрементный циклический сборщик мусора. Благодаря пошаговому сбору старого поколения отпадает необходимость в полном сканировании кучи. Это может значительно сократить максимальное время паузы для программ с большими кучами.
Сократите количество поколений с трех до двух. Старое поколение разделено на два пространства, «посещенное» и «ожидающее».
Сбор происходит в два этапа:: * Формируется приращение из молодого поколения и небольшой части посещенного пространства. * Это приращение сканируется, а выжившие перемещаются в конец посещенного пространства.
Когда место для сбора становится пустым, эти два места меняются местами.
gh-109870: Dataclasses теперь вызывает
exec()
один раз для каждого dataclass, а не один раз для каждого добавляемого метода. Это может ускорить создание класса данных на 20 %.gh-97901: Тип Mime
text/rtf
теперь поддерживаетсяmimetypes
.bpo-24612: Улучшение
SyntaxError
, возникающего, когда после оператора появляется „not“. Исправление от Пабло Галиндо
Библиотека¶
gh-117467: Сохраняйте право собственности на почтовый ящик при переписывании в
mailbox.mbox.flush()
. Исправление Тони Маунтифилда.gh-114848: Поднимайте
FileNotFoundError
, еслиgetcwd()
возвращает „(unreachable)“, что может произойти в Linux >= 2.6.36 с glibc < 2.27.gh-117459:
asyncio.asyncio.run_coroutine_threadsafe()
теперь сохраняет трассировкуCancelledError
,TimeoutError
иInvalidStateError
, которые поднимаются в корутине.gh-117337: Устраните недокументированные функции
glob.glob0()
иglob.glob1()
. Вместо них используйтеglob.glob()
и передавайте каталог в ее аргументе root_dir.gh-117348: Рефакторинг
configparser.RawConfigParser._read()
для уменьшения циклометрической сложности и улучшения понятности.gh-66449:
configparser.ConfigParser
теперь принимает неименованные секции перед именованными, если они настроены на это.gh-88014: В документации к
gzip.GzipFile
в модуле gzip объясните тип данных необязательного аргумента конструктора mtime и порекомендуйтеmtime = 0
для генерации детерминированных потоков.gh-117310: Исправлен маловероятный ранний и дополнительный
Py_DECREF
, вызывавший сбой вssl
при создании нового_ssl._SSLContext
, если CPython был собран неправдоподобно, так что список шифров по умолчанию был пуст или библиотека SSL, с которой он был связан, сообщала о сбое из своего CSSL_CTX_set_cipher_list()
. API.gh-117294: Теперь
DocTestCase
сообщается как пропущенный, если все примеры в доктесте пропущены.gh-98966: В
subprocess
поднимите более информативное сообщение, когдаstdout=STDOUT
.gh-117225: doctest: выводить «and X failed» только при ненулевом значении, не выводить «1 items» во множественном числе. Исправление от Хьюго ван Кеменаде.
gh-117205: Ускорьте
compileall.compile_dir()
на 20% при использовании многопроцессорной обработки, увеличивchunksize
.gh-117178: Исправление регрессии в ленивой загрузке самореферентных модулей, введенной в gh-114781.
gh-112383: Исправьте работу модуля
dis
с инструкциямиENTER_EXECUTOR
.gh-117182: Ленивая загрузка модулей, изменяющих свои собственные
__class__
, больше не возвращает__class__
вtypes.ModuleType
.gh-117084: Исправьте извлечение
zipfile
для записей каталогов с именем, содержащим обратные косые черты, в Windows.gh-117110: Исправлена ошибка, из-за которой подклассы
typing.Any
не могли быть инстанцированы с аргументами. Исправление Криса Фу.gh-109653: Отложенный импорт select в importlib.metadata и importlib.resources для ускорения на 14%.
gh-70647: Начните период депривации для текущего поведения
datetime.datetime.strptime()
иtime.strptime()
, которые всегда не могут разобрать строку даты сValueError
, включающую день месяца, напримерstrptime("02-29", "%m-%d")
, когда год не указан и дата приходится на 29 февраля. Это поможет избежать того, что пользователи будут находить новые ошибки каждые четыре года из-за естественного ошибочного предположения об API при разборе частичных значений даты.gh-116987: Исправлено
inspect.findsource()
для объектов кода класса.gh-114099: Измените стандартную библиотеку, чтобы учесть различия платформ iOS.
gh-90872: В Windows
subprocess.Popen.wait()
больше не вызываетWaitForSingleObject()
с отрицательным таймаутом: передавайте0
мс, если таймаут отрицательный. Исправление Виктора Стиннера.gh-116957: configparser: Не оставлять значения ConfigParser в недопустимом состоянии (хранятся в виде списка, а не строки) после того, как предыдущее чтение вызвало ошибку DuplicateSectionError или DuplicateOptionError.
gh-115538:
_io.WindowsConsoleIO
теперь выдают предупреждение, если в качестве аргумента filedescriptor передается булево значение.gh-90095: Игнорируйте пустые строки и комментарии в
.pdbrc
gh-106531: Обновили zipfile._path из zipp 3.18, обеспечив лучшую совместимость с PyPy, лучшую производительность glob для глубоко вложенных zip-файлов, а также предоставив внутренний доступ к
CompleteDirs.inject
для использования в других тестах (например, importlib.resources).gh-63207: В Windows
time.time()
теперь использует часыGetSystemTimePreciseAsFileTime()
с разрешением лучше, чем 1 us, вместо часовGetSystemTimeAsFileTime()
, которые имеют разрешение 15,6 мс. Исправление Виктора Стиннера.gh-116764: Восстановите поддержку
None
и других ложных значений в функцияхurllib.parse
parse_qs()
иparse_qsl()
. Кроме того, теперь они вызывают ошибку TypeError для ненулевых целых чисел и непустых последовательностей.gh-116811: В
PathFinder.invalidate_caches
, делегировать вMetadataPathFinder.invalidate_caches
.gh-116647: Исправление рекурсивных дочерних элементов в классах данных
gh-113171: Исправлены различные ложные срабатывания и ложные отрицательные результаты в
ipaddress.IPv4Address.is_private
(подробности см. в этих документах)
Также в соответствующих атрибутах
ipaddress.IPv4Network
иipaddress.IPv6Network
.gh-63283: В
encodings.idna
теперь допустимо любое написание префикса ACE (xn--
) с заглавной буквы. Исправление Пепийна де Воса и Закери Спитца.gh-71042: Добавьте
platform.android_ver()
, который предоставляет информацию об устройстве и ОС на Android.gh-73468: Добавлена новая функция
math.fma()
, оборачивающая операциюfma()
из C99: объединенная функция умножения-аддирования. Исправление от Марка Дикинсона и Виктора Стиннера.gh-116608: Функции
importlib.resources
is_resource()
,open_binary()
,open_text()
,path()
,read_binary()
иread_text()
являются устаревшими и поддерживают подкаталоги через несколько позиционных аргументов. Функцияcontents()
также позволяет использовать подкаталоги, но остается устаревшей.gh-116484: Измените автоматически генерируемые имена виджетов
tkinter.Checkbutton
, чтобы избежать коллизий с автоматически генерируемыми именами виджетовtkinter.ttk.Checkbutton
в одном родительском виджете.gh-114314: В
ctypes
данные ctype теперь хранятся в объектах типа напрямую, а не в подклассе dict. Это внутреннее изменение, которое не должно повлиять на использование.gh-116401: Исправьте блокировку
os.fwalk()
иshutil.rmtree()
при открытии именованной трубы.gh-71052: Реализуйте
ctypes.util.find_library()
на Android.gh-90535: Исправьте поддержку значений интервала > 1 в
logging.TimedRotatingFileHandler
дляwhen='MIDNIGHT'
иwhen='Wx'
.gh-113308: Удалите некоторые внутренние защищенные части из
uuid
:_has_uuid_generate_time_safe
,_netbios_getnode
,_ipconfig_getnode
и_load_system_functions
. Они не использовались.gh-115627: Исправьте в модуле
ssl
обработку ошибок при завершении соединения пиром. Теперь вместо ошибки EOFError выбрасывается OSError с соответствующим кодом ошибки.gh-114847: Ускорение
os.path.realpath()
на платформах, отличных от Windows.gh-114271: Исправление гонки в
threading.Thread.join()
.threading._MainThread
теперь всегда представляет главный поток основного интерпретатора.PyThreadState.on_delete
иPyThreadState.on_delete_data
были удалены.gh-113538: Добавьте методы
asyncio.Server.close_clients()
иasyncio.Server.abort_clients()
, которые позволяют более принудительно закрыть сервер asyncio.gh-85287: Изменяет кодеки Unicode, чтобы они возвращали UnicodeEncodeError или UnicodeDecodeError, а не просто UnicodeError.
gh-113548:
pdb
теперь позволяет использовать CLI-аргументы дляpdb -m
.gh-105866: Исправлена ошибка
_get_slots
, приводившая к ошибке при определении классов данных со слотами и weakref_slot.gh-96471: Добавьте завершение
asyncio.Queue
с методомshutdown()
.bpo-33533:
asyncio.as_completed()
теперь возвращает объект, который одновременно является асинхронным итератором и обычным итератором. Новый шаблон асинхронной итерации позволяет легче соотнести предыдущие задачи с их завершенными результатами. Это более близкое соответствие шаблону итерацииconcurrent.futures.as_completed()
. Автор исправления - Джастин Артур.bpo-27578:
inspect.getsource()
(и связанные с ней функции) работают с пустыми файлами модулей, возвращая'\n'
(или разумный эквивалент) вместо того, чтобы подниматьOSError
. Исправление от Kernc.bpo-37141: Принимает итерацию разделителей в
asyncio.StreamReader.readuntil()
, останавливаясь, когда встречается один из них.gh-66543: Сделайте
mimetypes.guess_type()
корректным разбор URL, содержащих только имя хоста, URL, содержащих фрагмент или запрос, и имен файлов, содержащих только UNC sharepoint, в Windows. Основано на исправлении Донг-Хи На.bpo-15010:
unittest.TestLoader.discover()
теперь сохраняет исходное значениеunittest.TestLoader._top_level_dir
и восстанавливает его в конце вызова.
Документация¶
gh-115977: Удалите ссылки на совместимость с Emscripten.
gh-114099: Добавьте руководство по платформе iOS и отметьте модули, недоступные на iOS.
gh-91565: Изменения в файлах документации и выводах конфигурации, чтобы отразить новое местоположение для сообщения об ошибках - т.е. GitHub, а не bugs.python.org.
Тесты¶
gh-83434: Отключение вывода JUnit XML (опция командной строки``–junit-xml=FILE``) в regrtest при поиске утечек ссылок (опция``-R``). Исправление Виктора Стиннера.
gh-117187: Исправление XML-тестов для ванильного Expat <2.6.0.
gh-116333: Тесты, связанные с TLS (коды ошибок и т. д.), были обновлены, чтобы более мягко относиться к определенным строкам сообщений об ошибках и поведению, как это наблюдается в форках OpenSSL BoringSSL и AWS-LC.
gh-117089: Консолидированные тесты для importlib.metadata в их собственном пакете
metadata
.gh-115979: Обновите test_importlib, чтобы он работал под WASI SDK 21.
gh-112536: Добавьте –tsan в test.regrtest для запуска тестов TSAN с разумным временем выполнения. Исправление от Donghee Na.
gh-116307: Добавлен помощник импорта
isolated_modules
, посколькуCleanImport
не удаляет модули, импортированные в контексте. Используйте его в тестах importlib.resources, чтобы не оставлятьmod
, мешающий тестам importlib.metadata.
Построить¶
Windows¶
gh-117267: Обеспечьте последовательное поведение
DirEntry.stat().st_ctime
сos.stat()
в период устареванияst_ctime
, содержащее то же значение, что иst_birthtime
. После периода устареванияst_ctime
будет временем изменения метаданных (или недоступным черезDirEntry
), и толькоst_birthtime
будет содержать время создания.gh-116195: Улучшает производительность
os.getppid()
, используя альтернативный системный API, если он доступен. Внесено vxiiduu.gh-88494: В Windows
time.monotonic()
теперь использует часыQueryPerformanceCounter()
с разрешением лучше, чем 1 us, вместо часовGetTickCount64()
, которые имеют разрешение 15,6 мс. Исправление Виктора Стиннера.gh-116773: Исправьте экземпляры
<_overlapped.Overlapped object at 0xXXX> still has pending operation at deallocation, the process may crash
.gh-91227: Исправьте реализацию Asyncio ProactorEventLoop так, чтобы отправка дейтаграммы на адрес, который не прослушивается, не препятствовала получению других дейтаграмм.
gh-115119: При сборке модуля
_decimal
перешли с вендорного кодаlibmpdecimal
на отдельно размещенный внешний пакет в репозиторииcpython-source-deps
.
C API¶
gh-87193:
_PyBytes_Resize()
теперь можно вызывать для байтовых объектов с количеством ссылок > 1, включая 1-байтовые байтовые объекты. Он создает новый байтовый объект и уничтожает старый, если количество ссылок на него > 1.gh-117021: Исправление целочисленного переполнения в
PyLong_AsPid()
на не-Windows 64-битных платформах.gh-115756:
PyCode_GetFirstFree()
теперь является ustable API и переименован вPyUnstable_Code_GetFirstFree()
. (Внесено Богданом Романюком в gh-115781)gh-116869: Добавьте
test_cext
тест: создайте расширение C для проверки того, выдает ли Python C API предупреждения компилятора C. Исправление Виктора Стиннера.gh-116869: Снова сделайте C API совместимым с флагом компилятора
-Werror=declaration-after-statement
. Исправление Виктора Стиннера.gh-116936: Добавьте
PyType_GetModuleByDef()
в ограниченный C API. Исправление Виктора Стиннера.gh-116809: Восстановление удаленной приватной функции
_PyErr_ChainExceptions1()
. Исправление от Виктора Стиннера.gh-115754: В ограниченном API C версии 3.13 получение синглтонов
Py_None
,Py_False
,Py_True
,Py_Ellipsis
иPy_NotImplemented
теперь реализовано в виде вызовов функций на уровне стабильного ABI, чтобы скрыть детали реализации. Получение этих констант по-прежнему возвращает заимствованные ссылки. Исправление Виктора Стиннера.gh-115754: Добавьте функции
Py_GetConstant()
иPy_GetConstantBorrowed()
, чтобы получить константы. Например,Py_GetConstant(Py_CONSTANT_ZERO)
возвращает strong reference к константе ноль. Исправление Виктора Стиннера.gh-111696: Добавьте поддержку форматов
%T
,%T#
,%N
и%N#
вPyUnicode_FromFormat()
: форматирование полного имени типа объекта и типа: вызовPyType_GetModuleName()
. Дополнительные сведения см. в разделе PEP 737. Исправление Виктора Стиннера.gh-111696: Добавьте функцию
PyType_GetModuleName()
для получения имени модуля типа. Эквивалентно получению атрибутаtype.__module__
. Исправление Эрика Сноу и Виктора Стиннера.gh-111696: Добавьте функцию
PyType_GetFullyQualifiedName()
, чтобы получить полное имя типа. Эквивалентноf"{type.__module__}.{type.__qualname__}"
, илиtype.__qualname__
, еслиtype.__module__
не является строкой или равно"builtins"
. Исправление Виктора Стиннера.gh-85283: Расширения
fcntl
,grp
,pwd
,termios
,_statistics
и_testconsole
Расширения на C теперь собираются с помощью limited C API. Исправление Виктора Стиннера.gh-111140: Добавьте дополнительные флаги к
PyLong_AsNativeBytes()
иPyLong_FromNativeBytes()
, чтобы позволить вызывающей стороне определить, как обрабатывать крайние случаи, связанные со значениями, которые заполняют весь буфер.gh-113024: Добавить функцию
PyObject_GenericHash()
.
Python 3.13.0 alpha 5¶
Дата выхода: 2024-03-12
Безопасность¶
gh-115398: Позволяет контролировать отсрочку репарсинга Expat >=2.6.0 (CVE-2023-52425), добавляя пять новых методов:
gh-114572:
ssl.SSLContext.cert_store_stats()
иssl.SSLContext.get_ca_certs()
теперь корректно блокируют доступ к хранилищу сертификатов, когдаssl.SSLContext
разделяется между несколькими потоками.
Ядро и встроенные модули¶
gh-116604: Соблюдение статуса сборщика мусора при косвенных вызовах через
PyErr_CheckSignals()
и прерыватель оценки. Исправление от Пабло Галиндоgh-116381: Добавить специализацию для
CONTAINS_OP
.gh-116296: Исправление возможной утечки в обработке внутренних ошибок
object.__reduce__()
.gh-115823: Правильно вычислять диапазоны ошибок в парсере при возникновении исключений
SyntaxError
, вызванных недопустимыми последовательностями байтов. Исправление от Pablo Galindogh-115778: Добавьте аннотацию
tierN
для определения инструкций в DSL-интерпретаторе.gh-115733: Исправление сбоя при вызове
next()
на итераторах исчерпанных списков.gh-115700: Этап сборки regen-cases теперь работает под Windows.
gh-115347: Исправлена ошибка, из-за которой при запуске Python с
-OO
docstring заменялся лишним NOP.gh-115323: Сделайте сообщение об ошибке более содержательным для случаев, когда
bytearray.extend()
вызывается с объектомstr
.gh-112175: Теперь у каждого
PyThreadState
есть свойeval_breaker
, что позволяет прерывать определенные потоки.gh-115154: Исправлена ошибка, из-за которой функция
tokenize.untokenize()
некорректно обрабатывала именованные литералы юникода. Исправление от Пабло Галиндоgh-112433: Добавьте возможность принудительного выравнивания
ctypes.Structure
с помощью нового атрибута_align_
в классе.gh-104090: Система отслеживания ресурсов многопроцессорной обработки теперь завершается с ненулевым кодом состояния, если была обнаружена утечка ресурсов. В противном случае он по-прежнему завершается с кодом состояния 0.
gh-105858: Улучшены конструкторы для узлов
ast
. Аргументы списочных типов теперь по умолчанию приводятся к пустому списку, если они опущены, а необязательные поля по умолчанию приводятся кNone
. У узлов AST теперь есть атрибут__annotations__
с ожидаемыми типами их атрибутов. Передача нераспознанных дополнительных аргументов в AST-узлы устарела и станет ошибкой в Python 3.15. Пропуск обязательного аргумента в AST-узле является устаревшим и станет ошибкой в Python 3.15. Исправление от Jelle Zijlstra.gh-101860: Выставить атрибут
__name__
на свойстве.gh-96497: Исправление некорректного разрешения искаженных переменных класса, используемых в выражениях присваивания в осмыслениях.
Библиотека¶
gh-116349:
platform.java_ver()
устарел и будет удален в версии 3.15. Она была практически не протестирована, имела запутанный API и была полезна только для поддержки Jython.gh-116143: Исправление гонки в pydoc
_start_server
, устраняющее окно, в котором_start_server
может вернуть поток, который «обслуживается», но без установленногоdocserver
.gh-116127:
typing
: реализуйте PEP 705, который добавляет поддержкуtyping.ReadOnly
вtyping.TypedDict
.gh-116325:
typing
: подниматьSyntaxError
вместоAttributeError
при прямых ссылках на пустые строки.gh-115957: При вызове
asyncio.TaskGroup.create_task
на неактивномasyncio.TaskGroup
данный корутин будет закрыт (что предотвратитRuntimeWarning
).gh-115978: Отключите preadv(), readv(), pwritev() и writev() на WASI.
В wasmtime для WASI 0.2 эти функции не проходят проверку test_posix (https://github.com/bytecodealliance/wasmtime/issues/7830).
gh-88352: Исправлено вычисление времени следующего переноса в обработчике
logging.TimedRotatingFileHandler
.computeRollover()
теперь всегда возвращает временную метку, большую, чем указанное время, и корректно работает при смене DST.doRollover()
больше не перезаписывает уже свернутый файл, что спасает от потери данных при запуске в полночь или при повторной смене времени при переходе на летнее время.gh-87115: Установите
__main__.__spec__
наNone
при запуске скрипта сpdb
.gh-76511: Исправление ошибки UnicodeEncodeError в
email.Message.as_string()
, возникающей, когда сообщение, заявленное как сообщение с набором символов ascii, на самом деле содержит не-ascii символы. Теперь символы, не относящиеся к ascii, заменяются символом замены U+FFFD, как в обработчике ошибкиreplace
.gh-89547: Добавлена поддержка вложенных специальных форм типизации типа Final[ClassVar[int]].
gh-116040: [Enum] исправляет вызовы побочных значений, когда второе значение является ложным; например, Cardinal(1, 0)
gh-115821: [Enum] Улучшение сообщения об ошибке при вызове super().__new__() в пользовательском __new__.
gh-85644: Используйте переменную окружения
XDG_CURRENT_DESKTOP
вwebbrowser
для проверки рабочего стола. Предпочтите ее устаревшейGNOME_DESKTOP_SESSION_ID
для обнаружения GNOME.gh-75988: Исправлено
unittest.mock.create_autospec()
для передачи вызова обернутому объекту, чтобы вернуть реальный результат.gh-115881: Исправлена проблема, из-за которой
ast.parse()
неправильно отмечал условные контекстные менеджеры (такие какwith (x() if y else z()): ...
) как недопустимый синтаксис, если передавалсяfeature_version=(3, 8)
. Это отменяет изменения в грамматике, сделанные в рамках gh-94949.gh-115886: Исправьте молчаливое усечение имени со встроенным нулевым символом в
multiprocessing.shared_memory.SharedMemory
.gh-115532: Добавьте оценку плотности ядра в модуль статистики.
gh-115714: На WASI модуль
time
больше не получает время процесса, используяtimes()
илиCLOCK_PROCESS_CPUTIME_ID
, системный API является ненадежным и, скорее всего, будет удален из WASI. Затронутые функции часов возвращаются к вызовуclock()
.gh-115809: Улучшен алгоритм вычисления того, какие свернутые файлы журнала следует удалить в
logging.TimedRotatingFileHandler
. Теперь он надежен для обработчиков безnamer
и с произвольным детерминированнымnamer
, который оставляет часть времени даты в имени файла неизменной.gh-74668:
urllib.parse
функцииparse_qs()
иparse_qsl()
теперь поддерживают байтовые аргументы, содержащие необработанные и закодированные в процентах данные не в формате ASCII.gh-67044:
csv.writer()
теперь всегда заключает в кавычки или экранирует'\r'
и'\n'
, независимо от значения линейного определителя.gh-115712: Восстановите поддержку разделителя пробела с
skipinitialspace=True
вcsv
.csv.writer()
теперь заключает в кавычки пустые поля, если разделителем является пробел и skipinitialspace равен true, и вызывает исключение, если кавычки невозможны.gh-112364: Исправлено
ast.unparse()
для обработки format_spec с"
,'
или\\
. Исправлено Фрэнком Хоффманом.gh-112997: Прекратите регистрировать потенциально чувствительные аргументы обратного вызова в
asyncio
, если не активен режим отладки.gh-114914: Исправлена проблема, из-за которой заброшенные
StreamWriter
не собирали мусор.gh-111358: Исправьте ошибку в
asyncio.BaseEventLoop.shutdown_default_executor()
, чтобы таймаут, передаваемый в coroutine, вел себя так, как ожидается.gh-115618: Исправлено некорректное уменьшение количества ссылок для аргумента
None
в методахproperty
getter()
,setter()
иdeleter()
.gh-112720: Переработайте
dis.ArgResolver
, чтобы сделать возможным подкласс и изменить способ интерпретации аргументов перехода.gh-112006: Исправление
inspect.unwrap()
для типов с дескриптором данных__wrapper__
. Исправьтеinspect.Signature.from_callable()
для встроенных модулейclassmethod()
иstaticmethod()
.gh-101293: Поддержка вызываемых типов с методом
__call__()
и типов с методами__new__()
и__init__()
, установленными на методы класса, статические методы, связанные методы, частичные функции и другие типы методов и дескрипторов вinspect.Signature.from_callable()
.gh-113942:
pydoc
больше не пропускает глобальные функции, реализованные как встроенные методы, такие какMethodDescriptorType
иWrapperDescriptorType
.gh-115256: Добавлено DeprecationWarning при обращении к атрибуту tarfile объектов TarInfo. Атрибут никогда не используется внутренне и присоединяется к TarInfo только в том случае, если tarfile открыт в режиме записи, а не в режиме чтения. Атрибут создает ненужный цикл ссылок, который может привести к повреждению, если не закрыть хэндл после записи tarfile.
gh-115197:
urllib.request
больше не разрешает имя хоста перед проверкой его на соответствие системному списку обхода прокси-серверов в macOS и Windows.gh-113812:
DatagramTransport.sendto()
теперь будут отправлять дейтаграммы нулевой длины, если их вызвать с пустым объектом bytes. Управление транспортным потоком теперь также учитывает заголовок дейтаграммы при расчете размера буфера.gh-114763: Защищает модули, загруженные с помощью
importlib.util.LazyLoader
, от условий гонки, когда несколько потоков пытаются получить доступ к атрибутам до завершения загрузки.gh-114709:
posixpath.commonpath()
теперь вызывает исключениеValueError
при передаче пустого итерабля. Ранее вызывалось исключениеIndexError
.posixpath.commonpath()
теперь вызывает исключениеTypeError
при передачеNone
. Ранее вызывалось исключениеValueError
.gh-114610: Исправлена ошибка, при которой
pathlib.PurePath.with_stem()
преобразовывала непустой суффикс пути в стебель, когда получала пустой аргумент stem. Теперь он вызываетValueError
, как иpathlib.PurePath.with_suffix()
при вызове пути с пустым стеблем при непустом аргументе suffix.gh-107361: Добавьте
ssl.VERIFY_X509_PARTIAL_CHAIN
иVERIFY_X509_STRICT
к стандартному SSL-контексту, созданному с помощьюssl.create_default_context()
.gh-112281: Разрешить создание union of types для
typing.Annotated
с нехешируемыми метаданными.gh-111775: Исправьте
importlib.resources.simple.ResourceHandle.open()
для текстового режима, добавьте недостающий аргументstream
.gh-90095: Заставьте .pdbrc и -c работать с любыми допустимыми командами pdb.
gh-107625: Вызывает
configparser.ParsingError
изread()
иread_file()
методовconfigparser.ConfigParser
, если клавиша без соответствующего значения продолжается (то есть за ней следует строка с отступом).gh-107155: Исправьте неправильный вывод
help(x)
, гдеx
- этоlambda
функция, имеющая__annotations__
словарный атрибут с"return"
ключом.gh-57141: Добавьте возможность неглубокого сравнения с
filecmp.dircmp
, как сfilecmp.cmp()
. Оригинальный патч Стивена Уорда. Улучшено Тобиасом Раутенкранцемgh-69990:
Profile.print_stats()
был улучшен для приема нескольких аргументов сортировки. Исправлено Chiu-Hsiang Hsu и Furkan Onder.gh-104061: Добавить константу
socket.SO_BINDTOIFINDEX
.gh-60346: Исправьте несоответствие ArgumentParser с parse_known_args.
gh-102389: Добавить
windows_31j
в псевдонимы для кодекаcp932
gh-72249:
functools.partial`s of :func:`repr()
было улучшено, чтобы включить имя module. Исправлено Фурканом Ондером и Анилкой Барри.gh-100985: Обновление HTTPSConnection для последовательного обертывания IPv6-адресов при использовании прокси.
gh-100884: email: исправление неправильной расстановки запятых в списках адресов на несколько строк в сочетании с кодировкой unicode.
gh-95782: Исправление того, что
io.BufferedReader.tell()
,io.BufferedReader.seek()
,_pyio.BufferedReader.tell()
,io.BufferedRandom.tell()
,io.BufferedRandom.seek()
и_pyio.BufferedRandom.tell()
могут возвращать отрицательные смещения.gh-96310: Исправьте ошибку в
argparse
, когда подавлялись все опции во взаимоисключающей группе.gh-93205: Исправлена ошибка в
logging.handlers.TimedRotatingFileHandler
, когда несколько экземпляров обработчика поворота, указывающих на файлы с одинаковым именем, но разными расширениями, конфликтовали и не удаляли нужные файлы.bpo-31116: Добавить кодировку Z85 в
base64
.bpo-44865: Добавьте недостающий вызов функции локализации в
argparse
.bpo-43952: Исправьте
multiprocessing.connection.Listener.accept()
, чтобы он принимал пустые байты в качестве authkey. Непринятие пустых байтов в качестве ключа приводит к бесконечному зависанию.bpo-42125: linecache: получить имя модуля из
__spec__
, если оно доступно. Это позволяет получить исходный код модуля__main__
, если используется пользовательский загрузчик.bpo-41122: Неправильная передача аргументов в
functools.singledispatchmethod()
теперь приводит к ошибке TypeError, а не к выходу индекса за пределы границ.bpo-40818: Asyncio REPL теперь запускает
sys.__interactivehook__
при старте. Реализацияsys.__interactivehook__
по умолчанию обеспечивает автозавершение в asyncio REPL. Автор патча - Rémi Lapeyre.bpo-33775: Добавьте текст справки „default“ и „version“ для локализации в argparse.
Документация¶
gh-115399: Документ CVE-2023-52425 из Expat <2.6.0 в разделе «Уязвимости XML».
Тесты¶
gh-71052: Добавьте исключения из тестов для поддержки запуска тестового набора на Android.
gh-71052: Включите
test_concurrent_futures
на платформах, поддерживающих многопоточность, но не многопроцессорность.gh-115796: Заставьте „_testinternalcapi.assemble_code_object“ построить таблицу исключений для объекта кода.
gh-115720: Тесты на утечки (
-R
,--huntrleaks
) теперь показывают сводку по количеству утечек, найденных в каждой итерации.gh-115122: Добавьте опцию
--bisect
в прогонщик тестов regrtest: запускайте неудачные тесты сtest.bisect_cmd
, чтобы определить неудачные тесты. Исправление Виктора Стиннера.gh-115596: Исправьте
ProgramPriorityTests
вtest_os
, постоянно изменяя приоритет процесса.gh-115556: В Windows запятые, переданные в аргументах
Tools\buildbot\test.bat
иPCbuild\\rt.bat
, теперь обрабатываются правильно.gh-115420: Исправьте перевод целей обработчиков исключений на
_testinternalcapi.optimize_cfg
.gh-115376: Исправление сегфайта в
_testinternalcapi.compiler_codegen
при плохом вводе.
Построить¶
gh-116313: Обеспечение работы сборок WASI под wasmtime 18 с примитивами WASI 0.2/preview2.
gh-71052: Измените
sys.platform
Android с"linux"
на"android"
.gh-116117: Резервный перенос PR #42 от
libb2
для исправления компиляции CPython на 32-битных Windows сclang-cl
.gh-71052: Исправление нескольких проблем сборки Android
gh-114099: Добавлен проект тестового стенда для запуска тестового набора на iOS.
gh-115350: Исправление сборки модуля ctypes с определенным параметром -DWIN32_LEAN_AND_MEAN
gh-111225: Связывание модулей расширения с libpython на Android.
gh-115737: Имя установки libPython теперь правильно задается для нефреймворковых сборок macOS.
gh-114099: Добавлены цели Makefile для поддержки компиляции сборки iOS-совместимого фреймворка.
Windows¶
gh-116012: Убедитесь, что значение
GetLastError()
сохраняется при выполнении операций GIL.gh-115582: Сборка расширений, предназначенных для свободно-поточных сборок CPython, теперь требует компиляции с
/DPy_GIL_DISABLED
вручную при обычной установке. Ожидается, что это изменится в будущих выпусках.gh-115554: Программа установки теперь более строго относится к обновлению Python Launcher для Windows. Как правило, у большинства пользователей установлена только одна пусковая установка, и они не увидят никакой разницы. Если установлено несколько пусковых установок, возможность установки пусковой установки будет отключена до тех пор, пока не будут удалены все пусковые установки, кроме одной. Понижение версии пусковой установки (которое никогда не было разрешено) теперь блокируется более явно.
gh-115543: Python Launcher для Windows теперь может определять Python 3.13 при установке из Microsoft Store и будет устанавливать Python 3.12 по умолчанию, если установлено значение
PYLAUNCHER_ALLOW_INSTALL
.
macOS¶
gh-116145: Обновление программы установки macOS до версии Tcl/Tk 8.6.14.
IDLE¶
gh-88516: На macOS отображение значка прокси в строке заголовка окна редактора в соответствии с поведением платформы.
Инструменты/демоверсии¶
C API¶
gh-114626: Добавьте снова имя
_PyCFunctionFastWithKeywords
, по ошибке удаленное в Python 3.13 alpha 4. Сохраните старое приватное имя_PyCFunctionFastWithKeywords
(Python 3.7) в качестве псевдонима для нового публичного имениPyCFunctionFastWithKeywords
(Python 3.13a4). Исправление Виктора Стиннера.gh-111418: Добавьте
PyHASH_MODULUS
,PyHASH_BITS
,PyHASH_INF
иPyHASH_IMAG
. макросы на языке C. Патч от Sergey B Kirpichev.
Python 3.13.0 alpha 4¶
Дата выхода: 2024-02-15
Безопасность¶
gh-115399: Обновление libexpat до версии 2.6.0
gh-115243: Исправление возможных сбоев в
collections.deque.index()
при одновременном изменении deque.
Ядро и встроенные модули¶
gh-112087: Для пустого обратного итератора список будет приведен к
reversed()
. Исправление от Donghee Nagh-114570: Добавьте исключение
PythonFinalizationError
. Это исключение, производное отRuntimeError
, поднимается, когда операция блокируется во время Python finalization. Исправление Виктора Стиннера.gh-114695: Добавьте функцию
sys._clear_internal_caches()
, которая очищает все внутренние кэши, связанные с производительностью (и откажитесь от менее общей функцииsys._clear_type_cache()
).gh-114828: Исправление сбоев компиляции в нестандартных примерах кода, использующих
super()
внутри comprehension в теле класса.gh-112069: Адаптируйте методы
set
иfrozenset
к Argument Clinic.gh-115011: Сеттеры для членов с типом unsigned integer теперь поддерживают тот же диапазон допустимых значений для объектов, у которых есть метод
__index__()
, что и дляint
.gh-114887: Изменена проверка типа сокета в
create_datagram_endpoint()
, чтобы принимать все непотоковые сокеты. Это исправляет регрессию в совместимости с сырыми сокетами.gh-114944: Исправляет гонку между
PyParkingLot_Park
и_PyParkingLot_UnparkAll
.gh-113462: Ограничивает количество версий, которые может использовать один класс. Предотвращает использование несколькими непутевыми классами всех номеров версий.
gh-76763: Встроенная функция
chr()
теперь всегда поднимает значениеValueError
для значений за пределами допустимого диапазона. Ранее она возвращала значениеOverflowError
для очень больших или маленьких значений.gh-114806: Больше не специализирует вызовы классов, если у этих классов есть метаклассы. Исправлена ошибка, при которой не вызывался метод
__call__
метакласса.gh-107944: Улучшено сообщение об ошибке при вызове функции с плохими аргументами в виде ключевых слов через getargs
gh-112529: Свободно-поточная сборка больше не выделяет место для структуры
PyGC_Head
в объектах, поддерживающих циклическую сборку мусора. В качестве замены используется ряд других полей и структур данных, включаяob_gc_bits
,ob_tid
и внутренние структуры данных mimalloc.gh-114456: Снижение предела рекурсии в отладочной сборке WASI.
gh-114083: Компилятор применяет складывание LOAD_CONST со следующей инструкцией в отдельном проходе перед другими оптимизациями. Это позволяет использовать потоки переходов при определенных обстоятельствах.
gh-114388: Исправление ошибки
RuntimeWarning
, возникающей при присвоении целочисленного значения, не являющегося экземпляромint
, атрибуту, соответствующему члену C struct из type. T_UINT и T_ULONG. Исправление двойнойRuntimeWarning
, возникающей при присвоении отрицательного целочисленного значения атрибуту, соответствующему члену C struct типа T_UINT.gh-114265: Компилятор распространяет номера строк перед оптимизацией, что дает больше возможностей для оптимизации и устраняет необходимость в использовании хака
guarantee_lineno_for_exits
.gh-112529: Свободно-поточная сборка теперь имеет собственную потокобезопасную реализацию GC, которая использует mimalloc для поиска объектов, отслеживаемых GC. В отличие от существующей реализации GC, она не является поколенческой.
gh-114050: Исправление ошибки сегментации, вызванной некорректной строкой формата в исключении
TypeError
, когда вint
передается более двух аргументов.gh-112354: Инструкция
END_FOR
теперь выводит только одно значение. Это сделано для лучшей поддержки боковых выходов в циклах.gh-113884: Сделать
queue.SimpleQueue
потокобезопасным, когда GIL отключен.gh-114058: Реализуйте основы устранения избыточности уровня 2.
gh-113939: frame.clear(): Очищает и frame.f_locals, а не только быстрые локали. Это актуально после обращения к frame.f_locals, который будет содержать также ссылки на все локали.
gh-112050: Преобразовать
collections.deque
для использования Аргумент Клиника.gh-112050: Сделайте методы на
collections.deque
потокобезопасными, когда GIL отключен.gh-113464: Добавьте опцию (
--enable-experimental-jit
для сборок на основеconfigure``или ``--experimental-jit
для сборок на основеPCbuild
) для сборки экспериментального компилятора just-in-time, основанного на copy-and-patch.gh-113055: Сделайте interp->obmalloc указателем. Для интерпретаторов, разделяющих состояние с основным интерпретатором, он указывает на ту же самую статическую структуру памяти. Для интерпретаторов с собственным состоянием obmalloc выделяется из кучи. Добавьте free_obmalloc_arenas(), которая освободит арены obmalloc и структуры дерева радикса для интерпретаторов с собственным состоянием obmalloc.
gh-55664: Добавьте предупреждение при создании
type
с использованием словаря пространства имен с нестроковыми ключами. Исправлено Дэниелом Урбаном и Фурканом Ондером.gh-104530: Используйте родные переменные условий Win32.
Библиотека¶
gh-115392: Исправлена ошибка в
doctest
, когда для оформленных функций сообщались неверные номера строк.gh-114563: Исправлено несколько ошибок
format()
при использовании реализацииDecimal
на C: * утечка памяти в некоторых редких случаях при использовании опции форматаz
(coerce negative 0) * некорректный вывод при применении опции форматаz
к типуF
(фиксированная точка с заглавнойNAN
/INF
) * некорректный вывод при применении опции формата#
(альтернативная форма)gh-102840: Исправление ошибок при выполнении операций floordiv, mod или divmod между экземплярами
fractions.Fraction
иcomplex
.gh-115165: Большинство исключений теперь игнорируются при попытке установить атрибут
__orig_class__
для объектов, возвращаемых при вызове общих псевдонимовtyping
(включая общие псевдонимы, созданные с помощьюtyping.Annotated
). Ранее игнорировался толькоAttributeError
. Исправление Дэйва Шоули.gh-112903: Исправление ошибки «issubclass() arg 1 must be a class» в некоторых случаях множественного наследования с родовыми псевдонимами (регрессия в ранних альфа-версиях 3.13).
gh-115133: Исправьте тесты для
XMLPullParser
с Expat 2.6.0.gh-115059:
io.BufferedRandom.read1()
теперь очищает базовый буфер записи.gh-79382: Трейлинг
**
больше не позволяет сопоставлять файлы и несуществующие пути в рекурсивномglob()
.gh-67837: Избегайте условий гонки при создании каталогов во время одновременного извлечения в
tarfile
иzipfile
.gh-115060: Ускорьте
pathlib.Path.glob()
, удалив избыточное регексовое соответствие.gh-97928: Частично изменяет поведение
tkinter.Text.count()
. По умолчанию он сохраняет поведение старых версий Python, за исключением того, что установкаwantobjects
в 0 больше не имеет эффекта. Добавьте новый параметр return_ints: указавreturn_ints=True
,Text.count()
будет всегда возвращать единичный счет в виде целого числа, а не в виде кортежа илиNone
.gh-114628: Если при обработке TypeError возникает ошибка csv.Error, не выводите отслеживание TypeError.
gh-85984: Добавлена
_POSIX_VDISABLE
из<unistd.h>
вtermios
от C.gh-114965: Обновление поставляемого pip до версии 24.0
gh-114959:
tarfile
больше не игнорирует ошибки при попытке извлечь каталог поверх файла.gh-114894: Добавить
array.array.clear()
.gh-114071: Поддержка подклассов кортежей, использующих auto() для значения члена перечисления.
gh-109475: Исправьте поддержку явного значения опции «–» в
argparse
(например,--option=--
).gh-49766: Исправьте сравнение
date
-datetime
. Теперь специальные методы сравнения__eq__
и__lt__
возвращаютNotImplemented
, если один из компарандов равенdate
, а другой -datetime
, вместо того чтобы игнорировать временную часть и часовой пояс или принудительно возвращать «не равно» или подниматьTypeError
. Это делает сравнение подклассовdate
иdatetime
более симметричным и позволяет изменить поведение по умолчанию, переопределив специальные методы сравнения в подклассах.gh-110190: Исправление структурирования ctypes с массивом на платформе Windows ARM64 путем установки
MAX_STRUCT_SIZE
на 32 в stgdict. Исправление от Диего Руссоgh-114678: Убедитесь, что предупреждение об устаревании спецификатора „N“ в формате
Decimal
не выдается в случаях, когда „N“ встречается в других местах спецификатора формата. Основано на исправлении Стефана Краха.gh-70303: Возвращает и файлы, и каталоги из
pathlib.Path.glob()
, если шаблон заканчивается на «**
». Ранее возвращались только каталоги.gh-109653: Улучшить время импорта
importlib.metadata
иemail.utils
.gh-113280: Исправление утечки открытого сокета в редких случаях, когда возникала ошибка при создании
ssl.SSLSocket
.gh-77749:
email.policy.EmailPolicy.fold()
теперь всегда кодирует не-ASCII символы в заголовках, если значениеutf8
равно false.gh-83383: Синхронизация базы данных
dbm.dumb
теперь не выполняется, если с момента открытия или последней синхронизации не было никаких изменений. Файл каталога для вновь созданной пустой базы данныхdbm.dumb
теперь создается сразу после открытия, а не откладывается до синхронизации или закрытия.gh-91602: Добавьте в
sqlite3.Connection.iterdump()
параметр filter только с ключевым словом для фильтрации объектов базы данных для дампа. Исправление Мариуша Фелисиака.gh-112451: Запретить подклассификацию pure-Python
datetime.timezone
. Это соответствует реализации C-расширения. Исправление Мариуша Фелисиака.gh-69893: Добавьте метод
close()
для итератора, возвращаемогоxml.etree.ElementTree.iterparse()
.gh-109653: Сокращение времени импорта модуля
threading
на ~50%. Исправление от Даниэля Холласа.gh-114492: Сделайте результат
termios.tcgetattr()
воспроизводимым на Alpine Linux. Ранее он мог оставлять случайный мусор в некоторых полях.gh-114315: Сделайте
threading.Lock
настоящим классом, а не фабричной функцией. Добавьте__new__
к типу_thread.lock
.gh-100414: Добавьте
dbm.sqlite3
в качестве бэкенда кdbm
и сделайте его новым бэкендом по умолчаниюdbm
. Исправление Раймонда Хеттингера и Эрленда Э. Аасланда.gh-113267: Верните изменения в gh-106584, которые делали вызовы методов
TestResult
startTest()
иstopTest()
несбалансированными.gh-75128: Игнорируйте
OSError
вasyncio.BaseEventLoop.create_server()
, когда IPv6 доступен, но интерфейс не может его поддерживать.gh-114423:
_DummyThread
записи вthreading._active
теперь автоматически удаляются, когда связанный поток умирает.gh-114257: Избавьтесь от ошибки
FileNotFound
вctypes.util.find_library()
и просто вернитеNone
в Linux.gh-114321: В модуле
fcntl
в Linux, macOS, FreeBSD и NetBSD раскрывается больше констант, специфичных для конкретной платформы.gh-114328:
tty.setcbreak()
и новыйtty.cfmakecbreak()
больше не снимают флаг ICRLF терминального ввода. Это исправляет регрессию, введенную в 3.12, которая больше не соответствовала тому, как ОС определяют режим cbreak на своих страницах руководстваstty(1)
.gh-114281: Удалите подсказки типов из
Lib/asyncio/staggered.py
. Вместо них следует использовать аннотации из проекта typeshed.gh-101438: Избегайте цикла ссылок в ElementTree.iterparse. Итератор, возвращаемый
ElementTree.iterparse
, может удерживать дескриптор файла. Цикл ссылок предотвращал быструю очистку дескриптора файла, если возвращаемый итератор не был исчерпан.gh-114198: В сигнатуре метода
__replace__
наdataclasses
первый аргумент теперь называетсяself
, а неobj
.gh-104522:
OSError
, возникающая при запуске подпроцесса, теперь имеет атрибут filename, установленный в cwd, только если ошибка была вызвана неудачной попыткой изменить текущий каталог.gh-114149: Enum: корректная обработка подклассов кортежей в пользовательских
__new__
.gh-83648: Поддержите устаревание опций, позиционных аргументов и подкоманд в
argparse
.gh-114087: Ускорение
dataclasses.asdict
до 1,35x.gh-109534: Исправление утечки ссылок в
asyncio.selector_events.BaseSelectorEventLoop
при сбое SSL-рукопожатия. Исправление внесено Джейми Фаном.gh-79634: Примите path-like objects в качестве шаблонов в
pathlib.Path.glob()
иrglob()
.gh-112202: Гарантирует, что вызов
asyncio.Condition.notify()
не будет потерян, если пробужденныйTask
будет одновременно отменен или столкнется с любой другой ошибкой.gh-113951: Исправлено поведение методов
tag_unbind()
классовtkinter.Text
иtkinter.Canvas
с тремя аргументами. Ранееwidget.tag_unbind(tag, sequence, funcid)
уничтожал текущую привязку для sequence, оставляя sequence несвязанной, и удалял команду funcid. Теперь она удаляет только funcid из привязки для последовательности, сохраняя другие команды, и удаляет команду funcid. Она оставляет последовательность несвязанной, только если funcid была последней связанной командой.gh-97959: Исправлено отображение методов классов, связанных методов, псевдонимов методов и функций в
pydoc
. Методы классов больше не имеют примечания «метод экземпляра builtins.type». Соответствующие примечания теперь добавлены для методов класса и несвязанных методов. Псевдонимы методов и функций теперь имеют ссылки на модуль или класс, в котором было определено происхождение, если оно отличается от текущего. Связанные методы теперь перечисляются в разделе статических методов. Методы встроенных классов теперь поддерживаются так же, как и методы классов Python.gh-113796: Добавлены дополнительные проверки валидности в конструкторе
csv.Dialect
.ValueError
теперь поднимается, если один и тот же символ используется в разных ролях.gh-113732: Исправьте поддержку
QUOTE_NOTNULL
иQUOTE_STRINGS
вcsv.reader()
.gh-113225: Ускорьте
pathlib.Path.walk()
, используяos.DirEntry.path
, где это возможно.gh-89039: При вызове метода replace() у подкласса datetime, date или time корректно вызывается конструктор производного класса. Ранее вызывался только конструктор базового класса.
Также убедитесь, что при создании подклассов в различных методах передаются ненулевые значения fold. Ранее значение fold игнорировалось.
gh-112919: Ускорение
datetime.datetime.replace()
,datetime.date.replace()
иdatetime.time.replace()
.gh-59013: Установите точку останова на первой исполняемой строке функции, а не на строке определения функции, когда пользователь делает
break func
, используяpdb
gh-112343: Улучшена работа с удобными переменными pdb, чтобы избежать замены содержимого строк.
gh-112240: Добавьте в CLI модуля календаря опцию для указания дня недели, с которого начинается каждая неделя. Исправление Стивена Уорда.
gh-111741: Распознайте
image/webp
как стандартный формат в модулеmimetypes
.gh-43457: Исправьте метод
tkinter
виджетаwm_attributes()
. Теперь он принимает имя атрибута без префикса минус для получения атрибутов окна и позволяет указывать атрибуты и значения для установки в качестве аргументов ключевых слов. Добавлен новый необязательный аргумент return_python_dict: вызовw.wm_attributes(return_python_dict=True)
возвращает атрибуты в виде dict вместо кортежа. Вызовw.wm_attributes()
теперь возвращает кортеж вместо строки, если wantobjects было установлено в 0.gh-82626: Многие функции теперь выдают предупреждение, если в качестве аргумента дескриптора файла передается булево значение.
gh-111051: Добавлена проверка на модификацию файла при отладке с помощью
pdb
gh-110345: Показывать уровень патча Tcl/Tk (а не версию) в
tkinter._test()
.gh-38807: Исправьте состояние гонки в
trace
. Вместо того чтобы проверять, существует ли каталог, и создавать его, напрямую вызывайтеos.makedirs()
с каргомexist_ok=True
.gh-75705: Установите конверт unixfrom в
mailbox.mbox
иmailbox.MMDF
.gh-106233: Исправьте стебель в
InvalidTZPathWarning
во время импорта модуляzoneinfo
.gh-105102: Разрешить вложение
ctypes.Union
вctypes.Structure
, если эндианальность системы противоположна классам.gh-104282: Исправление разыменования нулевого указателя в
lzma._decode_filter_properties()
из-за некорректной обработки BCJ-фильтров со свойствами нулевой длины. Исправление от Радислава Чугунова.gh-96471: Добавьте завершение
queue.Queue
сshutdown()
.gh-101599: Изменено форматирование опций флага argparse, чтобы убрать избыточность.
gh-85984: Добавьте псевдотерминальные функции POSIX
os.posix_openpt()
,os.grantpt()
,os.unlockpt()
иos.ptsname()
.gh-102512: Когда
os.fork()
вызывается из постороннего потока (он же_DummyThread
), тип потока в дочернем процессе меняется на_MainThread
. Также изменено имя и демонический статус, теперь к нему можно присоединиться.gh-88569: Добавьте
os.path.isreserved()
, который определяет зарезервированные имена путей, такие как «NUL», «AUX» и «CON». Эта функция доступна только в Windows.Утратить
pathlib.PurePath.is_reserved()
.bpo-38364: Функции
inspect
isgeneratorfunction
,iscoroutinefunction
,isasyncgenfunction
теперь поддерживают обернутые функцииfunctools.partialmethod
так же, как иfunctools.partial
.
Документация¶
gh-115233: Исправьте пример для
LoggerAdapter
в книге Logging Cookbook.gh-114123: Переместите docstring модуля
csv
в модульcsv
вместо реэкспорта из внутреннего модуля_csv
, и удалите__doc__
изcsv.__all__
.Переместите
csv.__version__
в модульcsv
вместо того, чтобы реэкспортировать его из внутреннего модуля_csv
, и удалите__version__
изcsv.__all__
.
Тесты¶
Построить¶
gh-115167: Избегайте вендора
vcruntime140_threads.dll
при сборке с помощью Visual Studio 2022 версии 17.8.gh-113632: Переведите WASI на платформу второго уровня и сбросьте Emscripten с третьего уровня в configure.ac.
gh-114099: configure и Makefile были доработаны, чтобы обеспечить возможность сборки фреймворка на платформах Apple, отличных от macOS.
gh-114875: Добавьте
getgrent()
в качестве предварительного условия для сборки модуляgrp
.
Windows¶
gh-115049: Исправляет ошибку
py.exe
при запуске от имени пользователя без пользовательского профиля.gh-115009: Обновление программы установки Windows для использования SQLite 3.45.1.
gh-109991: Обновление сборки Windows для использования OpenSSL 3.0.13.
gh-111239: Обновите сборки Windows для использования zlib v1.3.1.
gh-100107: Программа запуска
py.exe
больше не будет пытаться запустить перенаправление Microsoft Store при запуске скрипта, содержащего/usr/bin/env
shebanggh-112984: Добавляет двоичные файлы со свободным потоком в программу установки Windows в качестве дополнительного компонента.
gh-89240: Позволяет
multiprocessing
создавать пулы, состоящие более чем из 62 процессов.
macOS¶
gh-115009: Обновите программу установки macOS для использования SQLite 3.45.1.
gh-109991: Обновите программу установки macOS для использования OpenSSL 3.0.13.
gh-114490: Добавьте поддержку связей Mach-O для
platform.architecture()
.gh-87804: В macOS результаты
os.statvfs
иos.fstatvfs
теперь корректно сообщают размер очень больших дисков, в предыдущих версиях сообщаемое количество блоков было неверным для дисков с не менее чем 2**32 блоками.
IDLE¶
Инструменты/демоверсии¶
gh-113516: Не устанавливайте
LDSHARED
при сборке для WASI.gh-109991: Обновите рабочие процессы GitHub CI для использования OpenSSL 3.0.13 и multissltests для использования 1.1.1w, 3.0.13, 3.1.5 и 3.2.1.
gh-115015: Исправлена ошибка в Argument Clinic, которая приводила к некорректному коду для методов без параметров, использующих соглашение о вызове METH_METHOD | METH_FASTCALL | METH_KEYWORDS. Проверялось только количество позиционных параметров; любой переданный аргумент с ключевым словом принимался молча.
C API¶
gh-111140: Добавляет функции
PyLong_AsNativeBytes()
,PyLong_FromNativeBytes()
иPyLong_FromUnsignedNativeBytes()
.gh-114685:
PyBuffer_FillInfo()
теперь поднимаетSystemError
, если вызывается с флагамиPyBUF_READ
илиPyBUF_WRITE
. Эти флаги следует использовать только сPyMemoryView_*
. C API.gh-114685:
PyObject_GetBuffer()
теперь поднимаетSystemError
, если вызывается с флагамиPyBUF_READ
илиPyBUF_WRITE
. Эти флаги следует использовать только сPyMemoryView_*
. C API.gh-114626: Добавьте типовые определения
PyCFunctionFast
иPyCFunctionFastWithKeywords
(идентичные существующим_PyCFunctionFast
и_PyCFunctionFastWithKeywords
, только без ведущего префикса_
).gh-114329: Добавьте
PyList_GetItemRef()
, который аналогиченPyList_GetItem()
, но возвращает strong reference вместо borrowed reference.gh-110850: Добавьте PyTime C API:
PyTime_t
тип.Константы
PyTime_MIN
иPyTime_MAX
.Функции
PyTime_AsSecondsDouble()
,PyTime_Monotonic()
,PyTime_PerfCounter()
иPyTime_Time()
.
Патч Виктора Стиннера.
gh-112066: Добавить
PyDict_SetDefaultRef()
: вставка ключа и значения в словарь, если ключ еще не присутствует. Аналогичноdict.setdefault()
, но возвращает целочисленное значение, указывающее, присутствовал ли уже ключ. Это также похоже наPyDict_SetDefault()
, но возвращает сильную ссылку вместо заимствованной.
Python 3.13.0 alpha 3¶
Дата выхода: 2024-01-17
Безопасность¶
Ядро и встроенные модули¶
gh-107901: Компилятор дублирует базовые блоки, у которых есть проверка на прерывание eval, нет номера строки и несколько предшественников.
gh-107901: Переход из обработчика исключений обратно в обычный код больше не проверяет прерыватель eval.
gh-113655: Установите ограничение рекурсии в C на 4000 в Windows и на 10000 в Linux/OSX. Кажется, это близкое к оптимальному значение, позволяющее сохранить безопасность, но не нарушить обратную совместимость.
gh-113710: Добавляет типизированные эффекты стека в DSL интерпретатора, а также различные аннотации инструкций.
gh-77046: В Windows файловые дескрипторы, оборачивающие дескрипторы Windows, теперь создаются ненаследуемыми по умолчанию (PEP 446). Исправление от Zackery Spytz и Victor Stinner.
gh-113853: Гарантирует, что все исполнители выполняют задания. Это гарантирует, что выполнение уровня 2 всегда будет прогрессировать.
gh-113753: Исправлена проблема, из-за которой финализатор объектов
PyAsyncGenASend
мог не вызываться, если они были выделены из свободного списка.gh-107901: Компилятор изменен таким образом, что синтетические переходы, не находящиеся в конце цикла, больше не проверяют прерыватель eval.
gh-113703: Исправление регрессии в модуле
codeop
, из-за которой он неправильно определял неполные f-строки. Исправление от Пабло Галиндоgh-89811: Проверьте наличие правильного
tp_version_tag
перед выполнением специализаций байткода, которые полагаются на возможность использования этого значения.gh-111488: Изменено сообщение об ошибке в случае отсутствия ключевого слова „in“ после „for“ в списочных вычислениях
gh-113657: Исправление проблемы, из-за которой важные обновления указателей инструкций не оптимизировались в трассировках второго уровня.
gh-113603: Исправлена ошибка, при которой не удалялся лишний NOP, что приводило к сбою утверждения в компиляторе в режиме отладки.
gh-113602: Исправление ошибки, из-за которой парсер пытался перезаписать существующие ошибки и аварийно завершал работу. Исправление от Pablo Galindo
gh-113486: Больше не выдаются ложные события
PY_UNWIND
для оптимизированных вызовов классов.gh-113297: Исправление segfault в компиляторе на операторе with с 19 менеджерами контекста.
gh-111375: Используйте только
NULL
в стеке исключений, чтобы указать, что исключение было обработано. Исправление от Carey Metcalfe.gh-112215: Увеличение предела рекурсии на C в 3 раза для не отладочных сборок, за исключением платформ webassembly и s390, которые остались без изменений. Это уменьшает некоторые регрессии в 3.12 с глубокой рекурсией, смешивающей встроенный (C) и Python-код.
gh-113054: Исправлена ошибка, при которой не удалялся лишний NOP, что приводило к сбою утверждения в компиляторе в режиме отладки.
gh-106905: Для отслеживания глубины рекурсии в AST-парсере используйте состояние каждого AST-парсера, а не глобальное состояние, чтобы предотвратить потенциальное состояние гонки из-за одновременного парсинга.
В версии 3.11 проблема в первую очередь проявлялась у многопоточных пользователей
ast.parse()
. В 3.12 изменение времени запуска сборки мусора позволило предотвратить возникновение состояния гонки.gh-108866: Измените API и контракт
_PyExecutorObject
, чтобы возвращать указатель next_instr, а не фрейм, и чтобы всегда выполнялась хотя бы одна инструкция.gh-112943: Корректно вычисляет смещения конечных колонок для многострочных токенов в модуле
tokenize
. Исправление от Pablo Galindogh-112125: Исправьте
None.__ne__(None)
, возвращающийNotImplemented
вместоFalse
.gh-74616:
input()
теперь вызывает ошибку ValueError при выводе на терминал, если подсказка содержит встроенные нулевые символы, вместо того чтобы молча обрезать ее.gh-112716: Исправление SystemError в операторе
import
и в методах__reduce__()
встроенных типов, когда__builtins__
не является dict.gh-112730: Используйте цвет для выделения мест ошибок в трассировках. Исправление от Pablo Galindo
gh-112625: Исправлена ошибка, из-за которой объект bytearray мог быть очищен во время итерации по аргументу в методе
bytearray.join()
, что могло привести к чтению памяти после ее освобождения.gh-112660: Не очищать неожиданные ошибки при форматировании сообщений об ошибках ImportError и AttributeError для модулей.
gh-105967: Устранение ошибки в библиотеке zlib для платформы macOS от Apple, когда
zlib.crc32()
иbinascii.crc32()
могли давать неверные результаты на многогигабайтных входных данных. В том числе при использованииzipfile
на зипах, содержащих большие данные.gh-95754: Улучшено сообщение об ошибке при обращении к недопустимым атрибутам частично инициализированных модулей. Теперь в сообщение включается происхождение модуля, к которому осуществляется доступ, чтобы помочь в решении распространенной проблемы с тенью других модулей.
gh-112217: Добавьте проверку типа
__cause__
, возвращаемого при вызове типаT
вraise from T
.gh-111058: Измените coro.cr_frame/gen.gi_frame так, чтобы они возвращали
None
после закрытия корутины/генератора. Это исправляет ошибку, при которойgetcoroutinestate()
иgetgeneratorstate()
возвращали неверное состояние для закрытого корутина/генератора.gh-112388: Исправлена ошибка, из-за которой парсер пытался перезаписать ошибки токенизатора. Исправление от Пабло Галиндо
gh-112387: Исправлены позиции ошибок для декодированных строк с ошибками обратной токенизации. Исправление от Pablo Galindo
gh-99606: Сделать код, сгенерированный для пустой f-строки, идентичным коду пустой обычной строки.
gh-112367: Избегайте неопределенного поведения при использовании перф-батутов, не освобождая кодовые арены до выключения. Исправление от Пабло Галиндо
gh-112320: Транслятор уровня 2 теперь отслеживает уровень уверенности в том, что инструкции ветвления остаются «на трассе» (т.е. не возвращаются в интерпретатор уровня 1), основываясь на количестве битов, установленных в «счетчике» ветвления. Трансляция трассировки завершается, когда уровень уверенности падает ниже 1/3.
gh-109598:
PyComplex_RealAsDouble()
/PyComplex_ImagAsDouble()
теперь пытается преобразовать объект в экземплярcomplex
с помощью своего метода__complex__()
, а затем возвращается к методу__float__()
. Автор патча - Сергей Кирпичев.gh-94606: Исправление ошибки UnicodeEncodeError, когда
email.message.get_payload()
читает сообщение с суррогатным символом Unicode, а содержимое сообщения не является хорошо сформированным для кодировки surrogateescape. Исправление Сидни Марковица.bpo-21861: Используйте реальное имя класса объекта в
_io.FileIO.__repr__()
,_io._WindowsConsoleIO()
и_io.TextIOWrapper.__repr__()
, чтобы сделать эти методы дружественными подклассам.bpo-45369: Удалите обходные пути LibreSSL в соответствии с PEP 644.
bpo-34392: Добавлено
sys._is_interned()
.
Библиотека¶
gh-114077: Исправление возможных
OverflowError
вsocket.socket.sendfile()
при передаче count более 2 ГБ на 32-битной платформе.gh-111803:
plistlib
теперь поддерживает загрузку более глубоко вложенных списков в двоичном формате.gh-114014: Исправлена ошибка в
fractions.Fraction
, когда недопустимая строка, использующаяd
в десятичной части, вызывала другую ошибку по сравнению с другими недопустимыми буквами/символами. Автор исправления - Джеремайя Габриэль Паскуаль.gh-108364:
sqlite3.Connection.iterdump()
теперь гарантирует, что поддержка внешних ключей отключена перед дампом схемы базы данных, если есть нарушение внешнего ключа. Исправление Эрленда Э. Аасланда и Мариуша Фелисиака.gh-113971: Атрибут
zipfile.ZipInfo
, ранее защищенный._compresslevel
, стал общедоступным как.compress_level
, а старое имя_compresslevel
осталось доступным в качестве свойства для сохранения совместимости.gh-113877: Исправьте
tkinter
методомwinfo_pathname()
на 64-битной Windows.gh-113868: Добавлены
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
иmmap.MAP_TPRO
. Все они имеют флагmmap(2)
на macOS.gh-113848: Менеджеры контекста
asyncio.TaskGroup()
иasyncio.timeout()
теперь работают с подклассамиCancelledError
так же, как и с точнымиCancelledError
.gh-113661: unittest runner: Не выходите из 5, если тесты были пропущены. Выход из 5 был предназначен для обнаружения проблем, когда набор тестов вообще не был обнаружен. Если мы пропускали тесты, то они были обнаружены правильно.
gh-96037: Вставьте
TimeoutError
в контекст исключения, которое было поднято при выходе из истекшего блокаasyncio.timeout()
.gh-113781: Заглушение невосстановимых ошибок AttributeError при выдаче предупреждений во время финализации Python.
gh-113238: Добавьте
Anchor
кimportlib.resources
(чтобы код соответствовал документации)gh-111693:
asyncio.Condition.wait()
теперь повторно поднимает тот же экземплярCancelledError
, из-за которого он мог быть прерван. Исправлено состояние гонки вasyncio.Semaphore.acquire()
при прерывании с помощьюCancelledError
.gh-113791: Добавьте
CLOCK_MONOTONIC_RAW_APPROX
иCLOCK_UPTIME_RAW_APPROX
кtime
на macOS. Эти часы доступны в macOS 10.12 или более поздней версии.gh-112932: Восстановление возможности перехода от
zipfile
кextractall
из zip-файлов с записью в директории «/», которая обычно добавляется в zip-файлы некоторыми экспортерами данных вики или багтрекеров.gh-113568: Передавайте предупреждения об устаревании от
pathlib.PurePath
, а не от его частного базового классаPurePathBase
.gh-113594: Исправьте
UnicodeEncodeError
вemail
при повторном складывании строк, содержащих часть с неизвестной 8-битной кодировкой, за которой следует часть с неизвестной 8-битной кодировкой.gh-113538: В
asyncio.StreamReaderProtocol.connection_made()
есть обратный вызов, который регистрирует ошибку, если задача, обернувшая «подключенный обратный вызов», не выполнилась. Этот обратный вызов сам по себе не сработает, если задача будет отменена. Чтобы предотвратить это, сначала проверьте, была ли отменена задача. Если да, то закройте транспорт, но не сообщайте об ошибке.gh-113626: Добавьте поддержку аргумента allow_code в модуле
marshal
. Передачаallow_code=False
предотвращает сериализацию и де-сериализацию объектов кода, что несовместимо между версиями Python.gh-85567: Исправлены предупреждения о ресурсах для незакрытых файлов в интерфейсах командной строки
pickle
иpickletools
.gh-113537: Поддержка загружает
str
вplistlib.loads()
.gh-89850: Добавлены реализации по умолчанию методов
pickle.Pickler.persistent_id()
иpickle.Unpickler.persistent_load()
в реализации C. Вызов методовsuper().persistent_id()
иsuper().persistent_load()
в подклассах C-реализации классовpickle.Pickler
иpickle.Unpickler
больше не приводит к бесконечной рекурсии.gh-113569: Укажите, не было ли фактических вызовов в unittest
assert_has_calls()
failure.gh-101225: Увеличьте отставание для объектов
multiprocessing.connection.Listener
, созданныхmultiprocessing.manager
иmultiprocessing.resource_sharer
, чтобы значительно снизить риск получения ошибки отказа в подключении при созданииmultiprocessing.connection.Connection
к ним.gh-113568: Вызывайте события аудита от
pathlib.Path
, а не от его частного базового классаPathBase
.gh-113543: Убедитесь, что
webbrowser.MacOSXOSAScript
отправляет событие аудитаwebbrowser.open
.gh-113028: Когда на входе в
pickle
появляется вторая ссылка на строку, и используется реализация Python, мы гарантируем, что одна копия будет замаринована, и при перезагрузке будет использоваться один объект. Ранее, в протоколе 0, когда строка содержала определенные символы (например, новую строку), это приводило к появлению дубликатов объектов.gh-113421: Исправьте многопроцессорный логгер для
%(filename)s
.gh-111784: Исправление сегфайтов в модуле
_elementtree
. Исправление первого segfault при деаллокации экземпляров_elementtree.XMLParser
путем сохранения сильной ссылки на модульpyexpat
в состоянии модуля на время жизни капсулы. Исправление второго segfault, который происходит в том же процессе деаллокации, путем сохранения сильной ссылки на модуль_elementtree
в структуреXMLParser
на время жизни модуля_elementtree
.gh-113407: Исправьте импорт
unittest.mock
, когда CPython собран без документальных строк.gh-113320: Исправление регрессии в Python 3.12, когда классы
Protocol
, не помеченные какruntime-checkable
, излишне интроспективно проверялись, что могло привести к возникновению исключений, если протокол имел проблемные члены. Исправление Алекса Уэйгуда.gh-53502: Добавьте новую опцию
aware_datetime
вplistlib
для загрузки или дампа данных с указанием времени.gh-113358: Исправление отрисовки трассировок с исключениями с неработающим __getattr__
gh-113214: Исправление
AttributeError
при прерывании протокола asyncio SSL в сценариях SSL-over-SSL.gh-113246: Обновление поставляемого pip до версии 23.3.2.
gh-87264: Исправлен метод tarfile list() для отображения типа файла.
gh-112182:
asyncio.futures.Future.set_exception()
теперь превращаетStopIteration
вRuntimeError
вместо зависания или другого неправильного поведения. Патч предоставлен Джейми Фаном.gh-113225: Ускорьте
pathlib.Path.glob()
, используяos.DirEntry.path
, где это возможно.gh-113149: Улучшено сообщение об ошибке, когда массив или объект JSON содержит запятую в конце. Исправление от Карсона Радтке.
gh-113117: Модуль
subprocess
теперь может использовать функциюos.posix_spawn()
вместе сclose_fds=True
на платформах, где доступенposix_spawn_file_actions_addclosefrom_np
. Исправление от Якуба Кулика.gh-113199: Заставить
http.client.HTTPResponse.read1
иhttp.client.HTTPResponse.readline
закрывать IO после чтения всех данных, если длина содержимого известна. Патч от Illia Volochii.gh-113191: Добавьте поддержку
os.fchmod()
и файлового дескриптора вos.chmod()
на Windows.gh-113188: Исправьте
shutil.copymode()
иshutil.copystat()
под Windows. Ранее они работали по-разному, если dst является символической ссылкой: они изменяли биты разрешения самого dst, а не файла, на который он указывает, если follow_symlinks истинна или src не является символической ссылкой, и не изменяли биты разрешения, если follow_symlinks ложна и src является символической ссылкой.gh-113119:
os.posix_spawn()
теперь принимаетenv=None
, что заставляет вновь порожденный процесс использовать текущее окружение процесса. Исправление Якуба Кулика.gh-113202: Добавьте опцию
strict
кbatched()
в модулеitertools
.gh-61648: Определение номеров строк свойств в доктестах.
gh-113175: Синхронизация с importlib_metadata 7.0, включая улучшение аннотаций типов, исправление проблемы с симлинковыми пакетами в
package_distributions
, добавлениеEntryPoints.__repr__
, введение скриптаdiagnose
, добавление свойстваDistribution.origin
и удаление устаревшего доступа кEntryPoint
по числовому индексу (поведение кортежей).gh-59616: Добавьте поддержку
os.lchmod()
и аргумента follow_symlinks вos.chmod()
под Windows. Обратите внимание, что по умолчанию значение follow_symlinks вos.lchmod()
равноFalse
в Windows.gh-112559:
signal.signal()
иsignal.getsignal()
больше не вызываютrepr
на вызываемых обработчиках.asyncio.run()
иasyncio.Runner.run()
больше не вызываютrepr
на результатах выполнения задачи. Исправление от Yilei Yang.gh-112962: Функции модуля
dis
добавляют информацию о кэше в экземплярInstruction
, а не создают поддельные экземплярыInstruction
для представления записей кэша.gh-112989: Уменьшите накладные расходы на подключение сокетов с помощью
asyncio
. SelectorEventLoop.gh-112970: Используйте
closefrom()
в Linux, если он доступен (например, glibc-2.34), а не только во FreeBSD.gh-110190: Исправление структурирования ctypes с массивом на платформе PPC64LE путем установки
MAX_STRUCT_SIZE
на 64 в stgdict. Исправление от Диего Руссо.gh-112540: Функция statistics.geometric_mean() теперь возвращает ноль для наборов данных, содержащих ноль. Раньше это приводило к возникновению исключения.
gh-87286: Добавлены
LOG_FTP
,LOG_NETINFO
,LOG_REMOTEAUTH
,LOG_INSTALL
,LOG_RAS
иLOG_LAUNCHD
в модульsyslog
, все они являются константами, используемыми на macOS.gh-112800: Исправьте
asyncio
SubprocessTransport.close()
, чтобы не бросатьPermissionError
при использовании с setuid исполняемыми файлами.gh-51944: Добавьте следующие константы в модуль
termios
. Эти значения присутствуют в системных заголовках 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: Исправление ошибки бесконечной рекурсии в очистке
tempfile.TemporaryDirectory()
на Windows.gh-94692:
shutil.rmtree()
теперь перехватывает только исключения OSError. Ранее версияshutil.rmtree()
, устойчивая к атакам по симлинкам, могла игнорировать или передавать обработчику ошибок произвольное исключение при предоставлении недопустимых аргументов.gh-112736: Использование символов del-safe в
subprocess
было рефакторизовано, чтобы обеспечить возможность использования в кроссплатформенных средах сборки.gh-112727: Ускорение
pathlib.Path.absolute()
. Исправление от Барни Гейла.gh-74690: Ускорение проверок
issubclass()
против простыхruntime-checkable protocols
примерно на 6%. Исправление от Алекса Уэйгуда.gh-74690: Ускорение проверок
isinstance()
примерно на 20 % для протоколовruntime-checkable protocols
, имеющих только один вызываемый член. Ускорение проверкиissubclass()
для этих протоколов примерно на 10 %. Исправление от Алекса Уэйгуда.gh-112645: Устраните ошибку устаревания при передаче
onerror
вshutil.rmtree()
.gh-112640: Добавьте параметр
kwdefaults
кtypes.FunctionType
, чтобы задать значения аргументов ключевых слов по умолчанию.gh-112622: Убедитесь, что параметр
name
передан в цикл событий вasyncio.create_task()
.gh-112618: Исправлена ошибка кэширования, связанная с
typing.Annotated
.Annotated[str, True]
больше не идентиченAnnotated[str, 1]
.gh-112334: Исправлена ошибка в производительности
subprocess
в 3.12 на Linux, когда из-за логической ошибки он больше не использовал системный вызовvfork()
с быстрым путём, когда мог бы, вместо этого возвращаясь к безопасному, но более медленномуfork()
.Также исправлена вторая потенциальная ошибка безопасности версии 3.12.0. Если в
subprocess.Popen
или связанные с ним API передавалось значениеextra_groups=[]
, основной системный вызовsetgroups(0, NULL)
для очистки списка групп не выполнялся в дочернем процессе доexec()
.Это было обнаружено при проверке кода в процессе исправления первой ошибки.
gh-110190: Исправление ctypes structs с массивом на платформе Arm путем установки
MAX_STRUCT_SIZE
на 32 в stgdict. Исправление от Диего Руссо.gh-81194: Исправление сбоя в
socket.if_indextoname()
при определенном значении (UINT_MAX). Исправление целочисленного переполнения вsocket.if_indextoname()
на 64-битных платформах, отличных от Windows.gh-112578: Исправление ложного
RuntimeWarning
при выполнении модуляzipfile
.gh-112516: Обновите поставляемую в комплекте копию pip до версии 23.3.1.
gh-112510: Добавьте
readline.backend
для бэкенда, использующего readline (editline
илиreadline
)gh-112328: [Enum] Сделайте
EnumDict
,EnumDict.member_names
,EnumType._add_alias_
иEnumType._add_value_alias_
общедоступными.gh-112509: Исправление краевых случаев, из-за которых ключ мог присутствовать как в атрибутах
__required_keys__
, так и в__optional_keys__
атрибутаtyping.TypedDict
. Исправление от Jelle Zijlstra.gh-101336: Добавьте параметр ключевого слова
keep_alive
дляAbstractEventLoop.create_server()
иBaseEventLoop.create_server()
.gh-63284: В модуль
ssl
добавлена поддержка режима TLS-PSK (pre-shared key).gh-112414: Исправление регрессии в Python 3.12, когда вызов
repr()
на модуле, который был импортирован с помощью пользовательского loader, мог привести к ошибкеAttributeError
. Исправление от Алекса Уэйгуда.gh-112358: Верните изменение инициализации
struct.Struct
, которое нарушало некоторые случаи подклассификации.gh-112405: Оптимизируйте
pathlib.PurePath.relative_to()
. Исправление от Алекса Уэйгуда.gh-94722: Исправлена ошибка, при которой сравнение между экземплярами
DocTest
не удавалось, если один из них имеетNone
в качестве своего lineno.gh-112361: Ускорьте небольшую горстку методов
pathlib
, удалив некоторые временные объекты.gh-112345: Улучшено сообщение об ошибке при попытке вызова
issubclass()
противtyping.Protocol
, у которого есть члены, не являющиеся методами. Исправление от Рэндольфа Шольца.gh-112137: Измените вывод
dis
, чтобы отображать no-lineno как «–» вместо «None».gh-112332: Утратить поле
exc_type
изtraceback.TracebackException
. Добавьтеexc_type_str
, чтобы заменить его.gh-81620: Добавьте дополнительные тесты для
random.binomialvariate()
gh-112292: Исправление сбоя в
readline
при импорте из суб-интерпретатора. Исправление от Энтони Шоуgh-77621: Немного улучшает время импорта модуля
pathlib
, откладывая некоторые импорты. Исправление Барни Гейла.gh-112137: Измените вывод
dis
, чтобы вместо смещений отображались логические метки для целей перехода.gh-112139: Добавьте
Signature.format()
для форматирования подписей в строку с дополнительными параметрами. И используйте его вpydoc
для вывода более читабельных подписей с новыми строками между параметрами.gh-112105: Заставьте
readline.set_completer_delims()
работать с libeditgh-106922: Отображение нескольких строк с помощью
traceback
, если ошибки охватывают несколько строк.gh-111874: При создании класса
typing.NamedTuple
убедитесь, что__set_name__()
вызывается для всех объектов, которые определяют__set_name__
и существуют в значениях словаря классов классаNamedTuple
. Исправление Алекса Уэйгуда.gh-68166: Добавьте поддержку типа элемента «vsapi» в
tkinter.ttk.Style.element_create()
.gh-110275: Методы именованных кортежей
_replace()
и__replace__()
теперь вызывают ошибку TypeError вместо ошибки ValueError для недопустимых аргументов ключевых слов.gh-99367: Не помещайте
sys.path[0]
вpdb
, если установлен безопасный_путьgh-111615: Исправление регрессии, вызванной исправлением gh-93162, в результате которого нельзя было настроить
QueueHandler
без указания обработчиков.gh-75666: Исправлено поведение метода
tkinter
виджетаunbind()
с двумя аргументами. Ранееwidget.unbind(sequence, funcid)
разрушал текущую привязку последовательности, оставляя последовательность без привязки, и удалял команду funcid. Теперь она удаляет только funcid из привязки для последовательности, сохраняя другие команды, и удаляет команду funcid. Она оставляет последовательность несвязанной, только если funcid была последней связанной командой.gh-67790: Реализуйте поддержку базового форматирования (минимальная ширина, выравнивание, заливка) для
fractions.Fraction
.gh-111049: Исправление сбоя при сборке мусора буферного объекта
io.BytesIO
.gh-102980: Перенаправьте вывод команды
interact
изpdb
в тот же канал, что и отладчик. Добавьте тесты и улучшите документацию.gh-102988:
email.utils.getaddresses()
иemail.utils.parseaddr()
теперь возвращают 2-кортежи('', '')
в большем количестве ситуаций, когда встречаются недействительные адреса электронной почты, вместо потенциально неточных значений. Добавьте необязательный параметр strict к этим двум функциям: используйтеstrict=False
, чтобы получить старое поведение, принимающее неправильные входные данные.getattr(email.utils, 'supports_strict_parsing', False)
можно использовать для проверки наличия параметра strict. Патч Томаса Дуайера и Виктора Стиннера для улучшения исправления CVE-2023-27043.gh-52161:
cmd.Cmd.do_help()
теперь очищает docstrings сinspect.cleandoc()
перед их записью. Исправление от Filip Łapkiewicz.gh-82300: Добавьте к
multiprocessing.shared_memory.SharedMemory
параметрtrack
, позволяющий использовать блоки общей памяти без необходимости регистрироваться в системе отслеживания ресурсов POSIX, которая автоматически освобождает их при выходе процесса.gh-110109: Добавьте приватный класс
pathlib._PurePathBase
: базовый класс дляpathlib.PurePath
, в котором отсутствуют некоторые магические методы. В будущем он может стать публичным (вместе с_PathBase
).gh-109858: Защитите
zipfile
от zip-бомбы «quoted-overlap». Теперь при попытке прочитать запись, которая перекрывается с другой записью или центральным каталогом, возникает ошибка BadZipFile.gh-109786: Исправление возможных утечек ссылок и падения при повторном входе в метод
__next__()
изitertools.pairwise
.gh-91539: Небольшое (10 - 20%) и тривиальное улучшение производительности по сравнению с
urllib.request.getproxies_environment()
, обычно полезное, когда нужно перебрать множество переменных окружения.gh-103363: Добавьте аргумент follow_symlinks только для ключевых слов в
pathlib.Path.owner()
иgroup()
, по умолчанию используетсяTrue
.gh-102130: Поддержка завершения табуляции в
cmd
дляeditline
.gh-99437:
runpy.run_path()
теперь декодирует объекты типа path, следя за тем, чтобы __file__ и sys.argv[0] запускаемого модуля всегда были строками.gh-104003: Добавьте
warnings.deprecated()
, декоратор для пометки устаревших функций статическими средствами проверки типов и для предупреждения об использовании устаревших классов и функций. См. PEP 702. Исправление от Jelle Zijlstra.gh-103708: Сделать жестко закодированное имя python настраиваемым параметром, чтобы разные реализации python могли переопределять его вместо того, чтобы делать огромные различия в sysconfig.py
gh-66515:
mailbox.MH
теперь поддерживает папки, не содержащие файл.mh_sequences
(например, папки IMAP-кэша Claws Mail). Исправление Сергея Сторчака.gh-83162: Переименовали
re.error
вPatternError
для ясности и сохранилиre.error
для обратной совместимости. Исправление Матиаса Буссонье и Адама Чхины.gh-91133: Исправлена ошибка в очистке
tempfile.TemporaryDirectory
, которая теперь не разыменовывает симлинки при работе с ошибками разрешения файловой системы.bpo-43153: В Windows
tempfile.TemporaryDirectory
ранее маскировалPermissionError
подNotADirectoryError
при очистке каталога. Теперь он корректно выводитPermissionError
, если ошибки не игнорируются. Исправление Андрея Кулакова и Кена Джина.bpo-32731:
getpass.getuser()
теперь поднимаетOSError
при всех сбоях, а неImportError
на системах без модуляpwd
илиKeyError
, если база данных паролей пуста.bpo-34321:
mmap.mmap
теперь имеет параметр trackfd в Unix; если он равенFalse
, дескриптор файла, указанный fileno, не будет дублироваться.bpo-35332: Функция
shutil.rmtree()
теперь игнорирует ошибки при вызовеos.close()
, когда ignore_errors имеет значениеTrue
, аos.close()
больше не повторяет попытку после ошибки.bpo-35928:
io.TextIOWrapper
теперь корректно обрабатывает буфер декодирования послеread()
иwrite()
.bpo-26791:
shutil.move()
теперь перемещает симлинк в каталог, когда этот каталог является целью симлинка. Это обеспечивает такое же поведение, как и команда оболочки mv. Предыдущее поведение вызывало исключение. Исправление Джеффри Кинчера.bpo-41422: Исправлены утечки памяти в
pickle.Pickler
иpickle.Unpickler
, связанные с циклическими ссылками через внутреннее отображение мемо.bpo-19821: Функция
pydoc.ispackage()
была устаревшей.bpo-40262: Метод
ssl.SSLSocket.recv_into()
больше не требует аргумента buffer для реализации__len__
и поддерживает буферы с произвольным размером элемента.bpo-39912:
warnings.filterwarnings()
иwarnings.simplefilter()
теперь вызывают соответствующие исключения вместоAssertionError
. Исправление предоставлено Rémi Lapeyre.bpo-37260: Исправлено состояние гонки в
shutil.rmtree()
, когда записи каталога, удаленные другим процессом или потоком во время работыshutil.rmtree()
, могли вызвать ошибку FileNotFoundError. Автор исправления - Джеффри Кинчер.bpo-36959: Исправление некоторых сообщений об ошибках, связанных с недопустимыми комбинациями строк формата ISO в
strptime()
, которые ссылались на директивы, не содержащиеся в строке формата. Исправление Гордона П. Хемсли.bpo-18060: Исправлена проблема наследования классов, которая могла приводить к сегфайтам при выведении двух или более уровней подклассов из базового класса Structure или Union.
bpo-29779: Добавьте новую переменную окружения
PYTHON_HISTORY
, чтобы задать расположение файла.python_history
.bpo-21360:
mailbox.Maildir
теперь игнорирует файлы с ведущей точкой.
Документация¶
gh-111699: Переместите уведомление об устаревании
smtpd
в отдельный раздел, а не подlocale
в документе What’s New in Python 3.12.gh-110746: Улучшена разметка для валидных опций/значений для методов ttk.treeview.column и ttk.treeview.heading, а также для Layouts.
gh-95649: Документ о том, что модуль
asyncio
содержит код, взятый из v0.16.0 of the uvloop project, а также необходимую информацию о лицензировании MIT.
Тесты¶
gh-111798: Отключите
test_super_deep()
отtest_call
в сборках pydebug на WASI; глубина стека слишком мала, чтобы сделать тест полезным.gh-111801: Понизьте предел рекурсии в
test_isinstance
дляtest_infinitely_many_bases()
. Это предотвращает переполнение стека в pydebug-сборке WASI.gh-111802: Укажите малую глубину рекурсии для
test_bad_getattr()
вtest.pickletester
, чтобы избежать исчерпания стека при сборке pydebug для WASI.gh-44626: Исправление того, что
os.path.isabs()
неверно возвращалTrue
, если путь начинался с одного (обратного) слэша в Windows.Исправление того, что
pathlib.PureWindowsPath.is_absolute()
неверно возвращалFalse
для некоторых путей, начинающихся с двух (обратных) косых черт.gh-113633: Используйте состояние модуля для модуля расширения _testcapi.
gh-109980: Исправление
test_tarfile_vs_tar
вtest_shutil
для macOS, где системный tar может включать в архив больше информации, чемshutil.make_archive
.gh-112769: Тесты теперь корректно сравнивают версии zlib, когда
zlib.ZLIB_RUNTIME_VERSION
содержит нецелые суффиксы. Например, zlib-ng определяет версию как1.3.0.zlib-ng
.gh-112334: Добавляет регрессионный тест, проверяющий, что
vfork()
используется, когда ожидаетсяsubprocess
, на POSIX-системах с поддержкой vfork (Linux).gh-108927: Исправлена зависимость порядка выполнения тестов в одном процессе, когда тест с подмодулями (например, test_importlib) следует за тестом, который импортирует его подмодуль (например, test_importlib.util), и предшествует тесту (например, test_unittest или test_compileall), который использует этот подмодуль.
bpo-40648: Тест режимов, которые файл может получить с помощью chmod() в Windows.
Построить¶
gh-114013: Исправьте
Tools/wasm/wasi.py
, чтобы путь кpython.wasm
не включался вHOSTRUNNER
. Переменная окружения предназначена только для указания способа запуска хоста WASI, при этом кpython.wasm
и соответствующим флагам добавляетсяHOSTRUNNER
. Это исправляет работуmake test
.gh-113258: Изменена сборка Windows, чтобы генерируемые замороженные модули записывались в дерево сборки, а не в дерево исходных текстов.
gh-112305: Исправлен шаг
check-clean-src
, выполняемый при сборке из дерева, чтобы обнаружить ошибочные файлы$(srcdir)/Python/frozen_modules/*.h
и рекомендовать соответствующие шаги по очистке дерева исходных текстов, чтобы снова получить рабочую сборку.gh-112536: Добавьте поддержку санитара потоков (TSAN)
gh-112867: Исправление сборки для случая, когда установлено WITH_PYMALLOC_RADIX_TREE=0.
gh-103065: Введите
Tools/wasm/wasi.py
, чтобы упростить выполнение сборки WASI.bpo-11102: Функции
os.major()
,os.makedev()
иos.minor()
теперь доступны на HP-UX v3.bpo-36351: Не устанавливайте ipv6type при кросс-компиляции.
Windows¶
gh-114096: Привилегии процессов, активированные для создания перекрестков каталогов, теперь восстанавливаются после этого, что позволяет избежать изменения поведения в других частях программы.
gh-111877: Вызовы
os.stat()
возвращали неверные значения времени для файлов, к которым нельзя было получить прямой доступ.gh-111973: Обновление программы установки Windows для использования SQLite 3.44.2.
gh-113009:
multiprocessing
: В Windows исправлено состояние гонки вProcess.terminate()
: больше не нужно устанавливать атрибутreturncode
, чтобы всегда вызыватьWaitForSingleObject()
вProcess.wait()
. Ранее иногда процесс продолжал выполняться послеTerminateProcess()
, даже еслиGetExitCodeProcess()
не былSTILL_ACTIVE
. Исправление Виктора Стиннера.gh-86179: Исправлено вычисление пути при запуске Python под Windows через симлинк.
gh-71383: Обновление Tcl/Tk в программе установки Windows до версии 8.6.13 с исправлением, подавляющим некорректные предупреждения ThemeChanged.
gh-111650: Обеспечивает определение переменной препроцессора
Py_GIL_DISABLED
вpyconfig.h
, чтобы модули расширения, написанные на C, могли ее использовать.gh-112278: Уменьшение временных затрат на выполнение некоторых функций в
platform
в Windows, если у текущего пользователя нет прав на WMI.gh-73427: Утратить
sys._enablelegacywindowsfsencoding()
. Вместо него используйтеPYTHONLEGACYWINDOWSFSENCODING
. Исправление от Inada Naoki.gh-87868: Корректная сортировка и удаление дублирующихся переменных окружения в
_winapi.CreateProcess()
.bpo-37308: Исправление mojibake в
mmap.mmap
при использовании аргумента tagname, отличного от ASCII, в Windows.
macOS¶
gh-113666: Добавьте в модуль
stat
следующие константы:UF_SETTABLE
,UF_TRACKED
,UF_DATAVAULT
,SF_SUPPORTED
,SF_SETTABLE
,SF_SYNTHETIC
,SF_RESTRICTED
,SF_FIRMLINK
иSF_DATALESS
. ЗначенияUF_SETTABLE
,SF_SUPPORTED
,SF_SETTABLE
иSF_SYNTHETIC
доступны только в macOS.gh-113536:
os.waitid()
теперь доступен на macOSgh-110459: Запуск
configure ... --with-openssl-rpath=X/Y/Z
больше не приводит к невозможности обнаружить OpenSSL на macOS.gh-74573: Документируйте, что
dbm.ndbm
может молчаливо повреждать DBM-файлы при обновлении, когда превышаются недокументированные ограничения платформы, и при чтении такого поврежденного файла может произойти сбой (segmentation fault). (FB8919203)gh-65701: Инструмент freeze не работает с фреймворковыми сборками Python. Задокументируйте это и выходите из игры раньше, если запускаете инструмент с такой сборкой.
gh-87277: webbrowser: Не ищите браузеры X11 в macOS. Они обычно не используются, и их поиск может привести к запуску XQuartz, даже если он не используется в других случаях.
gh-111973: Обновите программу установки macOS для использования SQLite 3.44.2.
gh-108269: Установите значение
CFBundleAllowMixedLocalizations
в true в файле Info.plist для фреймворка, встроенного в Python.app и IDLE.app при установке фреймворка на macOS. Это позволит приложениям подхватывать предпочитаемую пользователем локаль, если она отличается от английской.gh-102362: Убедитесь, что результат
sysconfig.get_plaform()
включает как минимум мажорную и минорную версии, даже если во время сборкиMACOSX_DEPLOYMENT_TARGET
установлен только мажорный вариант, чтобы соответствовать формату, ожидаемому pip.gh-110017: Отключение стресс-теста обработки сигналов на macOS из-за ошибки в macOS (FB13453490).
gh-110820: Убедитесь, что определения препроцессора для
ALIGNOF_MAX_ALIGN_T
,SIZEOF_LONG_DOUBLE
иHAVE_GCC_ASM_FOR_X64
корректны для сборок Universal 2 на macOS.gh-109981: Используйте
/dev/fd
в macOS для определения количества открытых файлов вtest.support.os_helper.fd_count
, чтобы избежать сбоя при использовании «охраняемых» файловых дескрипторов при проверке на наличие открытых файлов.
IDLE¶
gh-72284: Улучшите списки возможностей, привязок клавиш редактора и привязок клавиш оболочки в документации по IDLE.
gh-113903: Исправление редкого сбоя test.test_idle, в test_configdialog.
gh-113729: Исправлена ошибка меню «Help -> IDLE Doc» в 3.11.7 и 3.12.1.
gh-113269: Исправление зависания test_editor на macOS Catalina.
gh-112898: Исправлена обработка несохраненных файлов при выходе из IDLE на macOS.
bpo-13586: Ввод выделенного текста при открытии диалога «Заменить».
C API¶
gh-106560: Исправьте лишние объявления в публичном API C. Объявляйте PyBool_Type, PyLong_Type и PySys_Audit() только один раз. Исправление Виктора Стиннера.
gh-112438: Исправлена поддержка единиц формата «es», «et», «es#» и «et#» во вложенных кортежах в
PyArg_ParseTuple()
-подобных функциях.gh-111545: Добавьте функцию
Py_HashPointer()
для хэширования указателя. Исправление Виктора Стиннера.gh-65210: Измените объявление параметра keywords в
PyArg_ParseTupleAndKeywords()
иPyArg_VaParseTupleAndKeywords()
для лучшей совместимости с C++.
Python 3.13.0 alpha 2¶
Дата выхода: 2023-11-22
Ядро и встроенные модули¶
gh-112243: Не включать комментарии в отладочные выражения f-строк. Исправление от Пабло Галиндо
gh-112287: Немного оптимизируем интерпретатор уровня 2 (uop), загружая
oparg
иoperand
только при необходимости. Также снова удвоить ограничение на размер трассировки, на этот раз до 512.gh-111807: Уменьшите максимальную глубину стека парсера до 1000 в отладочных сборках WASI.
gh-111798: Когда Python собирается в режиме отладки, установите ограничение на рекурсию в C на 500 вместо 1500. Отладочная сборка, скорее всего, собрана с низким уровнем оптимизации, что подразумевает большее использование стековой памяти, чем релизная сборка. Исправление Виктора Стиннера.
gh-106529: Включить перевод неспециализированных
FOR_ITER
на уровень 2.gh-111916: Сделать модули, связанные с hashlib, потокобезопасными без GIL
gh-81137: Отмените присваивание полю
__code__
функции, когда новый объект кода имеет несоответствующий тип (например, от генератора к простой функции).gh-79932: Вызывает исключение, если
frame.clear()
вызывается на приостановленном кадре.gh-81925: Реализация собственных идентификаторов потоков для GNU KFreeBSD.
gh-111843: Использование экспоненциального отката позволяет сократить количество неудачных попыток оптимизации уровня 2 более чем на 99 %.
gh-110829: Присоединение к потоку теперь гарантирует, что базовый поток ОС завершился. Это необходимо для более безопасного выполнения fork() в многопоточных процессах.
gh-109369: Убедитесь, что трассировки второго уровня деоптимизируются, если код подвергается инструментальному контролю
gh-111772: Специализация слотов загрузки и хранения для _Py_T_OBJECT, а также Py_T_OBJECT_EX
gh-111666: Ускорьте работу
BaseExceptionGroup.derive()
,BaseExceptionGroup.subgroup()
иBaseExceptionGroup.split()
, изменив способ разбора переданных аргументов.gh-111654: Исправление сбоя во время выполнения при возникновении ошибки в опкоде
LOAD_FROM_DICT_OR_DEREF
.gh-111623: Добавляет поддержку обмена кортежами между интерпретаторами с помощью кросс-интерпретаторного API. Исправление Энтони Шоу.
gh-111354: oparg из
YIELD_VALUE
теперь1
, если инструкция является частью yield-from или await, и0
в противном случае.Состояние кадра SUSPENDED теперь разделено на
SUSPENDED
иSUSPENDED_YIELD_FROM
. Это упрощает код в_PyGen_yf
.gh-111520: Объедините интерпретаторы Уровня 1 (байткод) и Уровня 2 (микрооперации) вместе, переместив цикл интерпретатора Уровня 2 и переключатель в
_PyEval_EvalFrameDefault()
вPython/ceval.c
. ФайлPython/executor.c
исчез. Также макросыTIER_ONE
иTIER_TWO
теперь обрабатываются генератором кода.**Осторожно! ** Это изменяет переменные окружения для включения микроопераций и их отладки на
PYTHON_UOPS
иPYTHON_LLTRACE
.gh-109181: Ускоряет создание объектов
Traceback
, лениво вычисляя номер строки. Исправление от Pablo Galindogh-111420: Разрешить комментарии типов в операторах
with
с круглыми скобкамиgh-111438: Добавлена поддержка совместного использования флоатов между интерпретаторами с помощью кросс-интерпретаторного API. Исправление Энтони Шоу.
gh-111435: Добавьте поддержку совместного использования
True
иFalse
между интерпретаторами с помощью кросс-интерпретаторного API. Исправление Энтони Шоу.gh-102388: Исправлена ошибка, при которой кодеки
iso2022_jp_3
иiso2022_jp_2004
считывали данные за пределы границgh-111366: Исправление проблемы в
codeop
, из-за которой исключенияSyntaxError
, возникающие при наличии недопустимого синтаксиса, не содержали точных сообщений об ошибках. Исправление от Pablo Galindogh-111380: Исправлена ошибка, из-за которой
SyntaxWarning
появлялся дважды при разборе, если в дальнейшем встречался недопустимый синтаксис. Исправление от Pablo galindogh-111374: Добавлена новая переменная окружения
PYTHON_FROZEN_MODULES
. Она определяет, будут ли замороженные модули игнорироваться механизмом импорта, что эквивалентно опции командной строки-X frozen_modules
.gh-111354: Удалите
oparg
изYIELD_VALUE
. Изменитеoparg
изRESUME
, чтобы включить информацию об исключительной глубине. Эти изменения позволяют упростить код в генераторе close.gh-94438: Исправление регрессии, из-за которой при отладке нельзя было переходить между
is None
иis not None
. Исправление Саванны Островски.gh-67224: Показывать строки исходного текста в трассировках при использовании опции
-c
во время работы Python. Исправление от Pablo Galindogh-111123: Исправлена ошибка, при которой объявление
global
в блокеexcept
отклонялось, если глобал использовался в блокеelse
.gh-110938: Исправление сообщений об ошибках для блоков с отступами, содержащих функции и классы с параметрами общего типа. Исправление от Pablo Galindo
gh-109214: Удалите ненужные обновления указателей инструкций перед возвратом из фреймов.
gh-110912: Корректно отображает обратную трассировку для исключений
MemoryError
, использующих модульtraceback
. Исправление от Пабло Галиндоgh-109894: Исправлено падение из-за неправильной инициализации статического
MemoryError
в подынтепретаторе.gh-110892: Возвращает
NULL
для событийPyTrace_RETURN
, вызванных исключениемgh-110864: Исправьте разбор аргумента
_PyArg_UnpackKeywordsWithVararg
для функций, определяющих параметры pos-or-keyword, vararg и kw-only.gh-109094: Замените
prev_instr
в кадре интерпретатора наinstr_ptr
, который указывает на начало инструкции, выполняющейся в данный момент (или будет выполняться после возобновления кадра).gh-110805: Позволяет repl показывать исходный код и полные трассировки. Исправление от Пабло Галиндо
gh-110722: Добавьте
PYTHON_PRESITE=package.module
, чтобы импортировать модуль на ранней стадии жизненного цикла интерпретатора до выполненияsite.py
. Для существования этой опции Python должен быть built in debug mode.gh-110481: Реализуйте смещенный подсчет ссылок в сборках
--disable-gil
.gh-110543: Исправление регрессии в Python 3.12, когда
types.CodeType.replace()
при вызове на объекте кода модуля или класса, содержащем понимание, приводил к поломке объекта кода. Исправление от Jelle Zijlstra.gh-89519: Удалены дескрипторы с цепочкой
classmethod
(введены в bpo-19072). Теперь их нельзя использовать для обертывания других дескрипторов, таких какproperty
. Основной дизайн этой функции был несовершенен и вызвал ряд проблем в дальнейшем. Чтобы «пропустить»classmethod
, используйте атрибут__wrapped__
, который был добавлен в Python 3.10.gh-103615: Использование локальных событий для отслеживания опкодов
bpo-46657: Добавлена поддержка аллокатора памяти mimalloc.
gh-106718: Когда PyConfig.stdlib_dir задан явно, он теперь соблюдается и не переопределяется PyConfig.home.
gh-106905: Исправление некорректной ошибки SystemError о несоответствии глубины рекурсии конструктора AST.
gh-100445: Улучшено сообщение об ошибке для нетерминированных строк с эскейпами.
bpo-45759: Улучшены сообщения об ошибках для утверждений
elif
/else
, не соответствующих ни одному правильному утверждению. Исправление от Jeremiah Vivian.
Библиотека¶
gh-111942: Исправление SystemError в конструкторе TextIOWrapper с некодируемым аргументом «errors» в режиме без отладки.
gh-111995: Добавлена константа
NI_IDN
в модульsocket
, если она присутствует в C во время сборки, для использования сsocket.getnameinfo()
.gh-109538: Выдача предупреждения вместо отображения
RuntimeError
, если цикл событий уже закрыт наStreamWriter.__del__()
.gh-111942: Исправление сбоев в
io.TextIOWrapper.reconfigure()
при передаче некорректных аргументов, например, нестроковой кодировки.gh-111460:
curses
: восстановление поддержки широких символов (включаяcurses.unget_wch()
иget_wch()
) на macOS, которая была недоступна из-за регрессии в Python 3.12.gh-103791:
contextlib.suppress
теперь поддерживает подавление исключений, поднятых как частьBaseExceptionGroup
, в дополнение к недавней поддержкеExceptionGroup
.gh-111835: Класс
mmap.mmap
теперь имеет методseekable()
, который можно использовать, когда требуется объект, похожий на файл с возможностью поиска. Методseek()
теперь возвращает новую абсолютную позицию. Исправление от Donghee Na.gh-111804: Удалите posix.fallocate() в WASI, поскольку базовая функция posix_fallocate() недоступна в WASI preview2.
gh-111841: Исправлено усечение аргументов по встроенному нулевому символу в
os.putenv()
иos.unsetenv()
на Windows.gh-111768:
wsgiref.util.is_hop_by_hop()
теперь корректно отображается в__all__
.gh-80731: Избегайте выполнения функции по умолчанию в
cmd.Cmd
в блоке exceptgh-111541: Исправьте
doctest
для нестроящихся подклассовSyntaxError
.gh-111719: Добавьте дополнительную проверку аргументов для команды
alias
вpdb
gh-111482:
time
: Сделайте функцииtime.clock_gettime()
иtime.clock_gettime_ns()
в 2 раза быстрее за счет более удобного соглашения о вызовах. Патч от Виктора Стиннера.gh-110894: Вызовите обработчик циклических исключений для исключений в
client_connected_cb
изasyncio.start_server()
, чтобы приложения могли их обработать. Исправление Кумара Адитьи.gh-111531: Исправление утечки ссылок в методах
bind_class()
иbind_all()
виджетовtkinter
.gh-111246:
asyncio.loop.create_unix_server()
теперь будет автоматически удалять сокет Unix при закрытии сервера.gh-111356: Добавлены
io.text_encoding()
,io.DEFAULT_BUFFER_SIZE
иio.IncrementalNewlineDecoder
вio.__all__
.gh-66425: Удалите код для установки заголовка REMOTE_HOST из модуля wsgiref, так как он недоступен. Этот заголовок используется по соображениям производительности и не нужен в модуле wsgiref.
gh-111429: Ускорить
pathlib.PurePath.relative_to()
иis_relative_to()
.gh-111342: Исправлена опечатка в
math.sumprod()
.gh-68166: Удалите упоминание о неподдерживаемом типе элемента «vsapi» в
tkinter.ttk.Style.element_create()
. Добавьте тесты дляelement_create()
и других методовttk.Style
. Добавьте примеры дляelement_create()
в документацию.gh-111388: Добавьте параметр
show_group
кtraceback.format_exception_only()
, который позволяет форматировать экземплярыExceptionGroup
.gh-79033: Еще одна попытка исправить
asyncio.Server.wait_closed()
. Теперь она блокирует до тех пор, пока не будут выполнены оба условия: сервер закрыт, и больше нет активных соединений. (Это означает, что в некоторых случаях, когда в 3.12.0 эта функция некорректно возвращалась немедленно, теперь она будет блокироваться; в частности, когда активных соединений нет, но сервер еще не закрыт).gh-111259: Оптимизация рекурсивных подстановочных знаков в
pathlib
.gh-111295: Исправление того, что
time
не проверял ошибки при инициализации.gh-111253: Добавьте проверку ошибок при инициализации модуля
_socket
.gh-111251: Исправление того, что
_blake2
не проверял ошибки при инициализации.gh-111233: Исправление того, что
select
не проверял ошибки при инициализации.gh-111230: Исправление того, что
ssl
не проверял ошибки при инициализации.gh-111174: Исправление сбоя в
io.BytesIO.getbuffer()
, вызываемом повторно для пустых BytesIO.gh-111187: Отложите удаление версии для locale.getdefaultlocale() до Python 3.15.
gh-111159: Исправьте сравнение вывода
doctest
для исключений с примечаниями.gh-110910: Исправьте обработку недействительных состояний в
asyncio.TaskGroup
иasyncio.Timeout
. Теперь они вызывают корректную ошибку RuntimeError, если используются неправильно и после этого остаются в некорректном состоянии.gh-111092: Заставьте turtledemo работать без включенного по умолчанию root.
gh-110944: Поддержка псевдонимов и удобных переменных для завершения
pdb
gh-110745: Добавлен параметр newline в
pathlib.Path.read_text()
. Исправление от Junya Okabe.gh-84583: Заставьте
pdb
войти в режим после смерти даже дляSyntaxError
.gh-80675: Установите
f_trace_lines = True
на все кадры послеpdb.set_trace()
gh-110771: Представьте части установки и очистки
asyncio.run_forever()
в виде отдельных методовasyncio.run_forever_setup()
иasyncio.run_forever_cleanup()
. Это позволяет более тесно интегрироваться с циклами событий GUI.gh-110774: Поддержка установки кваргов
asyncio.Runner
loop_factory вunittest.IsolatedAsyncioTestCase
gh-110392: Исправьте
tty.setraw()
иtty.setcbreak()
: ранее они возвращали частично измененный список исходных атрибутов tty.tty.cfmakeraw()
иtty.cfmakecbreak()
теперь делают копию списка специальных символов перед его модификацией.gh-59013: Уточните номер строки точки останова функции в
pdb
gh-88434: Выдавать предупреждение об устаревании для нецелых чисел в функциях и методах
gettext
, которые учитывают множественные формы, даже если перевод не найден.gh-110395: Убедитесь, что объекты
select.kqueue()
корректно отображаются как закрытые в дочерних вилках, чтобы предотвратить операции с недействительным дескриптором файла.gh-110196: Добавьте метод
__reduce__
кIPv6Address
, чтобы сохранитьscope_id
gh-109747: Улучшены ошибки для неподдерживаемых look-behind паттернов. Теперь re.error выдается вместо OverflowError или RuntimeError при слишком большой ширине шаблона look-behind.
gh-109466: Добавьте свойство
ipaddress.IPv4Address.ipv6_mapped
, которое возвращает IPv4-сопоставленный IPv6-адрес.gh-85098: Реализуйте CLI модуля
symtable
и улучшите repr модуляSymbol
.gh-108791: Улучшена обработка ошибок в интерфейсе командной строки
pdb
, благодаря чему он выдает более лаконичные сообщения об ошибках.gh-105931: Измените
compileall
так, чтобы префикс stripdir удалялся из полного пути, записанного в скомпилированном файле.pyc
, только в том случае, если префикс полностью совпадает с началом полного пути. Если префикс не совпадает, вычеркивание не производится и выводится соответствующее предупреждение.Ранее все компоненты пути префикса stripdir, которые совпадали с полным путем, удалялись, а те, которые не совпадали, оставались в одиночестве (в том числе и те, которые перемежались между совпадающими компонентами).
gh-107431: Сделайте типы
DictProxy
иListProxy
вmultiprocessing.managers
Generic Alias Types для[]
использования в контекстах типизации.gh-72904: Добавить
glob.translate()
. Эта функция преобразует имя пути с подстановочными знаками в стиле shell в регулярное выражение.gh-90026: Определите
USE_XATTRS
на Cygwin, чтобы функции, связанные с XATTR, в модулеos
стали доступны.gh-90890: Новые методы
mailbox.Maildir.get_info()
,mailbox.Maildir.set_info()
,mailbox.Maildir.get_flags()
,mailbox.Maildir.set_flags()
,mailbox.Maildir.add_flag()
,mailbox.Maildir.remove_flag()
. Эти методы ускоряют доступ к информации и/или флагам сообщения и полезны, когда нет необходимости обращаться к содержимому сообщения, например, при итерации по Maildir для поиска сообщений с определенными флагами.gh-102956: Исправление возврата пустых байтовых строк после поиска в модуле zipfile
gh-102895: Добавлен параметр
local_exit
дляcode.interact()
, чтобыexit()
иquit
не закрывалиsys.stdin
и не поднималиSystemExit
.gh-97928: Измените поведение
tkinter.Text.count()
. Теперь он всегда возвращает целое число, если указана одна или менее опций подсчета. Ранее он мог возвращать один счет в виде кортежа 1, целое число (только если была указана опция"update"
) илиNone
, если элементов не найдено. Теперь результат будет таким же, если в качествеwantobjects
указать0
.gh-96954: Переключите хранение имен кодовых точек юникода на использование другой структуры данных, а именно directed acyclic word graph. Благодаря этому общая библиотека unicodedata уменьшится примерно на 440 килобайт. Внесено Карлом Фридрихом Больц-Терейком с использованием кода из проекта PyPy.
gh-73561: Опустить область видимости интерфейса в IPv6-адресе при использовании в качестве заголовка хоста с помощью
http.client
.gh-86826:
zipinfo
теперь поддерживает весь диапазон значений в строке TZ, определенный RFC 8536, и обнаруживает все недопустимые форматы. Реализации на Python и C теперь вызывают исключения одного и того же типа при недопустимых данных.
Тесты¶
gh-111808: Сделайте значение по умолчанию
test.support.infinite_recursion()
условным в зависимости от того, использовались ли оптимизации при компиляции интерпретатора. Это поможет при работе с такими платформами, как WASI, размер стека которых сильно ограничен в отладочных сборках.gh-110722: Сбор покрытия строк стандартных библиотек в наборе регрессионных тестов стал более точным и более быстрым. Исправление от Łukasz Langa.
gh-110367: Сделайте опцию regrtest
--verbose3
совместимой с опциями--huntrleaks -jN
. Теперь команда./python -m test -j1 -R 3:3 --verbose3
работает так, как ожидалось. Исправление Виктора Стиннера.gh-111165: Удалите больше не используемые функции
run_unittest()
иrun_doctest()
из модуляtest.support
.gh-110932: Исправьте regrtest, если определена переменная окружения
SOURCE_DATE_EPOCH
: используйте значение переменной в качестве случайного зерна. Исправление Виктора Стиннера.gh-110995: test_gdb: Исправление обнаружения gdb, собранного без поддержки сценариев Python. Исправление от Виктора Стиннера.
gh-110918: Шаблоны соответствия тестовых примеров, заданные опциями
--match
,--ignore
,--matchfile
и--ignorefile
, теперь проверяются в порядке их указания, и последнее совпадение определяет, будет ли тестовый пример запущен или проигнорирован.gh-108747: Добавьте модульный тест для крючков
usercustomize
иsitecustomize
изsite
.
Построить¶
gh-96954: Заставьте
make regen-unicodedata
работать для сборок CPython вне дерева.gh-112088: Добавьте скрипт
Tools/build/regen-configure.sh
для регенерацииconfigure
с образом контейнера Ubuntu. Образ контейнераquay.io/tiran/cpython_autoconf:271
(tiran/cpython_autoconf) больше не используется. Исправление Виктора Стиннера.gh-111046: Для wasi-потоков память теперь экспортируется, чтобы исправить проблемы совместимости с некоторыми режимами выполнения wasm.
gh-110828: AIX 32bit требуется
-latomic
для сборки модуля расширения_testcapi
.gh-85283: Расширения
errno
,md5
,resource
,winsound
,_ctypes_test
,_multiprocessing.posixshmem
,_scproxy
,_stat
,_testimportmultiple
и_uuid
. Расширения на C теперь собираются с помощью limited C API. Исправление Виктора Стиннера.
Windows¶
gh-111856: Исправляет
fstat()
в файловых системах, которые не поддерживают запросы идентификатора файла. К ним относятся FAT32 и exFAT.gh-111293: Исправление
os.DirEntry.inode
, снижающее старшие 64 бита идентификатора файла в некоторых файловых системах под Windows.gh-110913: WindowsConsoleIO теперь корректно разбивает большие буферы на куски, не разделяя последовательности UTF-8.
macOS¶
gh-59703: Для фреймворков macOS в
getpath.c
используйте системную функциюdladdr
для поиска пути к общей библиотеке, а не зависите от устаревших API macOS.gh-110950: Обновите программу установки macOS, чтобы включить в нее исправление Tcl/Tk из восходящего потока для предупреждения
Secure coding is not enabled for restorable state!
, возникающего в Tkinter на macOS 14 Sonoma.gh-111015: Убедитесь, что IDLE.app и Python Launcher.app установлены с соответствующими правами на сборках macOS.
gh-71383: Обновите программу установки macOS, чтобы включить в нее исправление ошибки
ttk::ThemeChanged
, возникающей в Tkinter при работе с Tcl/Tk.gh-92603: Обновите программу установки macOS, чтобы включить исправление, принятое восходящим потоком Tcl/Tk, для ошибки, возникающей после уничтожения первого экземпляра
tkinter.Tk()
.
IDLE¶
bpo-35668: Добавьте документацию к модулю отладчика IDLE. Исправьте две ошибки: инициализируйте
Idb.botframe
(должно быть в Bdb); вIdb.in_rpc_code
проверяйте, является лиprev_frame
None
, прежде чем пытаться его использовать. Значительно расширить test_debugger.
Инструменты/демоверсии¶
gh-111903: Argument Clinic теперь поддерживает директиву
@critical_section
, которая предписывает Argument Clinic генерировать критическую секцию вокруг вызова функции, что блокирует объектself
в сборках--disable-gil
. Исправление Сэма Гросса.
C API¶
gh-112026: Добавьте еще раз приватную функцию
_PyThreadState_UncheckedGet()
в качестве псевдонима к новой публичной функцииPyThreadState_GetUnchecked()
. Исправление Виктора Стиннера.gh-112026: Восстановите удаленную функцию
_PyDict_GetItemStringWithError()
. Она используется numpy. Исправление от Виктора Стиннера.gh-112026: Восстановление удаленных частных функций, макросов и структур C API, которым пока нет простой замены:
_PyDict_GetItem_KnownHash()
_PyDict_NewPresized()
_PyHASH_BITS
_PyHASH_IMAG
_PyHASH_INF
_PyHASH_MODULUS
_PyHASH_MULTIPLIER
_PyLong_Copy()
_PyLong_FromDigits()
_PyLong_New()
_PyLong_Sign()
_PyObject_CallMethodId()
_PyObject_CallMethodNoArgs()
_PyObject_CallMethodOneArg()
_PyObject_CallOneArg()
_PyObject_EXTRA_INIT
_PyObject_FastCallDict()
_PyObject_GetAttrId()
_PyObject_Vectorcall()
_PyObject_VectorcallMethod()
_PyStack_AsDict()
_PyThread_CurrentFrames()
Структура _PyUnicodeWriter
_PyUnicodeWriter_Dealloc()
_PyUnicodeWriter_Finish()
_PyUnicodeWriter_Init()
_PyUnicodeWriter_Prepare()
_PyUnicodeWriter_PrepareKind()
_PyUnicodeWriter_WriteASCIIString()
_PyUnicodeWriter_WriteChar()
_PyUnicodeWriter_WriteLatin1String()
_PyUnicodeWriter_WriteStr()
_PyUnicodeWriter_WriteSubstring()
_PyUnicode_AsString()
_PyUnicode_FromId()
_PyVectorcall_Function()
_Py_IDENTIFIER()
_Py_c_abs()
_Py_c_diff()
_Py_c_neg()
_Py_c_pow()
_Py_c_prod()
_Py_c_quot()
_Py_c_sum()
_Py_static_string()
_Py_static_string_init()
Патч Виктора Стиннера.
gh-112026: Снова добавьте
<ctype.h>
и<unistd.h>
вPython.h
, но не включайте их в ограниченный C API версии 3.13 и новее. Исправление Виктора Стиннера.gh-111956: Добавьте API только внутренней одноразовой инициализации:
_PyOnceFlag
и_PyOnceFlag_CallOnce
.gh-111262: Добавьте функции
PyDict_Pop()
иPyDict_PopString()
: удаление ключа из словаря и возвращение удаленного значения по желанию. Это похоже наdict.pop()
, но без значения по умолчанию и без поднятияKeyError
, если ключ отсутствует. Исправление Стефана Бехнеля и Виктора Стиннера.gh-111863: Переименуйте
Py_NOGIL
вPy_GIL_DISABLED
. Патч от Хьюго ван Кеменаде.gh-111138: Добавьте функции
PyList_Extend()
иPyList_Clear()
: аналогично методам Pythonlist.extend()
иlist.clear()
. Исправление Виктора Стиннера.gh-108765: В Windows
Python.h
больше не включает стандартный заголовочный файл<stddef.h>
. Если он необходим, то теперь его следует включать явно. Исправление Виктора Стиннера.gh-111569: Реализуйте «Критические секции Python» из PEP 703. Это макросы, которые помогут заменить GIL на пер-объектные блокировки в сборке
--disable-gil
CPython. В сборке по умолчанию макросы не работают.gh-111506: В ограниченном API C версии 3.13 функция
Py_SET_REFCNT()
теперь реализована как непрозрачный вызов функции. Исправление Виктора Стиннера.gh-108082: Добавить функцию
PyErr_FormatUnraisable()
.gh-110964: Переместите недокументированные частные функции _PyArg и структуру _PyArg_Parser во внутренний C API (
pycore_modsupport.h
). Исправление Виктора Стиннера.gh-110815: Поддерживать имена ключевых слов, отличные от ASCII, в
PyArg_ParseTupleAndKeywords()
.gh-109587: Представлены
PyUnstable_PerfTrampoline_CompileCode()
,PyUnstable_PerfTrampoline_SetPersistAfterFork()
иPyUnstable_CopyPerfMapFile()
. Эти функции позволяют модулям расширения инициализировать батуты с нетерпением, после того как приложение «разогрелось». Это делает возможным постоянное выполнение perf-батутов.gh-85283: Добавьте функцию
PySys_Audit()
в ограниченный C API. Исправление Виктора Стиннера.gh-85283: Добавьте
PyMem_RawMalloc()
,PyMem_RawCalloc()
,PyMem_RawRealloc()
иPyMem_RawFree()
в ограниченный C API. Исправление Виктора Стиннера.gh-106672: Функции
PyDict_GetItem()
,PyDict_GetItemString()
,PyMapping_HasKey()
,PyMapping_HasKeyString()
,PyObject_HasAttr()
,PyObject_HasAttrString()
иPySys_GetObject()
, которые очищают все ошибки, возникшие при вызове функции, сообщают о них теперь с помощьюsys.unraisablehook()
.gh-67565: Удалена лишняя проверка на C-континуальность в
getargs.c
,binascii
,ssl
и Argument Clinic. Исправлено Стефаном Крахом и Фурканом Ондером
Python 3.13.0 alpha 1¶
Дата выхода: 2023-10-13
Безопасность¶
gh-108310: Исправлена проблема, из-за которой экземпляры
ssl.SSLSocket
были уязвимы к обходу рукопожатия TLS и включенных в него защит (например, проверки сертификата), а также к обработке отправленных незашифрованных данных, как если бы они были зашифрованы после рукопожатия TLS. О проблеме безопасности сообщил CVE-2023-40217 Аапо Оксман. Исправление разработано Грегори П. Смитом.gh-107774: В PEP 669 указано, что
sys.monitoring.register_callback
будет генерировать событие аудита. В предыдущих версиях Python 3.12 событие аудита не генерировалось. Теперь это исправлено.gh-102988: Исправлено изменение
email.utils
, связанное с улучшением безопасности, выпущенное в версии 3.12beta4, которое непреднамеренно приводило к тому, чтоemail.utils.getaddresses
не мог разобрать адреса электронной почты с запятой в поле имени, взятого в кавычки. См. gh-106669.gh-99108: Обновите наш новый встроенный код HACL*
hashlib
из апстрима. Встроенный SHA2 должен работать быстрее, а также исправлена проблема с SHA3 на 32-битных платформах.gh-102509: Начните инициализацию
ob_digit
во время создания объектовPyLongObject
. Исправление Илии Волочии.
Ядро и встроенные модули¶
gh-110782: Исправление сбоя при построении
typing.TypeVar
с аргументом в виде ключевого слова. Исправление от Jelle Zijlstra.gh-110752: Сброс
ceval.eval_breaker
вinterpreter_clear()
gh-110721: Используйте реализацию
traceback
для функциональностиPyErr_Display()
по умолчанию. Исправление от Пабло Галиндоgh-110696: Исправление некорректного сообщения об ошибке при распаковке недопустимого аргумента. Исправление от Pablo Galindo
gh-104169: Разделите токенизатор на две отдельные директории: - Одна часть включает в себя собственно логику производства лексем и находится в
Parser/lexer
. - Вторая часть оборачивает лексему в соответствии с различными режимами токенизации (string, utf-8, file, interactive, readline) и находится вParser/tokenizer
.gh-110688: Удалите недокументированный метод
test_c_api
изset
, который был определен только для целей тестирования вPy_DEBUG
. Теперь у нас есть правильные тесты CAPI.gh-104584: Исправлена утечка ссылок при запуске с включенным
PYTHONUOPS
или-X uops
.gh-110514: Добавьте события
PY_THROW
к событиямsys.setprofile()
.gh-110489: Оптимизируйте
math.ceil()
, когда на вход подается именно float, что приводит к улучшению примерно на 10 %.gh-110455: Охраняйте
assert(tstate->thread_id > 0)
с помощью#ifndef HAVE_PTHREAD_STUBS
. Это позволяет сборкам pydebug работать под WASI, в котором (в настоящее время) отсутствует поддержка потоков.gh-110309: Удалите ненужные пустые константные узлы в асте спецификаций f-строк.
gh-110259: Корректное определение спецификации форматирования в f-строках (с одинарными или тройными кавычками), которые имеют несколько строк в части выражения и включают спецификацию форматирования. Исправление от Pablo Galindo
gh-110237: Исправление отсутствующих проверок ошибок для вызовов
PyList_Append
в_PyEval_MatchClass
.gh-110164: regrtest: Если определена переменная окружения
SOURCE_DATE_EPOCH
, regrtest теперь отключает рандомизацию тестов. Исправление Виктора Стиннера.gh-109889: Исправьте алгоритм обнаружения избыточных NOP компилятора, чтобы он пропускал NOP без номера строки при поиске номера строки следующей инструкции.
gh-109853:
sys.path[0]
теперь устанавливается правильно для субинтерпретаторов.gh-109923: Установка номера строки на
POP_TOP
, следующей заRETURN_GENERATOR
.gh-105716: Субинтерпретаторы теперь корректно обрабатывают случай, когда у них есть потоки, запущенные в фоновом режиме. Раньше такие потоки мешали их очистке и уничтожению, а также мешали запуску другого скрипта.
gh-109369: Внутренний eval_breaker и поддерживающие его флаги, а также версия мониторинга были объединены в одно атомарное целое число для ускорения проверок.
gh-109823: Исправлена ошибка, при которой компилятор не корректировал метки при удалении пустого базового блока, являющегося целью перехода.
gh-109793: Главный поток больше не завершается преждевременно, когда подынтерпретатор очищается во время финализации выполнения. Эта ошибка представляла собой проблему, в частности, потому, что при ее возникновении процесс Python всегда возвращался с кодом завершения 0, даже если он потерпел неудачу.
gh-109719: Исправление отсутствующих меток цели перехода при переупорядочивании компилятором холодных/теплых блоков.
gh-109595: Добавьте опцию командной строки
-X cpu_count
, чтобы отменить результаты возвратаos.cpu_count()
иos.process_cpu_count()
. Эта опция полезна для пользователей, которым нужно ограничить ресурсы процессора контейнерной системы без необходимости модифицировать контейнер (код приложения). Исправление от Donghee Na.gh-109627: Исправлена ошибка, при которой компилятор не присваивал новую метку цели перехода дублированному блоку малого выхода.
gh-109596: Исправьте некоторые лексемы в грамматике, которые были неправильно помечены как мягкие ключевые слова. Также исправлены некоторые повторяющиеся имена правил и исключено повторение правил. Исправление от Pablo Galindo
gh-109496: На Python, собранном в режиме отладки,
Py_DECREF()
теперь вызывает_Py_NegativeRefcount()
, если объект является висячим указателем на деаллоцированную память: память, заполненную0xDD
«мёртвым байтом», заполненным отладочным хуком на аллокаторах памяти. Исправление заключается в проверке количества ссылок перед проверкой на_Py_IsImmortal()
. Исправление Виктора Стиннера.gh-107265: Деоптировать опкоды, скрытые исполнителем, когда требуется базовый опкод
gh-109371: Деоптировать инструкции правильно для инициализации инструмента и изменить неправильное утверждение в инструментарии, когда предыдущий инструмент уже устанавливает события INSTRUCTION
gh-105658: Исправлена ошибка, при которой трассировка строки блока except, заканчивающегося условным выражением, включала избыточное событие со строкой условного выражения.
gh-109219: Исправление компиляции диапазонов type param, использующих имя, которое также свободно во внутреннем диапазоне.
gh-109351: Исправление сбоя при компиляции некорректного AST с именованным (моржовым) выражением.
gh-109341: Исправление сбоя при компиляции некорректного AST с участием
ast.TypeAlias
.gh-109195: Исправьте исходное расположение инструкции
LOAD_*
, предшествующей инструкцииLOAD_SUPER_ATTR
для загрузки глобальной (или теневой) переменнойsuper
таким образом, чтобы она охватывала только имяsuper
, а не следующие за ним круглые скобки.gh-109256: Идентификаторы опкодов для специализированных опкодов выделяются в свой собственный диапазон, чтобы улучшить стабильность идентификаторов для «настоящих» опкодов.
gh-109207: Исправьте системную ошибку в
__repr__
объекта записи symtable.gh-109179: Исправлена ошибка, из-за которой при отображении трассировки на C пропадали заметки из
SyntaxError
.gh-109118: Запретить вложенные области (лямбды, генераторы выражений и понимания) в областях аннотаций PEP 695, которые вложены в классы.
gh-109156: Добавьте тесты для удаления инструментов из инструкций, сохраняя инструменты для строк
gh-109114: Расслабьте определение сообщения об ошибке для недопустимых лямбд внутри f-строк, чтобы не искать произвольные поля замены во избежание ложных срабатываний. Исправление от Пабло Галиндо
gh-105848: Добавьте новый опкод
CALL_KW
, используемый для вызовов, содержащих аргументы в виде ключевых слов. Также исправлен возможный сбой при переходе по вызовам методов в отладчике.gh-109052: Используйте базовый опкод при сравнении объектов кода, чтобы избежать вмешательства инструментария
gh-109118: Исправление падения интерпретатора при возникновении NameError внутри параметров типа общего класса.
gh-88943: Улучшена синтаксическая ошибка для не-ASCII символа, следующего за числовым литералом. Теперь она указывает на недопустимый не-ASCII символ, а не на допустимый числовой литерал.
gh-108976: Исправление сбоя, возникающего после деинструментации объекта кода в обратном вызове мониторинга.
gh-108732: Снова сделайте итерационные переменные в пониманиях, скопированных на модули и классы, видимыми для pdb и других инструментов, использующих
frame.f_locals
.gh-108959: Исправлено размещение каретки в местах ошибок для операций с подстрочными и бинарными символами, в которых используются несемантические круглые скобки и пробелы. Исправление от Pablo Galindo
gh-104584: Исправление сбоя при запуске с включенным
PYTHONUOPS
или-X uops
и возникновении ошибки при оптимизации.gh-108727: Определите
tp_dealloc
дляCounterOptimizer_Type
. Это исправляет ошибку сегментации при деаллокации.gh-108520: Исправьте
multiprocessing.synchronize.SemLock.__setstate__()
для правильной инициализацииmultiprocessing.synchronize.SemLock._is_fork_ctx
. Это исправляет регрессию при передаче SemLock между вложенными процессами.Переименуйте
multiprocessing.synchronize.SemLock.is_fork_ctx
вmultiprocessing.synchronize.SemLock._is_fork_ctx
, чтобы не раскрывать его как публичный API.gh-108654: Восстановление локалей, затененных встроенным пониманием, если это понимание вызывает исключение.
gh-108488: Измените инициализацию записей встроенного кэша таким образом, чтобы запись кэша для
JUMP_BACKWARD
инициализировалась нулем, а не значениемadaptive_counter_warmup()
, используемым для всех остальных инструкций. Этот счетчик, уникальный для всех инструкций, ведет отсчет от нуля.gh-108716: Отключает глубокую заморозку объектов кода. Модули остаются замороженными, так что поиск в файловой системе для общих модулей не требуется.
gh-108614: Добавлена инструкция RESUME_CHECK, чтобы избежать необходимости обработки инструментария, сигналов и переключения контекстов в механизме выполнения второго уровня.
gh-108487: Переместите утверждение, которое может вызвать ложный сбой в опасном случае, который должен вызывать только деоптимизацию.
gh-106176: Используйте
WeakValueDictionary
для отслеживания списков, содержащих модули, которые каждый поток импортирует в данный момент. Это помогает избежать утечки ссылок из-за того, что список хранится дольше, чем нужно. Используются слабые ссылки, так как GC не может прервать очистку.gh-105481: Этап сборки regen-opcode был удален, и теперь его работа выполняется в regen-cases.
gh-107901: Исправьте отсутствие номера строки в
JUMP_BACKWARD
в конце цикла for.gh-108113: Встроенный
compile()
теперь может принимать новый флаг,ast.PyCF_OPTIMIZED_AST
, который аналогиченast.PyCF_ONLY_AST
, за исключением того, что возвращаемыйAST
оптимизируется в зависимости от значения аргументаoptimize
.ast.parse()
теперь принимает необязательный аргументoptimize
, который передается во встроеннуюcompile()
. Это позволяет получить оптимизированныйAST
.gh-107971: Идентификаторы опкодов генерируются из bytecodes.c вместо того, чтобы жестко кодироваться в opcode.py.
gh-107944: Улучшено сообщение об ошибке для вызовов функций с плохими аргументами ключевых слов. Исправление от Pablo Galindo
gh-108390: Вызывает исключение при установке нелокального события (
RAISE
,EXCEPTION_HANDLED
и т. д.) вsys.monitoring.set_local_events
.Исправление сбоя при трассировке в рекурсивных вызовах классов Python.
gh-108035: Удалите структуру
_PyCFrame
, переместив указатель на текущий фрейм интерпретатора обратно в состояние потока, как это было в 3.10 и более ранних версиях. Структура_PyCFrame
существовала как оптимизация производительности для трассировки. С тех пор как был реализован PEP 669, эта оптимизация больше не применяется.gh-91051: Исправление прерывания/сегфайта при использовании всех восьми слотов наблюдателя типов на платформах, где
char
подписан по умолчанию.gh-106581: Исправление возможных сбоев утверждений и пропущенных событий инструментария при включении
PYTHONUOPS
или-X uops
.gh-107526: Верните преобразование
vars
,dir
,next
,getattr
иiter
в клинику аргументов.gh-84805: Автогенерация сигнатур для функций расширения
METH_NOARGS
иMETH_O
.gh-107758: Сделайте процедуру
dump_stack()
, используемую функциейlltrace
(низкоуровневая отладка интерпретатора), устойчивой к рекурсии, обеспечив, чтобы она никогда не вызывала метод__repr__
, реализованный на Python. Также сделайте так, чтобы аналогичный вывод для Tier-2 uops отображался наstdout
(вместоstderr
), чтобы соответствовать кодуlltrace
в ceval.c.gh-107659: Добавьте документацию для
ctypes.pointer()
иctypes.POINTER()
.gh-105848: Измените байткод таким образом, чтобы фактический вызываемый метод для
CALL
находился в последовательной позиции в стеке (независимо от того, активна ли оптимизация вызова связанных методов).gh-107674: Исправлена регрессия производительности в
sys.settrace
.gh-107724: В предварительных версиях 3.12, вплоть до rc1, в функции обратного вызова sys.monitoring для события
PY_THROW
отсутствовал третий аргумент исключения. Теперь это исправлено.gh-84436: Пропускает модификацию количества ссылок для многих известных бессмертных объектов.
gh-107596: Специализируйтесь на подписывании объектов
str
по индексамint
.gh-107080: Сборки Trace refs (
--with-trace-refs
) аварийно завершались при использовании изолированных подинтерпретаторов. Проблемное глобальное состояние было изолировано для каждого интерпретатора. Кроме устранения сбоев, это изменение не влияет на пользователей.gh-107557: Генерируем кейсы, необходимые для абстрактного интерпретатора второго уровня для оптимизационных проходов в CPython.
gh-106608: Сделайте
_PyUOpExecutorObject
переменной длины.gh-100964: Очистить состояние исключения генераторов после
return
, чтобы прервать циклы обращения.gh-107455: Улучшение сообщений об ошибках при преобразовании несовместимого типа в
ctypes.c_char_p
,ctypes.c_wchar_p
иctypes.c_void_p
.gh-107263: Увеличиваем лимит рекурсии C для функций, отличных от основного интерпретатора, с 800 до 1500. Это позволит таким функциям, как
list.__repr__
иjson.dumps
, обрабатывать все входы, которые они могли обрабатывать до версии 3.12gh-104584: Исправлена проблема, приводившая к некорректному чтению встроенных кэшей при запуске с включенным
PYTHONUOPS
или-X uops
.gh-104432: Исправление потенциального не выровненного доступа к памяти в API на C, включающего возвращаемые последовательности указателей
char *
в модуляхgrp
иsocket
. Они были обнаружены в сборке-fsaniziter=alignment
на ARM macOS. Исправление Кристофера Чавеса.gh-106078: Изолируйте
_decimal
(примените PEP 687). Исправление от Чарли Чжао.gh-106898: Добавьте исключение в качестве третьего аргумента к обратным вызовам
PY_UNIND
вsys.monitoring
. Это делает обратный вызовPY_UNWIND
согласованным с другими обратными вызовами обработки исключений.gh-106895: Вызывает
ValueError
, когда функция обратного вызова мониторинга возвращаетDISABLE
для событий, которые не могут быть отключены локально.gh-106897: Добавьте в
sys.monitoring
событиеRERAISE
, которое происходит при повторном возникновении исключения, либо явно в обычном оператореraise
, либо неявно в блокеexcept
илиfinally
.gh-77377: Убедитесь, что объекты многопроцессорной синхронизации, созданные в контексте fork, не передаются другому процессу, созданному в контексте spawn. Это превращает segfault в actionable RuntimeError в родительском процессе.
gh-106931: Статически выделенные строковые объекты теперь интернируются глобально, а не для каждого интерпретатора. Это исправляет ситуацию, когда такая строка могла быть интернирована только в одном интерпретаторе. Обычные строковые объекты не затрагиваются.
gh-104621: Неподдерживаемые модули теперь всегда не импортируются.
gh-107122: Добавьте
dbm.ndbm.ndbm.clear()
кdbm.ndbm
. Патч от Donghee Na.gh-107122: Добавьте
dbm.gnu.gdbm.clear()
кdbm.gnu
. Патч от Donghee Na.gh-107015: Токены ASYNC и AWAIT удалены из грамматики, что устраняет возможность сделать
async
иawait
мягкими ключевыми словами при использованииfeature_version<7
вast.parse()
.gh-106917: Исправление вызовов методов
super()
в стиле classmethod (т.е. когда второй аргументsuper()
или подразумеваемый второй аргумент изself/cls
в случае zero-arg super является типом), когда цель вызова не является classmethod.gh-105699: Python больше не падает из-за нечастой гонки при инициализации интерпритированных строк для каждого интерпретатора. Падение проявлялось, когда интерпретатор был завершен.
gh-105699: Python больше не падает из-за нечастой гонки при установке
Py_FileSystemDefaultEncoding
иPy_FileSystemDefaultEncodeErrors
(оба deprecated), когда одновременно инициализируются два изолированных подынтерпретатора. Теперь они устанавливаются только во время инициализации во время выполнения.gh-106908: Исправлены различные зависания, утечки ссылок, сбои в тестах и ошибки трассировки/интроспекции при запуске с включенным
PYTHONUOPS
или-X uops
.gh-106092: Исправление ошибки сегментации, вызванной ошибкой use-after-free в
frame_dealloc
, когда корзина задерживала деаллокациюPyFrameObject
.gh-106485: Сократите количество материализованных словарей экземпляров, дематериализовав их, когда это возможно.
gh-106719: Больше не подавляет произвольные ошибки в геттере и сеттере
__annotations__
в типах и модулях.gh-106723: Передайте
frozen_modules
интерпретаторам многопроцессорных порожденных процессов.gh-104909: Разделите
LOAD_ATTR_INSTANCE_VALUE
на микрооперации.gh-104909: Разделите специализации
LOAD_GLOBAL
на микроопы.gh-106597: В
_PyRuntimeState
добавлена новая отладочная структура смещений, которая поможет внепроцессным отладчикам и профилировщикам получать смещения соответствующих структур интерпретатора способом, не зависящим от того, как был скомпилирован Python, и не требующим копирования заголовков. Патч от Pablo Galindogh-106487: Разрешить аргументу count в
str.replace()
быть ключевым словом. Исправление Хьюго ван Кеменаде.gh-96844: Улучшите сообщение об ошибке
list.remove()
. Исправление от Donghee Na.gh-81283: Компилятор теперь убирает отступы от строк документов. Это уменьшает размер файла
pyc
на 5%, если модуль сильно документирован. Это изменение затрагивает__doc__
, так что инструменты вроде doctest будут затронуты.gh-106396: Когда спецификация формата выражения f-строки пуста, парсер теперь генерирует для нее пустой узел
ast.JoinedStr
, а не одноэлементныйast.JoinedStr
с пустой строкойast.Constant
.gh-100288: Специализируйте
LOAD_ATTR
для недескрипторов класса. ДобавляетLOAD_ATTR_NONDESCRIPTOR_WITH_VALUES
иLOAD_ATTR_NONDESCRIPTOR_NO_DICT
.gh-106008: Исправление возможных утечек ссылок при неудачной оптимизации сравнений с
None
в компиляторе байткода.gh-106145: Сделайте
end_lineno
иend_col_offset
обязательными дляtype_param
узлов ast.gh-106213: Изменен способ работы батутов вызовов Emscripten для совместимости с интеграцией Wasm/JS Promise.
gh-106182:
sys.getfilesystemencoding()
иsys.getfilesystemencodeerrors
теперь возвращают интернированный объект Unicode.gh-106210: Удален батут импорта Emscripten, так как он больше не нужен для Pyodide.
gh-104584: Добавили новый, экспериментальный, трассировочный оптимизатор и интерпретатор (он же «tier 2»). В настоящее время он пессимизирует, поэтому пока не используйте его - это инфраструктура, чтобы мы могли экспериментировать с оптимизацией проходов. Чтобы включить его, передайте
-Xuops
или установитеPYTHONUOPS=1
. Чтобы получить отладочный вывод, установитеPYTHONUOPSDEBUG=N
, гдеN
- уровень отладки (0-4, где 0 - нет отладочного вывода, а 4 - чрезмерно многословный).gh-105775:
LOAD_CLOSURE
теперь является псевдо-опцией.gh-105730: Разрешите использовать в качестве предиката условия в
BaseExceptionGroup.split()
иBaseExceptionGroup.subgroup()
любой вызываемый объект, кроме объектов типа.gh-105979: Исправление сбоя в
_imp.get_frozen_object()
из-за неправильной обработки исключений.gh-106003: Добавьте новую инструкцию
TO_BOOL
, которая выполняет булевы преобразования дляPOP_JUMP_IF_TRUE
,POP_JUMP_IF_FALSE
иUNARY_NOT
(все они теперь ожидают точных значенийbool
). Кроме того, измените oparg командыCOMPARE_OP
, чтобы включить необязательный флаг «булево преобразование».gh-98931: Убедитесь, что для некорректного импорта с несколькими целями выдаются пользовательские сообщения об ошибках
SyntaxError
. Исправление от Pablo Galindogh-105724: Улучшите сообщения об ошибках
assert
, указав точный диапазон ошибок.gh-105908: Исправлена ошибка, при которой gh-99111 нарушал будущий импорт
barry_as_FLUFL
в Python REPL.gh-105840: Исправление возможных сбоев при специализации вызовов функций со слишком большим количеством
__defaults__
.gh-105831: Исправление ошибки с f-строкой, когда использование отладочного выражения (знак
=
), появляющегося в последней строке файла, приводило к тому, что буфер отладки, в котором хранится текст выражения, был слишком мал на один символ.gh-105800: Корректно выдает
SyntaxWarning
в f-строках, если используются недопустимые последовательности. Исправление от Pablo Galindogh-105340: Включите итерационную переменную понимания в
locals()
внутри понимания, относящегося к модулю или классу.gh-105331: Поднимает
ValueError
, если аргументdelay
вasyncio.sleep()
является NaN (совпадает сtime.sleep()
).gh-105587: Время выполнения не может гарантировать, что бессмертные объекты не будут мутированы расширениями. Таким образом, это модифицирует _PyStaticObject_CheckRefcnt, чтобы предупреждать, а не утверждать.
gh-105564: Не включайте артифициальные новые строки в атрибут
line
токенов в API модуляtokenize
. Исправление от Пабло Галиндоgh-105549: Токенизируйте отдельно токены
NUMBER
иNAME
, которые не являются неоднозначными. Исправление Пабло Галиндо.gh-105588: Исправление проблемы, которая могла привести к сбоям при компиляции неверно сформированных узлов
ast
.gh-100987: Разрешите объектам, отличным от объектов кода, выступать в качестве «исполняемого» во внутренних фреймах. В долгосрочной перспективе это поможет таким инструментам, как Cython и PySpy, взаимодействовать более эффективно. В краткосрочной перспективе это позволит нам выполнять некоторые оптимизации более просто.
gh-105375: Исправление ошибок в модуле
builtins
, когда исключения могли быть перезаписаны.gh-105375: Исправлена ошибка в компиляторе, из-за которой исключение могло быть перезаписано.
gh-105375: Улучшена обработка ошибок в
PyUnicode_BuildEncodingMap()
, где исключение могло быть перезаписано.gh-105486: Измените repr из
ParamSpec
списка args вtypes.GenericAlias
.gh-105678: Разбейте инструкцию
MAKE_FUNCTION
на две части:MAKE_FUNCTION
, которая создает функцию, иSET_FUNCTION_ATTRIBUTE
, которая устанавливает атрибуты функции. Это делает эффект стекаMAKE_FUNCTION
регулярным, чтобы облегчить оптимизацию и генерацию кода.gh-105435: Исправление ложного символа новой строки, если файл заканчивается на комментарии без новой строки. Исправление от Pablo Galindo
gh-105390: Корректно поднимает исключения
tokenize.TokenError
вместоSyntaxError
для ошибок токенизации, таких как неполный ввод. Исправление от Pablo Galindogh-105259: Не включать символ новой строки в концевые токены
NEWLINE
, выдаваемые в модулеtokenize
. Исправление от Pablo Galindogh-104635: Устранение лишних инструкций
STORE_FAST
в компиляторе. Исправление от Donghee Na и Carl Meyer.gh-105324: Исправьте главную функцию модуля
tokenize
при чтении изsys.stdin
. Исправление от Pablo Galindogh-33092: Упрощение и ускорение интерпретатора f-строк. Удален опкод
FORMAT_VALUE
. Добавлены опкодыCONVERT_VALUE
,FORMAT_SIMPLE
иFORMAT_WITH_SPEC
. Компилятор выдает более эффективную последовательность для каждого форматного выражения.gh-105229: Удалите оставшиеся суперинструкции с двумя кодовыми единицами. Все оставшиеся суперинструкции принимают только одну кодовую единицу, что упрощает инструментарий и ускорение.
gh-105235: Предотвращение выхода за пределы памяти во время вызовов
mmap.find()
.gh-98963: Восстановление возможности для подкласса
property
определять__slots__
или иным образом быть бездиктовым, игнорируя неудачные попытки установить docstring для такого класса. Это поведение было изменено в 3.12beta1. ПоявлениеAttributeError
там, где его раньше не было, нарушало существующий код.gh-104812: Механизм «отложенного вызова» теперь работает для всех интерпретаторов, а не только для главного, и выполняется во всех потоках, а не только в главном. Некоторые вызовы по-прежнему выполняются только в главном потоке, следовательно, в главном интерпретаторе. Это изменение не затрагивает ни обработку сигналов, ни существующий публичный C-API (
Py_AddPendingCall()
), который по-прежнему предназначен только для главного потока. Новая функциональность пока предназначена только для внутреннего использования, так как последствия ее применения пока не очень понятны за пределами некоторых очень ограниченных случаев. Это изменение приводит возможность в соответствие с намерениями, когда несколько лет назад состояние было сделано индивидуальным для каждого интерпретатора.gh-105194: Не экранируйте обратными косыми чертами спецификаторы формата f-строк. Исправление от Пабло Галиндо
gh-105229: Замените некоторые динамические суперинструкции эквивалентами из одной инструкции.
gh-105162: Исправлена ошибка в generator.close()/throw(), когда внутренний итератор игнорировался, когда внешний итератор был инструментирован.
gh-105164: Обеспечение корректной установки аннотаций, если единственная аннотация в блоке находится в блоке
match
. Исправление от Jelle Zijlstra.gh-105148: Сделайте
_PyASTOptimizeState
внутренним для ast_opt.c. Пусть_PyAST_Optimize
принимает два целых числа вместо указателя на эту структуру. Это избавит от необходимости включать pycore_compile.h в ast_opt.c.gh-104799: Атрибуты узлов
ast
, которые являются списками, теперь по умолчанию принимают значение пустого списка, если оно опущено. Это означает, что некоторый код, который ранее выдавалTypeError
при использовании узла AST, теперь будет работать с пустым списком. Исправление от Jelle Zijlstra.gh-105111: Удалите старые макросы
Py_TRASHCAN_SAFE_BEGIN
иPy_TRASHCAN_SAFE_END
для мусорной корзины. Они должны быть заменены новыми макросамиPy_TRASHCAN_BEGIN
иPy_TRASHCAN_END
.gh-105035: Исправьте вызовы
super()
для типов с пользовательской реализациейtp_getattro
(например, мета-типов).gh-105017: Показывать строки с CRLF в атрибуте tokenize string в лексемах NL и NEWLINE. Исправление Марты Гомес.
gh-105013: Исправлена обработка многострочных ламбд с круглыми скобками в
inspect.getsource()
. Исправление от Pablo Galindogh-105017: Не включать дополнительный финальный токен
NL
при разборе файлов, содержащих строки CRLF. Исправление от Марты Гомес.gh-104976: Убедитесь в том, что прицепленные
DEDENT
tokenize.TokenInfo
объектов, испускаемых модулемtokenize
, сообщаются как в Python 3.11. Исправление от Pablo Galindogh-104972: Убедитесь, что атрибут
line
в объектахtokenize.TokenInfo
в модулеtokenize
всегда корректен. Исправление от Пабло Галиндоgh-104955: Исправьте подпись для нового слота
__release_buffer__()
. Исправление от Jelle Zijlstra.gh-104690: Запуск новых потоков и создание процессов через
os.fork()
во время завершения работы интерпретатора (например, из обработчиковatexit
) больше не поддерживается. Это может привести к состоянию гонки между основным потоком выполнения Python, освобождающим состояние потоков, в то время как внутренниеthreading
подпрограммы пытаются распределить и использовать состояние только что созданных потоков. Или дочерние вилки пытаются использовать состояние среды выполнения и потоков в дочернем процессе.gh-104879: Исправление сбоя при обращении к атрибуту
__module__
псевдонимов типов, определенных вне модуля. Исправление от Jelle Zijlstra.gh-104825: Токены, испускаемые модулем
tokenize
, больше не включают неявный символ\n
в атрибутline
. Исправление от Pablo Galindogh-104770: Если генератор возвращает значение после закрытия, то теперь это значение возвращается
generator.close()
.gh-89091: Поднимает
RuntimeWarning
для нежданных методов асинхронного генератора, таких какasend()
,athrow()
иaclose()
. Исправление Кумара Адитьи.gh-96663: Добавьте лучшее, более понятное сообщение об ошибке при установке атрибутов для классов без
__dict__
и без слота-члена для атрибута.gh-93627: Обновите реализацию модуля pickle в Python, чтобы она соответствовала реализации модуля pickle в C. Для объектов, устанавливающих методы сокращения
__reduce_ex__()
или__reduce__()
вNone
, pickle будет приводить кTypeError
.gh-101006: Улучшена обработка ошибок при чтении данных
marshal
.gh-91095: Специализирует вызовы большинства классов Python. В частности, к любому классу, который наследуется от
object
или другого класса Python и не переопределяет__new__
.Специализированная инструкция выполняет следующие действия:
Создает объект (вызывая
object.__new__
)Помещает фрейм shim в стек фреймов (для очистки после
__init__
)Помещает кадр для
__init__
в стек кадров
Ускоряет инстанцирование большинства классов Python.
Библиотека¶
gh-110786: CLI
sysconfig
теперь игнорируетBrokenPipeError
, заставляя его нормально завершать работу, если его вывод передается по трубе и труба закрывается.gh-103480: Модуль
sysconfig
теперь является пакетом, а не однофайловым модулем.gh-110733: Микрооптимизация: Избегайте вызова
min()
,max()
вBaseEventLoop._run_once()
.gh-94597: Добавлен
asyncio.EventLoop
для использования сasyncio.run()
loop_factory kwarg, чтобы избежать вызова системы политик asyncio.gh-110682:
runtime-checkable protocols
раньше считал__match_args__
членом протокола в__instancecheck__
, если он присутствовал в протоколе. Теперь этот атрибут игнорируется, если он присутствует.gh-110488: Исправлена пара проблем в
pathlib.PurePath.with_name()
: одиночная точка неверно считалась допустимым именем, а вPureWindowsPath
имя с альтернативным потоком данных NTFS, напримерa:b
, неверно считалось недопустимым.gh-110590: Исправлена ошибка в
_sre.compile()
, при которойTypeError
перезаписывалсяOverflowError
, когда аргумент code представлял собой список не-int.gh-65052: Предотвращение аварийного завершения
pdb
при попытке отобразить неотображаемые объектыgh-110519: Предупреждение о нецелочисленном числе в
gettext
теперь всегда ссылается на строку в пользовательском коде, где используется функция или метод gettext. Ранее оно могло ссылаться на строку в кодеgettext
.gh-89902: Устраните нестандартный спецификатор формата «N» для
decimal.Decimal
. Он не был документирован и поддерживался только в реализации на C.gh-110378: Менеджеры контекста
contextmanager()
иasynccontextmanager()
теперь закрывают недопустимый объект базового генератора, который выдает более одного значения.gh-106670: В
pdb
установите переменную удобства$_exception
для посмертной отладки.gh-110365: Исправлена ошибка
termios.tcsetattr()
, которая перезаписывала существующие ошибки при разборе целых чисел из спискаterm
.gh-109653: Немного улучшает время импорта нескольких модулей стандартной библиотеки, откладывая импорт
warnings
внутри этих модулей. Исправление Алекса Уэйгуда.gh-110273:
dataclasses.replace()
теперь вызывает ошибку TypeError вместо ValueError, если указать ключевое слово-аргумент для поля, объявленного с init=False, или пропустить ключевое слово-аргумент для обязательного поля InitVar.gh-110249: Добавьте флаг
--inline-caches
в командную строкуdis
.gh-109653: Исправление регрессии Python 3.12 во времени импорта
random
. Исправление от Алекса Уэйгуда.gh-110222: Добавлена поддержка объектов последовательности struct в
copy.replace()
. Исправлено Xuehai Pan.gh-109649:
multiprocessing
,concurrent.futures
,compileall
: Заменитеos.cpu_count()
наos.process_cpu_count()
, чтобы выбрать количество рабочих потоков и процессов по умолчанию. Получение сродства к процессору, если оно поддерживается. Исправление Виктора Стиннера.gh-110150: Исправьте обработку базового случая в statistics.quantiles. Теперь допускается одна точка данных.
gh-110036: В Windows многопроцессорная
Popen.terminate()
теперь перехватываетPermissionError
и получает код выхода процесса. Если процесс все еще запущен, снова поднимитеPermissionError
. В противном случае процесс завершился, как и ожидалось: сохраните его код выхода. Исправление Виктора Стиннера.gh-110038: Исправлена проблема, из-за которой
KqueueSelector.select()
не возвращала все события готовности в некоторых случаях, когда файловый дескриптор был зарегистрирован как для чтения, так и для записи.gh-110045: Обновите модуль
symtable
для поддержки новых диапазонов, введенных PEP 695.gh-88402: Добавьте новые переменные в
sysconfig.get_config_vars()
под Windows:LIBRARY
,LDLIBRARY
,LIBDIR
,SOABI
иPy_NOGIL
.gh-109631:
re
, такие какre.findall()
,re.split()
,re.search()
иre.sub()
, которые выполняют короткие повторяющиеся совпадения, теперь могут быть прерваны пользователем.gh-109653: Сократите время импорта
email.utils
примерно на 43 %. В результате время импортаemail.message
уменьшится примерно на 18 %, что, в свою очередь, сократит время импортаimportlib.metadata
примерно на 6 %. Автор исправления - Алекс Уэйгуд.gh-109818: Исправьте, что
reprlib.recursive_repr()
не копирует__type_params__
из декорированной функции.gh-109047:
concurrent.futures
: Поток менеджера исполнителя теперь перехватывает исключения при добавлении элемента в очередь вызовов. Во время финализации Python создание нового потока теперь может вызватьRuntimeError
. В этом случае перехватите исключение и вызовитеterminate_broken()
. Исправление Виктора Стиннера.gh-109782: Убедитесь, что сигнатура
os.path.isdir()
идентична на всех платформах. Исправление от Amin Alaee.gh-109653: Улучшение времени импорта
functools
примерно на 13%. Исправление от Алекса Уэйгуда.gh-109590:
shutil.which()
будет отдавать предпочтение файлам с расширением вPATHEXT
, если заданный режим включаетos.X_OK
на win32. Если совпадение сPATHEXT
не найдено, может быть возвращен файл без расширения вPATHEXT
. Это изменение позволитshutil.which()
вести себя более схоже с предыдущим поведением в Python 3.11.gh-109653: Сокращение времени импорта
enum
более чем на 50%. Автор патча - Алекс Уэйгуд.gh-109593: Избегайте тупика при реентерабельном вызове трекера ресурсов мультипроцессинга. Такой реентерабельный вызов, хотя и маловероятный, может произойти, если при проходе GC будет вызван финализатор для многопроцессорного объекта, такого как SemLock.
gh-109653: Сокращение времени импорта
typing
примерно на треть. Автор патча - Алекс Уэйгуд.gh-109649: Добавьте функцию
os.process_cpu_count()
для получения количества логических процессоров, используемых вызывающим потоком текущего процесса. Исправление Виктора Стиннера.gh-74481: Добавьте константы, связанные с
set_error_mode
, в модульmsvcrt
в отладочной сборке Python.gh-109613: Исправьте
os.stat()
иos.DirEntry.stat()
: проверка на наличие исключений. Ранее на Python, собранном в режиме отладки, эти функции могли вызвать фатальную ошибку Python (и прервать процесс), если функция завершилась с набором исключений. Исправление от Виктора Стиннера.gh-109599: Выразите тип объектов PyCapsule как
types.CapsuleType
.gh-109109: Теперь вы можете получать необработанные цепочки сертификатов TLS из TLS-соединений с помощью методов
ssl.SSLSocket.get_verified_chain()
иssl.SSLSocket.get_unverified_chain()
.Предоставлено Матеушем Новаком.
gh-109559: Обновление базы данных
unicodedata
до версии Unicode 15.1.0.gh-109543: Уберите лишнюю проверку
hasattr()
при созданииtyping.TypedDict
.gh-109495: Удалите ненужные дополнительные
__slots__
вdatetime
в чистой реализации на питоне, чтобы уменьшить размер памяти, так как они определены в суперклассе. Исправление Джеймса Хилтона-Балфаgh-109461:
logging
: Используйте менеджер контекста для получения блокировки.gh-109096:
http.server.CGIHTTPRequestHandler
был устаревшим для удаления в версии 3.15. Его дизайн устарел, а веб-мир уже давно вышел за рамки CGI.gh-109409: Исправлена ошибка, когда можно было наследовать замороженный класс данных от нескольких родителей, некоторые из которых, возможно, не были заморожены.
gh-109375: Команда
pdb
Командаalias
теперь не позволяет регистрировать псевдонимы без аргументов.gh-109319: Утрачиваем поле
dis.HAVE_ARGUMENT
в пользуdis.hasarg
.gh-107219: Устранение состояния гонки в
concurrent.futures
. Если процесс в пуле процессов был внезапно завершен (пока выполнялось или ожидалось будущее), закройте конец записи соединения. Если очередь вызовов заблокирована на отправку байтов рабочему процессу, закрытие конца записи соединения прерывает отправку, и очередь может быть закрыта. Исправление Виктора Стиннера.gh-66143: Объект
codecs.CodecInfo
стал копируемым и pickleable. Исправлено Робертом Леманном и Фурканом Ондером.gh-109187:
pathlib.Path.resolve()
теперь обрабатывает зацикливание симлинков как другие ошибки: в строгом режиме вызываетсяOSError
, а в нестрогом - исключение не вызывается.gh-50644: Попытки замариновать или создать неглубокую или глубокую копию потоков
codecs
теперь вызывают ошибку TypeError. Ранее копирование завершалось ошибкой RecursionError, а маринование приводило к неправильным результатам, что в итоге приводило к ошибке RecursionError при распикировке.gh-109174: Добавьте поддержку
types.SimpleNamespace
вcopy.replace()
.gh-109164:
pdb
: Заменитеgetopt
наargparse
для разбора аргументов командной строки.gh-109151: Включить функции редактирования
readline
в sqlite3 command-line interface (python -m sqlite3
).gh-108987: Исправьте состояние гонки
_thread.start_new_thread()
. Если поток создается во время финализации Python, то теперь вновь порожденный поток немедленно завершает работу, а не пытается получить доступ к освобожденной памяти, что приводит к аварийному завершению. Исправление Виктора Стиннера.gh-108682: Enum: требуется
names=()
илиtype=...
, чтобы создать пустое перечисление с помощью функционального синтаксиса.gh-109033: Исключения, вызванные встроенной функцией os.utime, теперь включают имя соответствующего файла
gh-108843: Исправление проблемы в
ast.unparse()
при распарсе f-строк, содержащих много типов кавычек.gh-108469:
ast.unparse()
теперь поддерживает новый синтаксис f-string, введенный в Python 3.12. Обратите внимание, что кавычки f-string повторно выбираются для простоты в новом синтаксисе. (Исправление от Steven Sun)gh-108751: Добавьте функцию
copy.replace()
, которая позволяет создать измененную копию объекта. Она поддерживает именованные кортежи, классы данных и многие другие объекты.gh-108682: Enum: поднять
TypeError
, еслиsuper().__new__()
вызывается из пользовательского__new__
.gh-108278: Откажитесь от передачи вызываемого обратного вызова по ключевому слову для следующих
sqlite3.Connection
API:В Python 3.15 затронутые параметры станут только позиционными.
Патч Эрленда Э. Аасланда.
gh-105829: Исправление тупиковой ситуации в concurrent.futures.ProcessPoolExecutor
gh-108295: Исправление сбоев, связанных с использованием weakrefs на
typing.TypeVar
.gh-108463: Заставьте выражения/высказывания работать так, как ожидается в pdb
gh-108277: Добавьте
os.timerfd_create()
,os.timerfd_settime()
,os.timerfd_gettime()
,os.timerfd_settime_ns()
иos.timerfd_gettime_ns()
, чтобы обеспечить низкоуровневый интерфейс для файлового дескриптора уведомлений таймера в Linux.gh-107811:
tarfile
: извлечение членов с чрезмерно большим UID или GID (например, на ОС с 32-битнымid_t
) теперь не работает так же, как и при неудачной установке ID.gh-64662: Исправлена поддержка виртуальных таблиц в
sqlite3.Connection.iterdump()
. Исправление от Авива Паливоды.gh-108111: Исправление ошибки, введенной в gh-101251 для 3.12, которая приводила к неправильному расчету смещения в
gzip.GzipFile.seek()
.gh-108294:
time.sleep()
теперь вызывает событие аудита.gh-108278: Откажитесь от передачи имени, количества аргументов и вызываемого объекта в качестве аргументов ключевого слова для следующих
sqlite3.Connection
API:В Python 3.15 затронутые параметры станут только позиционными.
Патч Эрленда Э. Аасланда.
gh-108322: Ускорение работы NormalDist.samples() за счет использования метода обратного CDF вместо вызова random.gauss().
gh-83417: Добавляет возможность для venv создавать файл
.gitignore
, который заставляет созданное окружение игнорироваться Git’ом. По умолчанию он включен, когда venv вызывается через CLI.gh-105736: Согласовали чисто питоновскую версию
OrderedDict
с версией на C. Теперь обе версии устанавливают свое внутреннее состояние в__new__
. Раньше версия на чистом Python выполняла настройку в__init__
.gh-108083: Исправление ошибок в конструкторе
sqlite3.Connection
иsqlite3.Connection.close()
, из-за которых могли утекать исключения. Исправление Эрленда Э. Аасланда.gh-107932: Исправьте модуль
dis
, чтобы он правильно сообщал и отображал байткод, не содержащий исходных строк.gh-105539:
sqlite3
теперь выдаетResourceWarning
, если объектsqlite3.Connection
не являетсяclosed
явным. Исправление Эрленда Э. Аасланда.gh-107995: Атрибут
__module__
у экземпляровfunctools.cached_property
теперь устанавливается в имя модуля, в котором определено свойство cached_property, а не «functools». Это означает, что доктесты в документахcached_property
теперь правильно собираются модулемdoctest
. Исправление подготовлено Тайлером Смартом.gh-107963: Исправьте
multiprocessing.set_forkserver_preload()
для проверки заданного списка имен модулей. Исправление от Donghee Na.gh-106242: Исправление
os.path.normpath()
для обработки встроенных нулевых символов без обрезания пути.gh-81555:
xml.dom.minidom
теперь в атрибутах цитирует только"
.gh-50002:
xml.dom.minidom
теперь сохраняет пробелы в атрибутах.gh-93057: Передача более одного позиционного аргумента в
sqlite3.connect()
и конструкторsqlite3.Connection
является устаревшей. Остальные параметры станут только ключевыми в Python 3.15. Исправление Эрленда Э. Аасланда.gh-76913: Добавьте параметр/функцию merge_extra в
logging.LoggerAdapter
gh-107913: Исправление возможных потерь значений
errno
иwinerror
в исключенияхOSError
, если они были очищены или изменены кодом очистки до создания объекта исключения.gh-107845:
tarfile.data_filter()
теперь учитывает местоположение симлинков при определении их цели, поэтому он больше не будет отклонять некоторые корректные тарбалы сLinkOutsideDestinationError
.gh-107812: Расширение поддержки netlink в сокетах для платформы FreeBSD.
gh-107805: Исправьте сигнатуры генерируемых функций на уровне модуля в
turtle
.gh-107782:
pydoc
теперь может показывать подписи, которые невозможно представить в Python, например, дляgetattr
иdict.pop
.gh-56166: Откажитесь от передачи необязательных аргументов maxsplit, count и flags в функциях уровня модуля
re.split()
,re.sub()
иre.subn()
как позиционных. Они должны передаваться только по ключевому слову.gh-107710: Ускорить
logging.getHandlerNames()
.gh-107715: Исправление
doctest.DocTestFinder.find()
при наличии имен классов со специальными символами. Исправление Гертьяна ван Звиетена.gh-100814: Передача вызываемого объекта в качестве значения опции в изображение Tkinter теперь вызывает ожидаемую ошибку TclError, а не ошибку AttributeError.
gh-72684: Добавьте методы виджета
tkinter
:tk_busy_hold()
,tk_busy_configure()
,tk_busy_cget()
,tk_busy_forget()
,tk_busy_current()
иtk_busy_status()
.gh-106684: Поднимает
ResourceWarning
, еслиasyncio.StreamWriter
не закрыт, что приводит к утечке памяти. Исправление от Kumar Aditya.gh-107465: Добавить
pathlib.Path.from_uri()
метод класса.gh-107077: Похоже, что в некоторых случаях OpenSSL возвращает
SSL_ERROR_SYSCALL
вместоSSL_ERROR_SSL
, когда проверка сертификации не удалась, но параметры ошибки по-прежнему содержатERR_LIB_SSL
иSSL_R_CERTIFICATE_VERIFY_FAILED
. Теперь мы обнаруживаем эту ситуацию и поднимаем соответствующиеssl.SSLCertVerificationError
. Исправление от Пабло Галиндоgh-107576: Исправьте
types.get_original_bases()
, чтобы он возвращал__orig_bases__
только в том случае, если он присутствует вcls
напрямую. Исправление Джеймса Хилтона-Балфа.gh-105481: Удалите
opcode.is_pseudo
,opcode.MIN_PSEUDO_OPCODE
иopcode.MAX_PSEUDO_OPCODE
, которые были добавлены в 3.12, никогда не документировались и не предназначались для внешнего использования.gh-105481:
opcode.ENABLE_SPECIALIZATION
(который был добавлен в 3.12, но никогда не документировался и не предназначался для внешнего использования) перемещен в_opcode.ENABLE_SPECIALIZATION
, где к нему смогут обращаться тесты.gh-107396: tarfiles; Исправлено использование перед присвоением self.exception для gzip-декомпрессии
gh-107409: Установите атрибут
__wrapped__
вreprlib.recursive_repr()
.gh-107406: Реализуйте новый метод
__repr__()
дляstruct.Struct
. Теперь он возвращаетStruct(<format repr>)
.gh-107369: Оптимизируйте
textwrap.indent()
. Это на ~30% быстрее для больших входных данных. Исправление от Inada Naoki.gh-78722: Исправлена проблема, при которой
pathlib.Path.iterdir()
не поднималOSError
до итерации.gh-105578: Утратить
typing.AnyStr
в пользу нового синтаксиса Type Parameter. См. PEP 695.gh-62519: Заставьте
gettext.pgettext()
искать определения во множественном числе, если перевод не найден.gh-107089: Полки, открытые с помощью
shelve.open()
, работают гораздо быстрееclear()
. Исправление Джеймса Кейва.gh-82500: Исправление переполнения на 32-битных системах с
asyncio
os.sendfile()
реализацией.gh-83006: Документируйте поведение
shutil.disk_usage()
для немонтированных файловых систем на Unix.gh-65495: Используйте строчные буквы
mail from
иrcpt to
вsmptlib.SMTP
.gh-106186: Не сообщайте о дефекте
MultipartInvariantViolationDefect
, если классemail.parser.Parser
используется для разбора писем сheadersonly=True
.gh-105002: Исправление некорректного результата метода
PurePath.relative_to()
при попытке пройти сегмент «..
» в other с включенной опцией walk_up. Теперь в этом случае вызывается исключениеValueError
.gh-106739: Добавьте
rtype_cache
в предупреждающее сообщение (в дополнение к типу утечек и количеству утечек, уже включенных в сообщение), чтобы облегчить отладку утечек, когда процесс отслеживания ресурсов многопроцессорной системы обнаруживает утечки при завершении работы. Это поможет быстрее определить, что именно было утечено и/или почему объект утечки не был должным образом очищен.gh-106751: Оптимизируйте
SelectSelector.select()
для случая многих итераций. Исправление от Donghee Na.gh-106751: Оптимизируйте
_PollLikeSelector.select()
для случая многих итераций.gh-106751: Оптимизируйте
KqueueSelector.select()
для случая многих итераций. Исправление от Donghee Na.gh-106831: Исправьте потенциально отсутствующую проверку
NULL
результатаd2i_SSL_SESSION
в_ssl.c
.gh-105481: Различные списки опкодов в модуле
dis
теперь генерируются из bytecodes.c, а не создаются явно в opcode.py.gh-106727: Сделайте
inspect.getsource()
более умным для класса с одноименными определениямиgh-105726: Добавили
__slots__
кcontextlib.AbstractContextManager
иcontextlib.AbstractAsyncContextManager
, чтобы дочерние классы могли использовать__slots__
.gh-106774: Обновите поставляемую в комплекте копию pip до версии 23.2.1.
gh-106751:
selectors
: Оптимизируйте кодEpollSelector.select()
, перенеся часть кода за пределы цикла.gh-106752: Исправлено несколько ошибок в zipfile.Path, в том числе: в
zipfile.Path.match()
больше не учитываются разделители Windows (и никогда не должны были учитываться); Исправлены операцииname
/suffix
/suffixes
/stem
, когда отсутствует имя файла и Path не находится в корне zip-файла; Переработан glob для повышения производительности и более корректного поведения при сопоставлении.gh-105293: Удалите обращение к
SSL_CTX_set_session_id_context
во время создания контекста на стороне клиента в модулеssl
.gh-106734: Отключить завершение табуляции в многострочном режиме
pdb
gh-105481: Раскрыть метаданные опкода через
_opcode
.gh-106670: Добавьте новую команду
exceptions
в отладчик Pdb. Она позволяет перемещаться между цепочками исключений при использовании посмертной отладки.gh-106664:
selectors
: Добавьте метод_SelectorMapping.get()
и оптимизируйте_SelectorMapping.__getitem__()
.gh-106628: Ускоряет разбор писем примерно на 20%, не составляя новое регулярное выражение для каждого письма.
gh-89427: Установите переменную окружения
VIRTUAL_ENV_PROMPT
при активацииvenv
, даже если установленаVIRTUAL_ENV_DISABLE_PROMPT
.gh-106530: Верните изменение в
colorsys.rgb_to_hls()
, которое приводило к делению на ноль для некоторых почти белых входов. Автор патча - Терри Ян Риди.gh-106584: Исправьте код выхода для
unittest
, если все тесты пропущены. Исправление от Егора Елисеева.gh-106566: Оптимизируйте
(?!)
(шаблон, который всегда не работает) в регулярных выражениях.gh-106554:
selectors
: Уменьшение нагрузки на селектор за счет использованияdict.get()
для поиска дескрипторов файлов.gh-106558: Устраните цикл ref в вызывающих
convert_to_error()
, удаливresult
из области видимости в блокеfinally
.gh-100502: Добавьте атрибут класса
pathlib.PurePath.pathmod
, который хранит реализациюos.path
, используемую для низкоуровневых операций с путями: либоposixpath
, либоntpath
.gh-106527: Сократите накладные расходы на добавление и удаление читателей и писателей
asyncio
.gh-106524: Исправление сбоя в
_sre.template()
с шаблонами, содержащими неверные индексы групп.gh-106531: Удалены
_legacy
и предоставленные им имена изimportlib.resources
:Resource
,contents
,is_resource
,open_binary
,open_text
,path
,read_binary
иread_text
.gh-106052:
re
Модуль: исправление соответствия притяжательных квантификаторов в случае подшаблона, содержащего обратный путь.gh-106510: Улучшен вывод отладки для атомарных групп в регулярных выражениях.
gh-106503: Исправьте цикл ref в
asyncio._SelectorSocketTransport
, удалив_write_ready
вclose
.gh-105497: Исправление инверсии маски флага при наличии неименованных флагов.
gh-90876: Предотвращает неспособность
multiprocessing.spawn
импортировать в окружениях, гдеsys.executable
являетсяNone
. Это исправлено в 3.11 с добавлением поддержки объектов типа path в многопроцессорной обработке.gh-106403: Экземпляры
typing.TypeVar
,typing.ParamSpec
,typing.ParamSpecArgs
,typing.ParamSpecKwargs
иtyping.TypeVarTuple
снова поддерживают слабые ссылки, исправляя регрессию, появившуюся в Python 3.12.0 beta 1. Автор исправления - Jelle Zijlstra.gh-89812: Добавьте частный класс
pathlib._PathBase
, который обеспечивает экспериментальную поддержку виртуальных файловых систем и может стать общедоступным в будущей версии Python.gh-106292: Проверять наличие кэшированного значения instance-dict в методе
__get__()
изfunctools.cached_property()
. Это лучше соответствует поведению до версии 3.12 и улучшает совместимость для пользователей, подклассифицирующихfunctools.cached_property()
и добавляющих метод__set__()
.gh-106350: Обнаружение возможной ошибки выделения памяти в функции libtommath
mp_init()
, используемой модулем_tkinter
.gh-106330: Исправление некорректного сопоставления пустых путей в
pathlib.PurePath.match()
. Эта ошибка появилась в Python 3.12.0 beta 1.gh-106309: Deprecate
typing.no_type_check_decorator()
. Ни одна крупная программа проверки типов не добавила поддержку этого декоратора. Исправление от Алекса Уэйгуда.gh-102541: Заставьте
pydoc.doc()
ловить плохой модульImportError
, если выходной поток неNone
.gh-106263: Исправление сбоя при вызове
repr
с вручную сконструированным объектом SignalDict. Исправление от Чарли Чжао.gh-106236: Замените утверждения
assert
наraise RuntimeError
вthreading
, чтобы_DummyThread
нельзя было объединить даже с-OO
.gh-106238: Исправление редкой ошибки параллелизма при получении блокировки пакетом протоколирования.
gh-106152: Добавлен крючок события PY_THROW для
cProfile
для генераторовgh-106075: Добавлены
asyncio.taskgroups.__all__
кasyncio.__all__
для экспорта в звездном импорте.gh-104527: Zipapp теперь будет пропускать добавление архива к себе.
gh-106046: Улучшите сообщение об ошибке от
os.fspath()
, если оно вызывается на объекте, для которого__fspath__
установлено значениеNone
. Исправление от Алекса Уэйгуда.gh-105987: Исправление сбоя из-за неправильного подсчета ссылок во внутренних подпрограммах фабрики задач
asyncio
eager.gh-105974: Исправлена ошибка, из-за которой класс
typing.Protocol
, имеющий один или несколько невызываемых членов, вызывал ошибкуTypeError
при вызовеissubclass()
, даже если в нем был определен пользовательский метод__subclasshook__
. Поведение в Python 3.11 и ниже - которое теперь восстановлено - не вызывалоTypeError
в таких ситуациях, если был определен пользовательский метод__subclasshook__
. Исправление внесено Алексом Уэйгудом.gh-96145: Отменено добавление
json.AttrDict
.gh-89812: Добавьте
pathlib.UnsupportedOperation
, который поднимается вместоNotImplementedError
, когда операция пути не поддерживается.gh-105808: Исправление ошибки, внесенной в gh-101251 для 3.12, из-за которой
gzip.GzipFile.flush()
не промывал компрессор (и не передавал аргументzip_mode
).gh-105481:
stack_effect()
больше не вызывает исключения, еслиoparg
предоставлен дляopcode
, который не использует его arg, или если он не предоставлен дляopcode
, который его использует. В последнем случае эффект стека возвращается дляoparg=0
.gh-104799: Включите
ast.unparse()
для разбора определений функций и классов, созданных без нового поляtype_params
из PEP 695. Исправление от Jelle Zijlstra.gh-105793: Добавьте аргумент follow_symlinks только для ключевых слов в
pathlib.Path.is_dir()
иis_file()
, по умолчанию используетсяTrue
.gh-105570: Утрачивают силу два метода создания классов
typing.TypedDict
с 0 полями с помощью функционального синтаксиса:TD = TypedDict("TD")
иTD = TypedDict("TD", None)
. Оба метода будут запрещены в Python 3.15. Чтобы создать классTypedDict
с 0 полей, используйте либоclass TD(TypedDict): pass
, либоTD = TypedDict("TD", {})
.gh-105745: Исправьте метод
webbrowser.Konqueror.open
.gh-105733:
ctypes
: Устранить недокументированные функцииctypes.SetPointerType()
иctypes.ARRAY()
. Исправление Виктора Стиннера.gh-105687: Убрать устаревшие
re.template
,re.T
,re.TEMPLATE
,sre_constans.SRE_FLAG_TEMPLATE
.gh-105684: Поддержка
asyncio.Task.set_name()
теперь обязательна для сторонних реализаций задач. Недокументированная функция_set_task_name()
(deprecated since 3.8) была удалена. Исправление Кумара Адитьи.gh-105375: Исправление ошибки в
_Unpickler_SetInputStream()
, когда исключение могло быть перезаписано в случае сбоя.gh-105626: Измените возвращаемое по умолчанию значение
http.client.HTTPConnection.get_proxy_response_headers()
наNone
, а не на{}
.gh-105375: Исправление ошибок в
sys
, когда исключения могли быть перезаписаны из-за отложенной обработки ошибок.gh-105605: Усильте обработку ошибок
pyexpat
при инициализации модуля, чтобы исключения не могли быть перезаписаны, а объекты не разыменовывались дважды.gh-105375: Исправление ошибки в
decimal
, когда исключение могло быть перезаписано.gh-105375: Исправление ошибки в
_datetime
, когда исключения могли быть перезаписаны в случае сбоя инициализации модуля.gh-105375: Исправление ошибок в инициализации
_ssl
, которые могли привести к утечке ссылок и перезаписи исключений.gh-105375: Исправление ошибки в
array.array
, когда исключение могло быть перезаписано.gh-105375: Исправление ошибок в
_ctypes
, когда исключения могли быть перезаписаны.gh-105375: Исправление ошибки в модуле
posix
, когда исключение могло быть перезаписано.gh-105375: Исправление ошибок в
_elementtree
, когда исключения могли быть перезаписаны.gh-105375: Исправление ошибок в
zoneinfo
, когда исключения могли быть перезаписаны.gh-105375: Исправление ошибок в
errno
, когда исключения могли быть перезаписаны.gh-105566: Откажитесь от создания класса
typing.NamedTuple
с использованием ключевых слов-аргументов для обозначения полей (NT = NamedTuple("NT", x=int, y=str)
). Это будет запрещено в Python 3.15. Вместо этого используйте синтаксис, основанный на классах, или функциональный синтаксис.Два метода создания классов
NamedTuple
с 0 полями с помощью функционального синтаксиса также устарели и будут запрещены в Python 3.15:NT = NamedTuple("NT")
иNT = NamedTuple("NT", None)
. Чтобы создать классNamedTuple
с 0 полей, используйте либоclass NT(NamedTuple): pass
, либоNT = NamedTuple("NT", [])
.gh-105545: Убрать устаревший в 3.11 атрибут
webbrowser.MacOSXOSAScript._name
.gh-105497: Исправление инверсии флага при наличии членов псевдонима/маски.
gh-105509:
typing.Annotated
теперь реализован как экземплярtyping._SpecialForm
, а не как класс. Это не должно иметь никакого влияния на пользователей публичного API модуляtyping
.gh-105375: Исправление ошибок в
pickle
, когда исключения могли быть перезаписаны.gh-70303: Выделите
FutureWarning
изpathlib.Path.glob()
иrglob()
, если заданный шаблон заканчивается на «**
». В будущем выпуске Python шаблоны с таким окончанием будут соответствовать как файлам, так и каталогам. Добавьте косую черту, чтобы совпадали только каталоги.gh-105375: Исправлена ошибка в
sqlite3
, когда исключение могло быть перезаписано в обратном вызовеcollation
.gh-105382: Удалите параметры cafile, capath и cadefault из функции
urllib.request.urlopen()
, устаревшей в Python 3.6. Исправление Виктора Стиннера.gh-105376:
logging
: Удалите недокументированные и непроверенные методыLogger.warn()
иLoggerAdapter.warn()
и функциюlogging.warn()
. Утратившие актуальность с Python 3.3, они были псевдонимами методовlogging.Logger.warning()
,logging.LoggerAdapter.warning()
и функцииlogging.warning()
. Исправление Виктора Стиннера.gh-105332: Верните метод pickling из by-name обратно в by-value.
gh-104554: Добавьте поддержку схемы RTSPS в urllib.parse
gh-105292: Добавьте в
traceback.format_exception_only()
опцию для вызова вложенного исключения изBaseExceptionGroup
.gh-105280: Исправлена ошибка, при которой
isinstance([], collections.abc.Mapping)
мог оцениваться вTrue
, если сборка мусора происходила в неправильное время. Ошибка была вызвана изменениями в реализацииtyping.Protocol
в Python 3.12.gh-80480:
array
: Добавьте типовой код'w'
, который представляетPy_UCS4
.gh-105239: Исправление давней ошибки, из-за которой
issubclass(object, typing.Protocol)
в некоторых крайних случаях оценивался какTrue
. Исправление от Алекса Уэйгуда.gh-104310: В бета-версии 1 мы добавили служебную функцию для авторов модулей расширения, чтобы использовать ее при тестировании модуля на поддержку в нескольких интерпретаторах или в GIL для каждого интерпретатора. Название этой функции изменилось с
allowing_all_extensions
на_incompatible_extension_module_restrictions
. Значение по умолчанию для аргумента «disable_check» изменилось сTrue
наFalse
, чтобы лучше соответствовать новому названию функции.gh-105080: Исправлена непоследовательная подпись в производных классах для
inspect.signature()
.gh-105144: Исправьте недавнюю регрессию в модуле
typing
. Регрессия означала, что выполнениеclass Foo(X, typing.Protocol)
, в которомX
был классом, имеющимabc.ABCMeta
в качестве своего метакласса, приводило к тому, что последующие вызовыisinstance(1, X)
ошибочно поднималиTypeError
. Исправление Алекса Уэйгуда.gh-62948: Финализатор
io.IOBase
теперь регистрирует ошибки методаclose()
вsys.unraisablehook
. Ранее ошибки по умолчанию игнорировались молча, а логировались только в Python Development Mode или на Python built on debug mode. Исправление Виктора Стиннера.gh-105096:
wave
: Утрачиваем методыgetmark()
,setmark()
иgetmarkers()
классовwave.Wave_read
иwave.Wave_write
. Они будут удалены в Python 3.15. Исправление Виктора Стиннера.gh-104992: Удалите непроверенный и недокументированный метод
unittest.TestProgram.usageExit()
, устаревший в Python 3.11. Исправление от Хьюго ван Кеменаде.gh-104996: Улучшение производительности инициализации
pathlib.PurePath
за счет откладывания объединения путей при задании нескольких аргументов.gh-101588: Откажитесь от недокументированной поддержки копирования/глубокого копирования/пикли для itertools.
gh-103631: Исправление
pathlib.PurePosixPath(pathlib.PureWindowsPath(...))
, не конвертирующего разделители путей, для восстановления совместимого с 3.11 поведения.gh-104947: Сделайте сравнения между объектами
pathlib.PureWindowsPath
согласованными в Windows и Posix, чтобы соответствовать поведению 3.11.gh-104773: PEP 594: Удалите модуль
audioop
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
aifc
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
uu
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104935: Исправление ошибок взаимодействия между
typing.runtime_checkable()
иtyping.Generic
, которые были внесены в реализацию PEP 695. Исправление от Jelle Zijlstra.gh-104773: PEP 594: Удалите модуль
crypt
и его частное расширение_crypt
, устаревшее в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
nis
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104898: Добавьте недостающие
__slots__
кos.PathLike
.gh-104773: PEP 594: Удалите модуль
xdrlib
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
nntplib
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104886: Удалите недокументированный класс
configparser.LegacyInterpolation
, устаревший в строке документации с Python 3.2 и с предупреждением об устаревании с Python 3.11. Исправление от Хьюго ван Кеменаде.gh-104786: Удалить создание на основе kwargs
typing.TypedDict
gh-104876: Удалите метод
turtle.RawTurtle.settiltangle()
, устаревший в документации с Python 3.1 и с предупреждением об устаревании с Python 3.11. Исправление от Хьюго ван Кеменаде.gh-104773: PEP 594: Удален пакет
msilib
, устаревший в Python 3.11.gh-104773: PEP 594: Удалите модуль
spwd
, устаревший в Python 3.11: вместо него можно использовать проект python-pam. Исправление Виктора Стиннера.gh-75552: Удален модуль
tkinter.tix
, устаревший с Python 3.6.gh-104773: PEP 594: Удалите модуль
chunk
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
mailcap
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
sunau
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104780: PEP 594: Удалите модуль
ossaudiodev
, устаревший в Python 3.11. Патч Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
pipes
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104873: Добавьте
typing.get_protocol_members()
, чтобы вернуть набор членов, определяющихtyping.Protocol
. Добавьтеtyping.is_protocol()
, чтобы проверить, является ли классtyping.Protocol
. Исправление от Jelle Zijlstra.gh-104874: Документируйте атрибуты
__name__
и__supertype__
дляtyping.NewType
. Исправление от Jelle Zijlstra.gh-104835: Удалены следующие функции
unittest
, устаревшие в Python 3.11:unittest.findTestCases()
unittest.makeSuite()
unittest.getTestCaseNames()
Вместо этого используйте методы
TestLoader
:Патч от Хьюго ван Кеменаде.
gh-104804: Удалите непроверенный и недокументированный
webbrowser
MacOSX
класс, устаревший в Python 3.11. Исправление от Хьюго ван Кеменаде.gh-83863: Поддержка использования объектов
pathlib.Path
в качестве менеджеров контекста была удалена. До Python 3.9 выход из контекстного менеджера помечал путь как «закрытый», что приводило к тому, что при вызове некоторых (но не всех!) методов возникала ошибка. Начиная с Python 3.9, использование пути в качестве менеджера контекста ничего не дает.gh-104799: Скорректируйте расположение поля (см. PEP 695)
type_params
наast.ClassDef
,ast.AsyncFunctionDef
иast.FunctionDef
, чтобы лучше сохранить обратную совместимость. Исправление от Jelle Zijlstragh-104797: Разрешить классам
typing.Protocol
наследоваться отcollections.abc.Buffer
. Исправление от Jelle Zijlstra.gh-104783: Уберите функцию
locale.resetlocale()
, устаревшую в Python 3.11. Исправление Виктора Стиннера.gh-104780: Удалите программу
2to3
и модульlib2to3
, устаревшие в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
telnetlib
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
imghdr
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модули
cgi
иcgitb
, устаревшие в Python 3.11. Исправление Виктора Стиннера.gh-104773: PEP 594: Удалите модуль
sndhdr
, устаревший в Python 3.11. Исправление Виктора Стиннера.gh-104372: В Linux, где
subprocess
может использовать системный вызовvfork()
для ускорения порождения, предотвратите блокирование родительским процессом других потоков, сбросив GIL, пока он ожидает завершения дочернего процесса vfork’edexec()
. Это не позволит порождению двоичного файла из медленной файловой системы заблокировать работу остальной части приложения.gh-99108: Теперь мы выпускаем GIL для встроенных вычислений
hashlib
разумного размера для хэш-функций семейств SHA и MD5, что соответствует тому, что уже делают наши вычисления хэшей, поддерживаемые OpenSSL.gh-102613: Повышение производительности
pathlib.Path.glob()
при расширении шаблона с нетерминальным компонентом «**
» за счет фильтрации пройденных путей через регулярное выражение, а не за счет неоднократного вызоваos.scandir()
для каждого каталога.gh-104399: Подготовьте модуль
_tkinter
к сборке с Tcl 9.0 и будущей libtommath, заменив использование устаревших функцийmp_to_unsigned_bin_n()
иmp_unsigned_bin_size()
, когда это необходимо.gh-102676: Добавьте поля
start_offset
,cache_offset
,end_offset
,baseopname
,baseopcode
,jump_target
иoparg
вdis.Instruction
.gh-103558: Исправлен механизм проверки аргументов
parent
вargparse
. Улучшено покрытие тестов.gh-103464: Предоставление полезных сообщений при разборе неправильных команд
pdb
.gh-103384: Обобщите шаблон regex
BaseConfigurator.INDEX_PATTERN
, чтобы разрешить пробелы и неалфавитные символы в ключах.gh-103124: Добавлена поддержка многострочных операторов для
pdb
gh-101162: Запрещает использовать
builtins.issubclass()
сtypes.GenericAlias
в качестве первого аргумента.gh-103200: Исправлена семантика перезаполнения кэша в zipimport.invalidate_caches(). Теперь кэш пополняется при получении файлов с недействительным кэшем, а не когда кэш становится недействительным.
gh-100061: Исправлена ошибка, приводившая к неправильному совпадению регулярных выражений с притяжательным квалификатором.
gh-77609: Добавьте аргумент follow_symlinks в
pathlib.Path.glob()
иrglob()
, по умолчанию false.gh-102541: Скрыть отслеживание в подсказке
help()
, когда импорт не удался.gh-102120: В
tarfile
добавлен потоковый режим, позволяющий читать архивы без кэширования информации о внутренних файлах.gh-102029: Откажитесь от передачи каких-либо аргументов в
threading.RLock()
.gh-88233: Переработан
zipfile._strip_extra
для использования абстракций более высокого уровня для дополнительных функций вместо цикла с тяжелым состоянием.gh-102024: Уменьшите количество вызовов
_idle_semaphore.release()
вconcurrent.futures.thread._worker()
.gh-73435: Добавьте поддержку рекурсивных подстановочных знаков в
pathlib.PurePath.match()
.gh-84867:
unittest.TestLoader
больше не загружает тестовые случаи из точных классовunittest.TestCase
иunittest.FunctionTestCase
.gh-99203: Восстановлено следующее поведение
shutil.make_archive()
в CPython <= 3.10.5: не создавать пустой архив, еслиroot_dir
не является каталогом, и в этом случае вызыватьFileNotFoundError
илиNotADirectoryError
независимо от выбораformat
. Помимо возвращенного поведения, функция теперь может также вызывать эти исключения в режимеdry_run
.gh-80480: Эмиттировать
DeprecationWarning
для кода типаarray
в'u'
, deprecated в документации с Python 3.3.gh-94924:
unittest.mock.create_autospec()
теперь правильно возвращает корутиновые функции, совместимые сinspect.iscoroutinefunction()
.gh-94777: Исправьте зависание
multiprocessing
ProcessPoolExecutor
при падении дочернего процесса во время записи данных в очередь вызовов.gh-92871: Удалите пространства имен
typing.io
иtyping.re
, устаревшие с Python 3.8. Все элементы по-прежнему доступны из основного модуляtyping
.bpo-43633: Улучшение текстового представления IPv4-маппированных IPv6-адресов (RFC 4291 Разделы 2.2, 2.5.5.2) в
ipaddress
. Исправление Александра Павлюка.bpo-44850: Улучшение производительности
operator.methodcaller()
с использованием PEP 590vectorcall
. Патч от Энтони Ли и Питера Ендебака.bpo-44185:
unittest.mock.mock_open()
будет вызывать методclose()
имитатора файлового хэндла при выходе из контекстного менеджера. Исправление от Samet Yaslan.bpo-40988: Улучшите производительность
functools.singledispatchmethod
, кэшируя сгенерированную обертку диспетчера. Оптимизация предложена Фредерико. Исправление от @mental32, Alex Waygood и Pieter Eendebak.bpo-41768:
unittest.mock
спецификация больше не вызывает свойства класса. Исправление Мелани Витт.bpo-18319: Обеспечьте
gettext(msg)
получение переводов, даже если существует форма множественного числа. Другими словами:gettext(msg) == ngettext(msg, '', 1)
.bpo-17013: Добавьте
ThreadingMock
кunittest.mock
, которые могут быть использованы для создания Mock-объектов, способных ждать, пока их вызовут. Исправление от Karthikeyan Singaravelan и Mario Corchero.
Документация¶
gh-109209: Минимальная версия Sphinx, необходимая для документации, теперь составляет 4.2.
gh-108826:
dis
Интерфейс командной строки модуля теперь упоминается в документации.gh-107305: Добавьте документацию для
PyInterpreterConfig
иPy_NewInterpreterFromConfig()
. Также уточните некоторые близлежащие документы относительно GIL для каждого интерпретатора.gh-107008: Документируйте переменные модуля
curses
LINES
иCOLS
.gh-106948: Добавьте ряд стандартных внешних имен в
nitpick_ignore
.gh-106232: Сделайте командные строки timeit doc совместимыми с Windows, используя двойные кавычки для аргументов. Это также работает в linux и macOS.
gh-105172: Исправлена док-строка
functools.lru_cache()
, учитывающая разную обработку str и int в аргументеtyped
. Исправление от Bar Harel.gh-105052: Обновите
timeit
doc, чтобы указать, что время в секундах - это просто время по умолчанию.gh-89455: Добавьте недостающую документацию для параметров
max_group_depth
иmax_group_width
и атрибутаexceptions
классаtraceback.TracebackException
.gh-89412: Добавьте недостающую документацию для атрибутов
end_lineno
иend_offset
классаtraceback.TracebackException
.gh-104943: Удалите упоминания о старых версиях Python в
typing.NamedTuple
.gh-54738: Добавьте документацию о том, как локализовать модуль
argparse
.gh-102823: Документируйте тип возврата
x // y
, еслиx
иy
имеют типfloat
.gh-102759: Приведите сигнатуру функции
functools.reduce
в документации и docstring в соответствие с реализацией на C.
Тесты¶
gh-110647: Исправьте test_stress_modifying_handlers() из test_signal. Исправление от Виктора Стиннера.
gh-103053: Исправление test_tools.test_freeze на FreeBSD: запустите «make distclean» вместо «make clean» в скопированном каталоге исходников, чтобы удалить также программу «python». Исправление Виктора Стиннера.
gh-110167: Исправление тупиковой ситуации в test_socket, когда сервер завершает работу по таймауту, а клиент продолжает работать в своем потоке. Не удерживайте блокировку для вызова функций очистки в doCleanups(). Одна из функций очистки ожидает завершения работы клиента, в то время как клиент может зайти в тупик, если вызовет addCleanup() в такой ситуации. Исправление Виктора Стиннера.
gh-110367: regrtest: При использовании рабочих процессов (-jN) с опцией –verbose3 regrtest теперь может отображать вывод рабочего процесса, даже если рабочий процесс аварийно завершается. Ранее sys.stdout и sys.stderr были заменены, и поэтому вывод рабочего процесса терялся при сбое. Автор исправления - Виктор Стиннер.
gh-110267: Добавлены тесты для пикирования и копирования объектов PyStructSequence. Исправлено Xuehai Pan.
gh-110171:
libregrtest
теперь всегда устанавливает и показываетrandom.seed
, так что тесты стали более воспроизводимыми. Используйте флаг--randseed
, чтобы передавать явное случайное зерно для тестов.gh-110152: Удалите
Tools/scripts/run_tests.py
иmake hostrunnertest
. Вместо них просто запустите./python -m test --slow-ci
,make buildbottest
илиmake test
. Python test runner (regrtest) теперь работает с кросс-компиляцией и HOSTRUNNER. Он также добавляет опции для Python, такие как быстрый-u -E -W default -bb
, когда используется опция--fast-ci
или--slow-ci
. Исправление Виктора Стиннера.gh-110031: Пропускайте тесты test_threading при использовании thread+fork, если Python собран с Address Sanitizer (ASAN). Исправление от Виктора Стиннера.
gh-110088: Исправьте таймауты test_asyncio: не измеряйте максимальную продолжительность, тест не должен измерять производительность CI. Измеряйте только минимальную продолжительность, когда задача имеет таймаут или задержку. Добавьте
CLOCK_RES
кtest_asyncio.utils
. Исправление Виктора Стиннера.gh-109974: Исправление условий гонки в тестах блокировки test_threading. Ожидание выполнения условия вместо использования
time.sleep()
с жестко заданным числом секунд. Исправление Виктора Стиннера.gh-110033: Исправьте
test_interprocess_signal()
изtest_signal
. Убедитесь, что объектsubprocess.Popen
удален до того, как тест вызовет исключение в обработчике сигнала. В противном случаеPopen.__del__()
может получить исключение, которое будет зарегистрировано какException ignored in: ...
, и тест завершится неудачей. Исправление Виктора Стиннера.gh-109594: Исправьте test_timeout() в test_concurrent_futures.test_wait. Удалите будущее, которое может завершиться или не завершиться в зависимости от того, длится ли оно дольше таймаута или нет. Оставьте второе будущее, которое не завершится до истечения таймаута wait(). Исправление Виктора Стиннера.
gh-109972: Разделили файл test_gdb.py на пакет test_gdb, состоящий из нескольких тестов, так что теперь тесты можно запускать параллельно. Исправление Виктора Стиннера.
gh-109566: regrtest: При использовании опции
--fast-ci
или--slow-ci
regrtest теперь заменяет текущий процесс на новый, чтобы добавить в Python опции-u -W default -bb -E
. Исправление Виктора Стиннера.gh-109748: Исправление
test_zippath_from_non_installed_posix()
в test_venv: не копируйте подкаталоги__pycache__/
, потому что они могут быть изменены другими Python-тестами, выполняющимися параллельно. Исправление Виктора Стиннера.gh-109739: regrtest: Исправьте проверку утечки ссылок в Windows. Отключите трекер загрузки на Windows в режиме проверки утечки ссылок (опция -R). Исправление от Виктора Стиннера.
gh-109276: regrtest: Когда тест завершается неудачей с сообщением «env changed» и используется опция –rerun, тест теперь запускается заново в режиме verbose в свежем процессе. Исправление Виктора Стиннера.
gh-103053: Пропустите test_freeze_simple_script() из test_tools.test_freeze, если Python собран с
./configure --enable-optimizations
, то есть с Profile Guided Optimization (PGO): это просто сделает тест слишком медленным. Инструмент freeze тестируется многими другими CI с другими (более быстрыми) флагами компилятора. Исправление Виктора Стиннера.gh-109580: Пропустите
test_perf_profiler
, если Python собран с дезинфектором ASAN, MSAN или UBSAN. При такой сборке Python случайно падает в этом тесте. Исправление от Виктора Стиннера.gh-109566: regrtest: Добавьте опции
--fast-ci
и--slow-ci
.--fast-ci
использует таймаут по умолчанию 10 минут и-u all,-cpu
(пропускать самые медленные тесты).--slow-ci
по умолчанию использует таймаут 20 минут и-u all
(запуск всех тестов). Исправление Виктора Стиннера.gh-109425: libregrtest теперь декодирует stdout рабочих процессов тестирования с обработчиком ошибок «backslashreplace» для записи поврежденного stdout в журнал, вместо того чтобы завершить работу с ошибкой и не записывать stdout в журнал. Исправление Виктора Стиннера.
gh-109396: Исправьте
test_socket.test_hmac_sha1()
в режиме FIPS. Используйте более длинный ключ: Режим FIPS требует не менее 112 бит. Предыдущий ключ был всего 32 бита. Исправление от Виктора Стиннера.gh-104736: Исправьте test_gdb на Python, собранном с LLVM clang 16 на Linux ppc64le (например, Fedora 38). Поиск шаблонов в выводе команды gdb «bt» для обнаружения случаев, когда gdb не может получить обратную трассировку. Например, пропустить тест, если найдено
Backtrace stopped: frame did not save the PC
. Исправление Виктора Стиннера.gh-109276: libregrtest теперь вызывает
random.seed()
перед запуском каждого тестового файла, когда используется опция командной строки-r/--randomize
. Более того, она также вызывается в рабочих процессах. Это должно помочь сделать тесты более детерминированными. Ранее он вызывался только один раз в главном процессе перед запуском всех тестовых файлов и не вызывался в рабочих процессах. Исправление Виктора Стиннера.gh-109276: libregrtest теперь использует разделенный дескриптор файла для записи результатов тестирования в формате JSON. Ранее, если тест писал отладочные сообщения в конце JSON, основной процесс тестирования не мог разобрать JSON. Исправление Виктора Стиннера.
gh-108996: Исправить и включить
test_msvcrt
.gh-109237: Исправьте
test_site.test_underpth_basic()
, когда рабочий каталог содержит хотя бы один не-ASCII символ: перекодируйте файл._pth
в UTF-8 и включите режим UTF-8, чтобы использовать UTF-8 для stdout дочернего процесса. Исправление Виктора Стиннера.gh-109230: Исправление
test_pyexpat.test_exception()
: теперь его можно запускать из каталога, отличного от каталога исходного кода Python. Раньше в этом случае тест не выполнялся. Пропускайте тест, если исходный код Modules/pyexpat.c недоступен. Также пропустите тест на реализациях Python, отличных от CPython. Исправление Виктора Стиннера.gh-108996: Добавьте тесты для
msvcrt
.gh-109015: Исправьте тесты test_asyncio, test_imaplib и test_socket на FreeBSD, если включена черная дыра TCP (
sysctl net.inet.tcp.blackhole
). Пропустите несколько тестов, которые не сработали при использованииETIMEDOUT
с такой нестандартной конфигурацией. В настоящее время используется FreeBSD GCP image enables TCP and UDP blackhole (sysctl net.inet.tcp.blackhole=2
иsysctl net.inet.udp.blackhole=1
). Исправление Виктора Стиннера.gh-91960: Пропустите
test_gdb
, если gdb не может получить фреймовые объекты Python: если фрейм<optimized out>
. Когда Python собран с «clang -Og», gdb может не получить параметр frame из_PyEval_EvalFrameDefault()
. В этом случае тесты типаpy_bt()
, скорее всего, не пройдут. Не имея доступа к фреймам Python,python-gdb.py
в большинстве случаев не сможет получить трассировку Python. Кроме того,test_gdb
больше не пропускается на macOS, если Python собран с помощью Clang. Исправление Виктора Стиннера.gh-108962: Пропустите
test_tempfile.test_flags()
, еслиchflags()
завершится с ошибкой «OSError: [Errno 45] Operation not supported» (например, на FreeBSD 13). Исправление Виктора Стиннера.gh-91960: Покрытие CI-запросов для FreeBSD 13.2 теперь обеспечивается Cirrus-CI (хостинговый CI-сервис, поддерживающий Linux, macOS, Windows и FreeBSD).
gh-89392: Убрана поддержка функции
test_main()
в тестах. Теперь они всегда используют обычный тестовый бегунок unittest.gh-108851: Исправление
test_tomllib
тестов на рекурсию для билдботов WASI: уменьшение предела рекурсии и вычисление максимального вложенного массива/дикта в зависимости от текущего доступного предела рекурсии. Исправление Виктора Стиннера.gh-108851: Добавьте функции
get_recursion_available()
иget_recursion_depth()
в модульtest.support
. Исправление Виктора Стиннера.gh-108834: Добавьте опцию
--fail-rerun option
к regrtest: если тест не прошел, а затем прошел при повторном запуске в режиме verbose, завершите процесс с кодом выхода 2 (ошибка), вместо кода выхода 0 (успех). Исправление Виктора Стиннера.gh-108834: Переименуйте опцию regrtest
--verbose2
(-w
) в--rerun
. Оставьте--verbose2
в качестве устаревшего псевдонима. Исправление Виктора Стиннера.gh-108834: Когда regrtest повторно запускает неудачные тесты в режиме verbose (
./python -m test --rerun
), тесты теперь повторно запускаются в свежих рабочих процессах, а не выполняются в главном процессе. Если тест падает или завершается по таймауту, главный процесс может обнаружить и обработать завершенный рабочий процесс. Тесты запускаются параллельно, если используется опция-jN
для параллельного запуска тестов. Исправление Виктора Стиннера.gh-108822:
regrtest
теперь вычисляет статистику по всем тестам: успехи, неудачи и пропущенные.test_netrc
,test_pep646_syntax
иtest_xml_etree
теперь возвращают результаты в своей функцииtest_main()
. Исправление Виктора Стиннера и Алекса Уэйгуда.gh-108794: Метод
doctest.DocTestRunner.run()
теперь подсчитывает количество пропущенных тестов. Добавлены атрибутыdoctest.DocTestRunner.skips
иdoctest.TestResults.skipped
. Исправление Виктора Стиннера.gh-108388: Преобразование test_concurrent_futures в пакет из 7 подтестов. Исправление Виктора Стиннера.
gh-108388: Разделили test_multiprocessing_fork, test_multiprocessing_forkserver и test_multiprocessing_spawn на тестовые пакеты. Каждый пакет состоит из 4 подтестов: processes, threads, manager и misc. Это позволяет запускать больше тестов параллельно и тем самым сократить общую продолжительность тестирования. Автор патча - Виктор Стиннер.
gh-105776: Исправьте test_cppext, когда команда компилятора C
-std=c11
опция: удалить-std=
опции из команды компилятора. Исправление Виктора Стиннера.gh-107652: Настройка CIFuzz для запуска целей fuzz в GitHub Actions. Исправление от Illia Volochii.
gh-107237:
test_logging
: Исправьтеtest_udp_reconnection()
, увеличив таймаут со 100 мс до 5 минут (LONG_TIMEOUT). Исправление Виктора Стиннера.gh-107178: Добавьте тест C API для функций в протоколе отображения, протоколе последовательности и некоторых функций в протоколе объектов.
gh-106714: test_capi: Исправьте test_no_FatalError_infinite_loop(), чтобы больше не писать coredump, используя test.support.SuppressCrashReport. Исправление Виктора Стиннера.
gh-104090: Избегайте создания ссылки на тестовый объект в
collectedDurations()
.gh-106752: Переместили тесты для
zipfile.Path
вLib/test/test_zipfile/_path
. Сделалиzipfile._path
пакетом.gh-106690: Добавьте .coveragerc в репозиторий cpython для использования с пакетом покрытия.
gh-101634: При запуске набора тестов Python с опцией
-jN
, если рабочий stdout не может быть декодирован из кодировки локали, сообщите о неудачном тесте, если exitcode ненулевой. Исправление Виктора Стиннера.gh-105084: Когда сборка Python настроена на
--with-wheel-pkg-dir
, тесты, требующие колёсаsetuptools
иwheel
, будут искать колёса вWHEEL_PKG_DIR
.gh-81005: Строковые тесты изменены, чтобы отразить, что
str
иunicode
слиты в Python 3. Исправление от Даниила Фортунова.gh-103186: Подавление и утверждение ожидаемых предупреждений RuntimeWarnings в test_sys_settrace.py
gh-69714: Добавьте дополнительные тесты в
calendar
, чтобы добиться полного тестового покрытия.
Построить¶
gh-103053: «make check-clean-src» теперь также проверяет, найдена ли программа «python» в каталоге с исходным кодом: если она существует, то выдает ошибку. Исправление Виктора Стиннера.
gh-109191: Исправление ошибки компиляции при сборке с последними версиями libedit.
gh-110276: Больше не игнорирует сбой
PROFILE_TASK
без звука: команда, используемая Profile Guided Optimization (PGO). Исправление от Виктора Стиннера.gh-109566: Удалите цель
make testall
: вместо нее используйтеmake buildbottest
. Исправление Виктора Стиннера.gh-109740: Экспериментальный флаг конфигурации
--disable-gil
теперь включает «t» (для «threaded») в ABI-теги расширений.gh-109054: Исправлена сборка расширения
_testcapi
на Linux AArch64, требующая линковки с libatomic, когда используется<cpython/pyatomic.h>
: функция_Py_atomic_or_uint64()
требует libatomic__atomic_fetch_or_8()
на этой платформе. Теперь скрипт configure проверяет, нужна ли связь с libatomic, и генерирует новую переменную LIBATOMIC, используемую для сборки расширения _testcapi. Автор исправления - Виктор Стиннер.gh-63760: Исправьте сборку Solaris: больше не переопределяйте функцию
gethostname()
. Solaris определяет эту функцию с 2005 года. Исправление Виктора Стиннера, оригинальный патч Якуба Кулика.gh-108740: Исправление состояния гонки в
make regen-all
. Исходный кодdeepfreeze.c
и файлы, генерируемые Argument Clinic, теперь генерируются или обновляются перед генерацией «глобальных объектов». Ранее некоторые идентификаторы могли быть пропущены в зависимости от порядка генерации этих файлов. Исправление Виктора Стиннера.gh-108634: Python, собранный с помощью
configure
--with-trace-refs
(трассировка ссылок) теперь совместим по ABI с релизными сборками Python и debug build. Исправление Виктора Стиннера.gh-85283:
_stat
Расширение C теперь собирается с помощью limited C API. Исправление Виктора Стиннера.gh-108447: Исправьте сборку x86_64 GNU/Hurd
gh-107814: При вызове
find_python.bat
с помощью-q
он не глушил вывод nuget. Теперь это исправлено.gh-105481: Удалите цель make
regen-opcode-targets
, объедините ее работу вregen-opcode
, которая повторяет большую часть вычислений. Это упрощает код для сборки и уменьшает дублирование кода.gh-106881: Проверьте наличие
linux/limits.h
, прежде чем включать его вModules/posixmodule.c
.gh-95855: Рефакторинг кода обнаружения платформенных триплетов и добавление обнаружения для MIPS soft float и musl libc.
gh-106962: Обнаружить компиляторы MPI в
configure
.gh-106118: Исправление компиляции для платформ без
O_CLOEXEC
. Проблема появилась в Python 3.12b1 в gh-103295. Исправление Эрленда Аасланда.gh-105875: Для сборки модуля расширения
sqlite3
требуется SQLite 3.15.2 или новее. Исправление Эрленда Аасланда.gh-90005: Исправьте регрессию в
configure
, из-за которой мы могли непреднамеренно связываться сlibbsd
.gh-102404: Документируйте, как выполнить сборку WASI в Linux. Также добавьте Tools/wasm/build_wasi.sh в качестве эталонной реализации документации.
gh-89886: Autoconf 2.71 и aclocal 1.16.4 теперь требуются для регенерации
!configure
.gh-104692: Включите
commoninstall
как необходимое условие дляbininstall
Это гарантирует, что
commoninstall
будет завершен до запускаbininstall
, если используются параллельные сборки (make -j install
), и поэтому симлинкpython3
будет установлен только после установки всех модулей стандартной библиотеки.gh-101538: Добавляет экспериментальную поддержку wasi-потоков. Исправление от Такаши Ямамото.
Windows¶
gh-110437: Позволяет переопределять источник перераспределяемых файлов VC, чтобы релизы гарантированно не понижались между обновлениями.
gh-109286: Обновление программы установки Windows для использования SQLite 3.43.1.
gh-82367:
os.path.realpath()
теперь разрешает имена файлов в стиле MS-DOS, даже если файл недоступен. Исправление от Moonsik Park.gh-109991: Обновление сборки Windows для использования OpenSSL 3.0.11.
gh-106242: Исправлено поведение
realpath()
, которое должно быть последовательным при передаче пути, содержащего встроенный нулевой символ в Windows. В строгом режиме он теперь поднимаетOSError
вместо неожиданногоValueError
, а в нестрогом режиме делает путь абсолютным.gh-83180: Изменяет значение Python Launcher для Windows, чтобы предпочесть активное виртуальное окружение, если запущенный скрипт содержит строку shebang, использующую виртуальную команду Unix-подобного типа, даже если команда запрашивает конкретную версию Python.
gh-106844: Исправьте целочисленное переполнение и усечение по нулевому символу в
_winapi.LCMapStringEx()
, которое влияет наntpath.normcase()
.gh-105436: Убедитесь, что пустой блок среды завершается двумя нулевыми символами, как того требует Windows.
gh-105146: Обновлены ссылки в конце программы установки, чтобы они указывали на Discourse, а не на списки рассылки.
gh-103646: При установке из Microsoft Store
pip
больше не устанавливает по умолчанию установку для каждого пользователя. Однако, поскольку директория установки является недоступной для записи, она должна автоматически принимать решение об установке для каждого пользователя в любом случае. Это позволит решить проблемы, когдаpip
передается опция, конфликтующая с--user
.gh-88745: Повысьте производительность
shutil.copy2()
, используя функциюCopyFile2
операционной системы. Это может привести к тонким изменениям метаданных, копируемых вместе с некоторыми файлами, приводя их в соответствие с обычным поведением ОС.gh-104820: Исправляет
stat()
и связанные с ним функции в файловых системах, которые не поддерживают запросы идентификатора файла. К ним относятся FAT32 и exFAT.gh-104803: Добавьте
os.path.isdevdrive()
, чтобы определить, находится ли путь на Windows Dev Drive. ВозвращаетFalse
на платформах, не поддерживающих Dev Drive, и отсутствует на платформах, отличных от Windows.
macOS¶
IDLE¶
gh-104719: Удалите модификацию tokenize.tabsize в IDLE и протестируйте другие варианты использования данных и методов tokenize.
Инструменты/демоверсии¶
gh-109991: Обновите рабочие процессы GitHub CI для использования OpenSSL 3.0.11 и multissltests для использования 1.1.1w, 3.0.11 и 3.1.3.
gh-108494: Argument Clinic теперь имеет частичную поддержку Limited API: см. documentation in the Python Developer’s Guide Патч от Виктора Стиннера.
gh-107704: Теперь можно отказаться от передачи аргументов с ключевыми словами для ключевых или позиционных параметров с помощью Argument Clinic, используя новый синтаксис
/ [from X.Y]
. (Следует читать как «только для позиционных параметров, начиная с версии Python X.Y ».) Дополнительную информацию см. в documentation in the Python Developer’s Guide.gh-107880: Argument Clinic теперь может клонировать методы
__init__()
и__new__()
.gh-104683: Добавьте опцию
--exclude
в Аргумент Клиники CLI.gh-95065: Argument Clinic теперь поддерживает переопределение автоматически сгенерированной сигнатуры с помощью директивы
@text_signature
. См. documentation in the Python Developer’s Guide.gh-107609: Исправлена проверка дублирующего модуля в Argument Clinic. Ранее дублирующееся определение некорректно принималось молча. Исправление Эрленда Э. Аасланда.
gh-107467: Инструмент командной строки Argument Clinic теперь печатает в stderr, а не в stdout при неудаче.
gh-106970: Исправление ошибок в команде Argument Clinic
destination <name> clear
; буферы назначения никогда не очищались, а парсер директивыdestination
после обработки команды просто переходил к обработчику ошибок. Исправление Эрленда Э. Аасланда.gh-106706: Измените синтаксис байткода для семейств, чтобы убрать избыточный псевдосинтаксис сопоставления имен.
gh-106359: Argument Clinic теперь явно запрещает «kwarg splats» в вызовах функций, используемых в качестве аннотаций.
gh-103186:
freeze
теперь получаетCONFIG_ARGS
из оригинального экземпляра CPython, который Makefile использует для вызова сценариев утилит. Исправление Иджтабы Хусейна.gh-95065: Теперь можно отказаться от позиционной передачи параметров с помощью Argument Clinic, используя новый синтаксис
* [from X.Y]
. (Следует читать как «только для ключевых слов, начиная с версии Python X.Y ».) Более подробную информацию смотрите в documentation in the Python Developer’s Guide. Исправление сделано Эрлендом Э. Аасланом при помощи Алекса Уэйгуда, Никиты Соболева и Сергея Сторчака.
C API¶
gh-85283: Если макрос
Py_LIMITED_API
определен, макросыPy_BUILD_CORE
,Py_BUILD_CORE_BUILTIN
иPy_BUILD_CORE_MODULE
теперь не определяются макросом<Python.h>
. Исправление Виктора Стиннера.gh-110289: Добавьте функции
PyUnicode_EqualToUTF8AndSize()
иPyUnicode_EqualToUTF8()
.gh-110235: Повышение
TypeError
для дублирующихся/неизвестных полей в конструктореPyStructSequence
. Исправлено Xuehai Pan.gh-110014: Удалите недокументированную константу
PY_TIMEOUT_MAX
из ограниченного C API. Исправление Виктора Стиннера.gh-109521:
PyImport_GetImporter()
теперь устанавливает RuntimeError, если не может получитьsys.path_hooks
илиsys.path_importer_cache
или они не являются list и dict соответственно. Ранее он мог возвращать NULL без установки ошибки в неясных случаях, аварийно завершать работу или вызывать SystemError, если эти атрибуты имели неправильный тип.gh-108724: Добавьте
PyMutex
только внутренний API облегченной блокировки.gh-85283: Добавьте функцию
PySys_AuditTuple()
: аналогичноPySys_Audit()
, но аргументы события передаются в виде объекта Pythontuple
. Исправление Виктора Стиннера.gh-108867: Добавьте функцию
PyThreadState_GetUnchecked()
: аналогичноPyThreadState_Get()
, но не убивайте процесс с фатальной ошибкой, если результат равен NULL. Вызывающая сторона сама проверяет, является ли результат NULL. Ранее эта функция была приватной и называлась_PyThreadState_UncheckedGet()
. Исправление Виктора Стиннера.gh-108765:
Python.h
больше не включает стандартный заголовочный файл<ctype.h>
. При необходимости его теперь следует включать явно. Например, он предоставляет функцииisalpha()
иtolower()
, которые зависят от локали. Python предоставляет независимые от локали функции, такие какPy_ISALPHA()
иPy_TOLOWER()
. Исправление Виктора Стиннера.gh-108765:
Python.h
больше не включает стандартный заголовочный файл<unistd.h>
. При необходимости его теперь следует включать явно. Например, он предоставляет функции:close()
,getpagesize()
,getpid()
иsysconf()
. Исправление Виктора Стиннера.gh-108765:
Python.h
больше не включает стандартный заголовок<ieeefp.h>
. Он был включен для функцииfinite()
, которая теперь обеспечивается заголовком<math.h>
. Теперь его следует включать в явном виде, если это необходимо. Удалите также макросHAVE_IEEEFP_H
. Исправление Виктора Стиннера.gh-108765:
Python.h
больше не включает эти стандартные заголовочные файлы:<time.h>
,<sys/select.h>
и<sys/time.h>
. При необходимости их теперь следует включать явно. Например,<time.h>
предоставляет функцииclock()
иgmtime()
,<sys/select.h>
- функциюselect()
, а<sys/time.h>
- функцииfutimes()
,gettimeofday()
иsetitimer()
. Патч от Виктора Стиннера.gh-108511: Добавьте функции
PyObject_HasAttrWithError()
,PyObject_HasAttrStringWithError()
,PyMapping_HasKeyWithError()
иPyMapping_HasKeyStringWithError()
.gh-107073: Добавьте функции
PyObject_VisitManagedDict()
иPyObject_ClearManagedDict()
, которые должны вызываться функциями traverse и clear типа, использующего флагPy_TPFLAGS_MANAGED_DICT
. Исправление Виктора Стиннера.gh-108634: Python, созданный с помощью
configure
--with-trace-refs
(трассировка ссылок) теперь поддерживает Limited API. Исправление Виктора Стиннера.gh-108014: Добавьте функцию
PyLong_AsInt()
: она аналогичнаPyLong_AsLong()
, но хранит результат в C int, а не в C long. Ранее она была известна как частная функция_PyLong_AsInt()
(с префиксом подчеркивания). Исправление Виктора Стиннера.gh-108314: Добавьте функцию
PyDict_ContainsString()
: то же самое, что иPyDict_Contains()
, но ключ указывается как const char*. UTF-8 кодированная байтовая строка, а не PyObject*. Исправление Виктора Стиннера.gh-108337: Добавьте атомарные операции над дополнительными типами данных в pyatomic.h.
gh-108014: Добавьте функцию
Py_IsFinalizing()
: проверьте, является ли основной интерпретатор Python shutting down. Исправление Виктора Стиннера.gh-107916: Функции C API
PyErr_SetFromErrnoWithFilename()
,PyErr_SetExcFromWindowsErrWithFilename()
иPyErr_SetFromWindowsErrWithFilename()
теперь сохраняют код ошибки перед вызовомPyUnicode_DecodeFSDefault()
.gh-107915: Такие функции C API, как
PyErr_SetString()
,PyErr_Format()
,PyErr_SetFromErrnoWithFilename()
и многие другие, больше не аварийно завершаются и не игнорируют ошибки, если им не удалось отформатировать сообщение об ошибке или декодировать имя файла. Вместо этого они сохраняют соответствующую ошибку.gh-107810: Улучшите
DeprecationWarning
для использованияPyType_Spec
с метаклассами, имеющими пользовательскиеtp_new
.gh-107249: Реализуйте макрос
Py_UNUSED
для компилятора Windows MSVC. Исправление Виктора Стиннера.gh-107226:
PyModule_AddObjectRef()
теперь доступен только в ограниченном API версии 3.10 или более поздней.gh-106320: Удалите частный псевдоним
_PyUnicode_AsString()
дляPyUnicode_AsUTF8()
. Он был сохранен для обратной совместимости с Python 3.0 - 3.2. ФункцияPyUnicode_AsUTF8()
доступна начиная с Python 3.3. ФункцияPyUnicode_AsUTF8String()
может быть использована для сохранения совместимости с Python 3.2 и старше. Исправление Виктора Стиннера.gh-106572: Преобразование макросов
PyObject_DelAttr()
иPyObject_DelAttrString()
в функции. Исправление Виктора Стиннера.gh-106307: Добавить функцию
PyMapping_GetOptionalItem()
.gh-106521: Добавьте функции
PyObject_GetOptionalAttr()
иPyObject_GetOptionalAttrString()
.gh-106320: Удалите псевдоним
_PyInterpreterState_Get()
дляPyInterpreterState_Get()
, который был сохранен для обратной совместимости с Python 3.8. Исправление Виктора Стиннера.gh-106316: Удалите заголовочный файл
cpython/pytime.h
: он содержал только приватные функции. Исправление Виктора Стиннера.gh-106023: Удалите приватную функцию
_PyObject_FastCall()
: используйтеPyObject_Vectorcall()
, которая доступна с Python 3.8 (PEP 590). Исправление Виктора Стиннера.gh-106168: Если Python построен на debug mode или
with assertions
, тоPyTuple_SET_ITEM()
иPyList_SET_ITEM()
теперь проверяют аргумент index с помощью утверждения. Если утверждение не проходит, убедитесь, что размер был задан раньше. Исправление Виктора Стиннера.gh-106084: Удалите старые псевдонимы для функций, вызывающих функции, которые были сохранены для обратной совместимости с предварительным API Python 3.8:
_PyObject_CallMethodNoArgs()
: использоватьPyObject_CallMethodNoArgs()
_PyObject_CallMethodOneArg()
: использоватьPyObject_CallMethodOneArg()
_PyObject_CallOneArg()
: использоватьPyObject_CallOneArg()
_PyObject_FastCallDict()
: использоватьPyObject_VectorcallDict()
_PyObject_Vectorcall()
: использоватьPyObject_Vectorcall()
_PyObject_VectorcallMethod()
: использоватьPyObject_VectorcallMethod()
_PyVectorcall_Function()
: использоватьPyVectorcall_Function()
Просто удалите префикс подчеркивания, чтобы обновить свой код. Исправление Виктора Стиннера.
gh-106004: Добавляет функции
PyDict_GetItemRef()
иPyDict_GetItemStringRef()
: аналогичныеPyDict_GetItemWithError()
, но возвращающие strong reference вместо borrowed reference. Исправление Виктора Стиннера.gh-105927: Утратили актуальность функции
PyWeakref_GetObject()
иPyWeakref_GET_OBJECT()
: вместо них используйте новую функциюPyWeakref_GetRef()
. Исправление Виктора Стиннера.gh-105927: Добавьте функцию
PyWeakref_GetRef()
: аналогичнаPyWeakref_GetObject()
, но возвращает strong reference, илиNULL
, если референт больше не жив. Исправление Виктора Стиннера.gh-105922: Добавьте
PyImport_AddModuleRef()
: аналогичноPyImport_AddModule()
, но возвращает strong reference вместо borrowed reference. Исправление Виктора Стиннера.gh-105227: Новый
PyType_GetDict()
предоставляет словарь для данного объекта типа, который обычно раскрываетсяcls.__dict__
. Обычно достаточно использоватьtp_dict
, но для статических встроенных типовtp_dict
теперь всегдаNULL
. Вместо этогоPyType_GetDict()
предоставляет правильный объект dict.gh-105375: Исправление ошибки в
PyErr_WarnExplicit()
, когда исключение могло быть перезаписано, если API не справлялся с внутренней задачей.gh-105603: Мы переименовали новый (в 3.12)
PyInterpreterConfig.own_gil
вPyInterpreterConfig.gil
и изменили значение с «bool» на целое число с поддерживаемыми значениямиPyInterpreterConfig_DEFAULT_GIL
,PyInterpreterConfig_SHARED_GIL
иPyInterpreterConfig_OWN_GIL
. По умолчанию используется значение «shared».gh-105387: В ограниченном API C версии 3.12 функции
Py_INCREF()
иPy_DECREF()
теперь реализованы как непрозрачные вызовы функций, чтобы скрыть детали реализации. Исправление Виктора Стиннера.gh-105396: Утрачиваем функцию
PyImport_ImportModuleNoBlock()
, которая с Python 3.3 является просто псевдонимом дляPyImport_ImportModule()
. Исправление Виктора Стиннера.gh-103968:
PyType_FromMetaclass()
теперь позволяет использовать метаклассы сtp_new
, установленным наNULL
.gh-105268: Удалите старый приватный, недокументированный и непроверенный макрос
_PyGC_FINALIZED()
, который был оставлен для обратной совместимости с Python 3.8 и старше. Исправление Виктора Стиннера.gh-105182: Удалите функции
PyEval_AcquireLock()
иPyEval_ReleaseLock()
, устаревшие в Python 3.2. Исправление Виктора Стиннера.gh-105182: Удалите функции
PyEval_InitThreads()
иPyEval_ThreadsInitialized()
, устаревшие в Python 3.9. Исправление Виктора Стиннера.gh-105145: Устраните старые функции инициализации Python:
Патч Виктора Стиннера.
gh-85275:
PyObject_AsCharBuffer()
,PyObject_AsReadBuffer()
,PyObject_CheckReadBuffer()
иPyObject_AsWriteBuffer()
удалены. Пожалуйста, перейдите на новый буферный протокол;PyObject_GetBuffer()
иPyBuffer_Release()
.gh-105156: Откажитесь от старых типов
Py_UNICODE
иPY_UNICODE_TYPE
: вместо них используйте непосредственно типwchar_t
. Начиная с Python 3.3,Py_UNICODE
иPY_UNICODE_TYPE
являются просто псевдонимами дляwchar_t
. Исправление Виктора Стиннера.gh-105145: Удалите следующие старые функции для настройки инициализации Python, устаревшие в Python 3.11:
PySys_AddWarnOptionUnicode()
PySys_AddWarnOption()
PySys_AddXOption()
PySys_HasWarnOptions()
PySys_SetArgvEx()
PySys_SetArgv()
PySys_SetPath()
Py_SetPath()
Py_SetProgramName()
Py_SetPythonHome()
Py_SetStandardStreamEncoding()
_Py_SetProgramFullPath()
Патч Виктора Стиннера.
gh-105107: Удалите функции, устаревшие в Python 3.9.
PyEval_CallObject()
,PyEval_CallObjectWithKeywords()
: используйте вместо нихPyObject_CallNoArgs()
иPyObject_Call()
(позиционные аргументы не должны быть NULL).PyEval_CallFunction()
: используйте вместо негоPyObject_CallFunction()
.PyEval_CallMethod()
: используйте вместо негоPyObject_CallMethod()
.PyCFunction_Call()
: используйте вместо негоPyObject_Call()
.
Патч Виктора Стиннера.
gh-105115:
PyTypeObject.tp_bases
(иtp_mro
) для встроенных статических типов теперь общие для всех интерпретаторов, тогда как в 3.12-beta1 они хранились наPyInterpreterState
. Также обратите внимание, что теперь кортежи являются бессмертными объектами.gh-105071: Добавьте
PyUnstable_Exc_PrepReraiseStar
в нестабильный C api, чтобы показать реализациюexcept*
.gh-104922:
PY_SSIZE_T_CLEAN
больше не требуется использовать форматы'#'
в таких API, какPyArg_ParseTuple()
иPy_BuildValue()
. Они используютPy_ssize_t
для'#'
независимо отPY_SSIZE_T_CLEAN
.gh-104584: Добавляет нестабильный C API для подключения оптимизатора. Это в основном внутреннее, но помеченное как «нестабильное», чтобы позволить сторонним разработчикам экспериментировать.
gh-104668: Не вызывайте
PyOS_InputHook
илиPyOS_ReadlineFunctionPointer
в субинтерпретаторах, так как обычно трудно избежать использования глобального состояния в их зарегистрированных обратных вызовах. Это также позволяет избежать ситуаций, когда расширения могут оказаться запущенными в подинтерпретаторе, который они не поддерживают (или который еще не был загружен).bpo-42327: Добавьте функцию
PyModule_Add()
: аналогичнаPyModule_AddObjectRef()
иPyModule_AddObject()
, но всегда сохраняет ссылку на значение.bpo-40309: Правильно обрабатывать пробелы перед закрывающей скобкой в строках формата
Py_BuildValue()
.
Python 3.12.0 beta 1¶
Дата выхода: 2023-05-22
Безопасность¶
gh-99889: Исправлен недостаток безопасности в
uu.decode()
, который мог привести к обращению к директории на основе входных данных, если не был указанout_file
.gh-104049: Не раскрывайте локальное расположение на диске в индексах каталогов, созданных
http.client.SimpleHTTPRequestHandler
.gh-99108: Обновление встроенной
hashlib
Реализация SHA3 до проверенной реализации из проектаHACL*
. Используется, когда OpenSSL отсутствует или в нем нет SHA3.gh-102153:
urllib.parse.urlsplit()
теперь удаляет ведущие управляющие символы C0 и пробелы, следуя спецификации для URL, определенной WHATWG в ответ на CVE-2023-24329. Исправление Илии Волочии.
Ядро и встроенные модули¶
gh-102856: Внесите изменения PEP 701 в модуль
tokenize
. Исправления от Марты Гомес Масиас и Пабло Галиндо Сальгадоgh-104615: Исправьте неправильное упорядочивание присваиваний в коде типа
a, a = x, y
. Внесено Карлом Мейером.gh-104572: Улучшено сообщение об ошибке синтаксиса для недопустимых конструкций в контекстах PEP 695 и в аннотациях, когда активна
from __future__ import annotations
.gh-104482: Исправлены три ошибки в обработке ошибок в проверке операторов сопоставления шаблонов в ast.c.
gh-102818: Не добавлять кадр в обратный след в функциях
sys.setprofile
иsys.settrace
trampoline. Это гарантирует, что кадры не будут дублироваться, если в функции обратного вызова возникнет исключение, а также гарантирует, что кадры не будут пропущены, если используется обратный вызов на языке C, который не добавляет кадр.gh-104405: Исправлена проблема, из-за которой некоторые инструкции bytecode могли игнорировать PEP 523 при «инлайнинге» вызовов.
gh-103082: Изменено поведение событий
sys.monitoring.events.LINE
вsys.monitoring
: События линии теперь происходят при достижении новой линии динамически, а не с помощью статического приближения, как раньше. Это делает поведение очень похожим на поведение событий «линия» вsys.settrace
. Это должно облегчить перенос инструментов с 3.11 на 3.12.gh-104263: Исправьте
float("nan")
для получения тихого NaN на платформах (например, MIPS), где значение бита signalling / quiet инвертировано по сравнению с его обычным значением. Также введен новый макросPy_INFINITY
, соответствующийINFINITY
из C99, и рефакторинг внутренних функций, чтобы полагаться на макросыNAN
иINFINITY
из C99 вместо жесткого кодирования битовых шаблонов для бесконечности и NaN. Спасибо Себастьяну Бергу.gh-99113: Модули расширения Multi-phase init теперь могут указывать, что они поддерживают запуск в субинтерпретаторах, имеющих свой собственный GIL. Для этого используется значение
Py_MOD_PER_INTERPRETER_GIL_SUPPORTED
в слоте def модуляPy_mod_multiple_interpreters
. В противном случае модуль по умолчанию не может быть импортирован в такие подынтерпретаторы. (Это не влияет на основной интерпретатор или подинтерпретаторы, не имеющие собственного GIL). В дополнение к изоляции, которую обычно требует многофазный init, поддержка GIL для каждого интерпретатора подразумевает еще одно ограничение: безопасность потоков. Если модуль имеет внешние (связанные) зависимости, и эти библиотеки имеют состояние, которое не является потокобезопасным, то модуль должен проделать дополнительную работу по добавлению потокобезопасности. Это должно быть редким случаем.gh-99113: GIL теперь (опционально) зависит от конкретного интерпретатора. Это фундаментальное изменение для PEP 684. Все это стало возможным благодаря изолированному состоянию каждого интерпретатора в процессе. Поведение главного интерпретатора остается неизменным. Аналогично, интерпретаторы, созданные с помощью
Py_NewInterpreter()
, не затрагиваются. Чтобы получить интерпретатор с собственным GIL, вызовитеPy_NewInterpreterFromConfig()
.gh-104108: Модули расширения Multi-phase init теперь могут указывать, поддерживают ли они на самом деле несколько интерпретаторов. По умолчанию предполагается, что такие модули поддерживают использование в нескольких интерпретаторах. В редких случаях, когда это не так, модуль может использовать новый слот
Py_mod_multiple_interpreters
. Значение0
означает, что модуль их не поддерживает. Значение1
означает, что поддерживает. По умолчанию используется значение1
.gh-104142: Исправлена проблема, из-за которой при повторении
list
илиtuple
не соблюдался PEP 683.gh-104078: Улучшение производительности
PyObject_HasAttrString()
gh-104066: Улучшение работы
hasattr()
для объектов модуля с отсутствующим атрибутом.gh-104028: Сократите создание объектов при вызове функции обратного вызова из gc. Исправление от Donghee Na.
gh-104018: Запретить спецификатор формата «z» в объектах %-формата байтов.
gh-102213: Исправление падения производительности при обращении к атрибутам объекта с определенным
__getattr__
.gh-103895: Улучшение обработки крайних случаев при отображении
Exception.__notes__
. Обеспечивает, чтобы сообщения всегда заканчивались новой строкой и чтобы строки/байты не разрывались на несколько строк. Исправление от Carey Metcalfe.gh-103907: Не изменяйте рефкаунты известных бессмертных объектов (
True
,False
иNone
) в главном цикле интерпретатора.gh-103899: Предоставляет полезную подсказку в сообщении
TypeError
при случайном вызове объекта module, у которого есть вызываемый атрибут с таким же именем (например,dis.dis()
илиdatetime.datetime
).gh-103845: Удаляйте инструментарий строк и инструкций перед добавлением новых для мониторинга, чтобы избежать немедленного удаления вновь добавленного инструментария.
gh-103763: Реализуйте PEP 695, добавив синтаксическую поддержку общих классов, общих функций и псевдонимов типов.
Для псевдонимов типов добавлен новый синтаксис
type X = ...
, который во время выполнения разрешается в экземпляр нового классаtyping.TypeAliasType
. Значение лениво оценивается и доступно через атрибут.__value__
. Это реализовано в виде нового узла ASTast.TypeAlias
.Добавлен новый синтаксис (
class X[T]: ...
,def func[T](): ...
) для определения общих функций и классов. Это реализовано в виде нового атрибутаtype_params
на узлах AST для классов и функций. В этом узле хранятся экземпляры новых AST-классовast.TypeVar
,ast.ParamSpec
иast.TypeVarTuple
.typing.TypeVar
,typing.ParamSpec
,typing.ParamSpecArgs
,typing.ParamSpecKwargs
,typing.TypeVarTuple
иtyping.Generic
теперь реализованы на C, а не на Python.Появились новые инструкции байткода
LOAD_LOCALS
,LOAD_CLASSDICT_OR_GLOBAL
иLOAD_CLASSDICT_OR_DEREF
для поддержки корректного разрешения имен в пространствах имен классов.Патч от Эрика Траута, Ларри Хастингса и Йелле Зейлстры.
gh-103801: Добавляет три незначительных исправления линтинга в модуль wasm, которые были пойманы ruff.
gh-103793: Оптимизировали создание задач asyncio, отложив дорогостоящее форматирование строк (генерацию имени задачи) от создания задачи до первого вызова
get_name
. Благодаря этому бенчмарки asyncio работают на 5 % быстрее.gh-102310: Измените диапазон ошибок для недопустимых байтовых литералов.
gh-103590: Не заворачивайте одно исключение, вызванное конструкцией
try-except*
, в конструкциюExceptionGroup
.gh-103650: Измените формат perf map, чтобы убрать префикс „0x“ из адресов
gh-102856: Реализуйте необходимые изменения токенизатора C для PEP 701. Исправления внесли Пабло Галиндо Сальгадо, Лисандрос Николау, Батухан Таская, Марта Гомес Масиас и sunmy2019.
gh-100530: Уточните сообщение об ошибке, возникающей, когда вызываемая часть шаблона класса на самом деле не является классом.
gh-101517: Исправлена ошибка в номерах строк инструкций, выдаваемых для
except*
.gh-103492: Уточните сравнение
SyntaxWarning
с литераломis
, указав, какой литерал является проблематичным, поскольку сравненияis
с литералами, например,None
и bool, являются идиоматическими.gh-87729: Добавьте
LOAD_SUPER_ATTR
(и специализацию дляsuper().method()
), чтобы ускоритьsuper().method()
иsuper().attr
. Это делаетsuper().method()
примерно в 2,3 раза быстрее и приближает его к 20 % производительности простого вызова метода. Исправление Владимира Матвеева и Карла Мейера.gh-103488: Изменяет внутреннее смещение, различающее целевые адреса выхода и возврата, чтобы указатель инструкции был корректен для обработки исключений и других разворачиваний стека.
gh-82012: Оператор побитовой инверсии (
~
) для bool устарел. Он возвращает побитовую инверсию базового представленияint
, такого чтоbool(~True) == True
, что может сбить с толку. Используйтеnot
для логического отрицания bool. В редких случаях, когда вам действительно нужна побитовая инверсия базового представленияint
, преобразуйте в int явным образом~int(x)
.gh-77757: Исключения, возникающие в методе
__set_name__
типового объекта, больше не оборачиваютсяRuntimeError
. Информация о контексте добавляется к исключению в виде примечания PEP 678.gh-103333:
AttributeError
теперь сохраняет атрибутname
в маринованном и неочищенном виде.gh-103242: Перенесите метод
set_ecdh_curve()
, чтобы он не использовал устаревшие API OpenSSL. Исправление от Donghee Na.gh-103323: Мы заменили использование
_PyRuntime.tstate_current
на переменную, локальную для потока. Это довольно низкоуровневая деталь реализации, и никаких изменений в поведении быть не должно.gh-84436: Реализация PEP-683, которая добавляет бессмертные объекты, используя фиксированный счетчик ссылок, который пропускает подсчет ссылок, чтобы сделать объекты действительно неизменяемыми.
gh-102700: Разрешить встроенным модулям быть подмодулями. Это позволяет подмодулям быть статически связанными с бинарным файлом CPython.
gh-103082: Реализуйте PEP 669 Мониторинг с низким воздействием для CPython.
gh-88691: Сократите количество встроенных записей
CACHE
дляCALL
.gh-102500: Сделайте протокол буфера доступным в коде Python с помощью новых магических методов
__buffer__
и__release_buffer__
. Подробности смотрите в PEP 688. Исправление от Jelle Zijlstra.gh-97933: PEP 709: встроенные постижения списков, диктов и множеств для повышения производительности и уменьшения размера байткода.
gh-99184: Обход доступа к атрибутам экземпляра
__name__
вrepr
изweakref.ref
.gh-98003: Вызовы сложных функций теперь выполняются быстрее и не занимают место в стеке C.
bpo-39610:
len()
для 0-мерныхmemoryview
объектов (таких какmemoryview(ctypes.c_uint8(42))
) теперь возвращаетTypeError
. Ранее это возвращало1
, что было несовместимо с тем, чтоmem_0d[0]
вызывалIndexError
.bpo-31821: Исправьте работу
pause_reading()
при вызове изconnection_made()
вasyncio
.
Библиотека¶
gh-104600:
functools.update_wrapper()
теперь устанавливает атрибут__type_params__
(добавленный PEP 695).gh-104340: Когда трубный протокол
asyncio
теряет соединение из-за ошибки, а вызывающая сторона не ожидаетwait_closed()
на соответствующемStreamWriter
, не надо записывать в журнал предупреждение об исключении, которое так и не было получено. В конце концов, согласно документацииStreamWriter.close()
, вызовwait_closed()
является опциональным («не обязательным»).gh-104555: Исправлена проблема, при которой проверка
issubclass()
, сравнивающая классX
сruntime-checkable protocol
Y
с невызываемыми членами не приводила к появлению сообщенияTypeError
, если до этого был выполнен вызовisinstance()
, сравнивающий экземплярX
сY
. Эта проблема присутствовала в крайних случаях в Python 3.11, но стала более заметной в 3.12 из-за некоторых несвязанных изменений, которые были внесены в проверяемые во время выполнения протоколы. Исправление сделано Алексом Уэйгудом.gh-104372: Переработаны внутренние компоненты
_posixsubprocess
, чтобы избежать использования API Python C между fork и exec при пометке наследования дескрипторов файловpass_fds=
.gh-104484: Добавлен аргумент case_sensitive в
pathlib.PurePath.match()
.gh-75367: Исправьте обнаружение дескрипторов данных в
inspect.getattr_static()
.gh-104536: Исправление состояния гонки во внутренней логике очистки
multiprocessing.process
, которое могло проявиться в виде непреднамеренногоAttributeError
при вызовеprocess.close()
.gh-103857: Обновите stracktrace в datetime deprecations, чтобы он указывал на вызывающую строку
gh-101520: Переместите основную функциональность модуля
tracemalloc
в папкуPython/
, оставив только обертку модуля вModules/
.gh-104392: Удалите недокументированный и неиспользуемый атрибут
_paramspec_tvars
из некоторых классов вtyping
.gh-102613: Исправлена проблема, при которой
pathlib.Path.glob()
поднималRecursionError
при прохождении по глубоким деревьям каталогов.gh-103000: Улучшение производительности
dataclasses.asdict()
для распространенного случая, когда dict_factory равноdict
. Исправление от David C Ellis.gh-104301: Разрешить ведущие пробельные символы в разобщающих утверждениях в
pdb
.gh-104139: Научите
urllib.parse.unsplit()
сохранять"//"
при сборкеitms-services://?action=generate-bugs
в стиле Apple Platform Deployment. URL.gh-104307:
socket.getnameinfo()
теперь освобождает GIL при обращении к DNS-серверуgh-104310: Теперь пользователи могут использовать
importlib.util.allowing_all_extensions()
(менеджер контекста) для временного отключения строгих проверок совместимости при импорте модулей расширения в подынтерпретаторы.gh-87695: Исправлена проблема, при которой
pathlib.Path.glob()
поднималOSError
, когда встречал симлинк на слишком длинный путь.gh-104265: Предотвращение возможного сбоя путем запрета инстанцирования типов
_csv.Reader
и_csv.Writer
. Регрессия была введена в 3.10.0a4 с PR 23224 (bpo-14935). Исправление внесено Радиславом Чугуновым.gh-102613: Улучшение производительности
pathlib.Path.glob()
при расширении рекурсивных подстановочных знаков («**
») за счет объединения смежных подстановочных знаков и удаления дублирования результатов только при необходимости.gh-65772: Удалите ненужные комментарии и код в turtle.py.
gh-90208: Исправлена проблема, из-за которой метод
pathlib.Path.glob()
возвращал неполные результаты, когда встречалPermissionError
. Теперь этот метод подавляет все исключенияOSError
, кроме тех, которые возникают при вызовеis_dir()
на пути верхнего уровня.gh-104144: Оптимизируйте
asyncio.TaskGroup
при использованииasyncio.eager_task_factory()
. Пропускать планирование обратного вызова done, если задача TaskGroup завершается с нетерпением.gh-104144: Оптимизируйте
asyncio.gather()
при использованииasyncio.eager_task_factory()
, чтобы он завершался с нетерпением, если все фьючерсы завершены с нетерпением. Избегайте планирования обратных вызовов done для фьючерсов, которые завершаются с нетерпением.gh-104114: Исправлена проблема, при которой
pathlib.Path.glob()
возвращала пути, используя случай неволшебных символов для соответствующих сегментов пути, а не реальный случай файловой системы.gh-104104: Улучшите производительность
pathlib.Path.glob()
, используяre.IGNORECASE
для реализации сопоставления без учета регистра.gh-104102: Улучшение производительности
pathlib.Path.glob()
при оценке шаблонов, содержащих сегменты'../'
.gh-103822: Обновите тип возврата
weekday
на новый добавленный атрибут Daygh-103629: Обновите
repr
изtyping.Unpack
в соответствии с PEP 692.gh-103963: Заставьте
dis
отображать имена аргументов дляCALL_INTRINSIC_*
.gh-104035: Не игнорируйте определенные пользователем методы
__getstate__
и__setstate__
для щелевых замороженных классов данных.gh-103987: В
mmap
исправлено несколько ошибок, которые могли привести к доступу к файлам, отображаемым в памяти, после того как они были аннулированы.gh-88773: В модуль
turtle
добавленturtle.teleport()
для перемещения черепашки в новую точку без трассировки линии, видимой или невидимой. Исправление Лиама Герстена.gh-103935: Используйте
io.open_code()
для файлов, которые будут выполняться вместо необработанныхopen()
.gh-68968: Исправлен искаженный вывод
assertEqual()
, когда на входе отсутствовала завершающая новая строка.gh-100370: Исправление потенциальных
OverflowError
вsqlite3.Connection.blobopen()
для 32-битных сборок. Исправление от Erlend E. Aasland.gh-102628: Замените CTRL-D на CTRL-Z в
sqlite3
Баннер CLI при работе под Windows.gh-103636: Атрибуты уровня модуля
January
иFebruary
устарели по сравнению сcalendar
.gh-103583: Изолируйте
_multibytecodec
и модули расширения кодеков. Патчи Эрленда Э. Аасланда.gh-103848: Добавьте проверку того, что хосты
[
, заключенные в скобки]
, найденныеurllib.parse.urlsplit()
, имеют формат IPv6 или IPvFuture.gh-103872: Обновите поставляемую в комплекте копию pip до версии 23.1.2.
gh-99944: Заставьте
dis
отображать значение oparg изKW_NAMES
.gh-74940: Локаль C.UTF-8 больше не конвертируется в en_US.UTF-8, что позволяет использовать кодировку UTF-8 на системах, где не установлены локали.
gh-103861: Исправление того, что
zipfile.Zipfile
создавал некорректные zip-файлы, когдаforce_zip64
использовался для добавления в них файлов. Исправление от Carey Metcalfe.gh-103857: Устаревшие
datetime.datetime.utcnow()
иdatetime.datetime.utcfromtimestamp()
(исправление от Paul Ganssle).gh-103839: Избегайте ошибки компиляции из-за того, что файл tommath.h не найден, при сборке Tkinter на Tcl 8.7, собранном с libtommath в комплекте.
gh-103791:
contextlib.suppress
теперь поддерживает подавление исключений, поднятых как частьExceptionGroup
. Если в группе существуют другие исключения, они будут повторно подняты в группе, которая не содержит подавленных исключений.gh-90750: Используйте
datetime.datetime.fromisocalendar()
в реализацииdatetime.datetime.strptime()
, которая теперь должна принимать только действительные даты ISO. (Исправление от Paul Ganssle)gh-103685: Подготовьте
tkinter.Menu.index()
для Tk 8.7, чтобы он не поднималTclError: expected integer but got ""
, когда должен возвращатьNone
.gh-81403:
urllib.request.CacheFTPHandler
больше не вызываетURLError
, если кэшированный экземпляр FTP используется повторно. Метод ftplib endtransfer вызывает voidresp для разрыва соединения, чтобы правильно обрабатывать повторное использование экземпляров FTP.gh-103699: Добавляет
__orig_bases__
в негенерические TypedDicts, TypedDicts, основанные на вызовах, и NamedTuples, основанные на вызовах. Другие типизаторы и NamedTuples уже имеют этот атрибут.gh-92248: Утратить
type
,choices
иmetavar
параметрыargparse.BooleanOptionalAction
.gh-89415: Добавьте константы
socket
для специфической для источника многоадресной рассылки. Исправление от Reese Hyde.gh-103673:
socketserver
получаетForkingUnixStreamServer
иForkingUnixDatagramServer
классы. Исправление от Джея Берри.gh-103636: Добавлен Enum для месяцев и дней в модуле календаря.
gh-84976: Создайте новый файл
Lib/_pydatetime.py
, определяющий Python-версию модуляdatetime
, и заставьтеdatetime
импортировать содержимое новой библиотеки только в случае отсутствия реализации на C. В настоящее время полная реализация Python определяется, а затем удаляется, если реализация C недоступна, что неоправданно замедляет работуimport datetime
.gh-103596: Атрибуты/методы больше не затеняются одноименными членами перечисления, хотя они могут быть затенены свойствами перечисления.
gh-103584: Обновлено
importlib.metadata
с изменениями отimportlib_metadata
5.2 по 6.5.0, включая: Поддержкаinstalled-files.txt
дляDistribution.files
при наличии.PackageMetadata
теперь предусматривает дополнительный методget
, позволяющий легко запрашивать ключи метаданных, которые могут отсутствовать.packages_distributions
теперь учитывает пакеты и модули с модулями Python, которые не являются источниками.py
(например,.pyc
,.so
). Расширение протокола дляPackageMetadata.get_all
в соответствии с реализациейemail.message.Message.get_all
в python/typeshed#9620. Исправлено использованиеDistribution
без определения абстрактных методов. Исправлено ожидание, чтоPackageMetadata.__getitem__
будет возвращатьNone
для отсутствующих ключей. В будущем он будет вызыватьKeyError
.gh-103578: Исправлена ошибка, при которой метод
pdb
падал при чтении исходного файла с другой кодировкой, путем заменыio.open()
наio.open_code()
. Новый метод также будет вызывать хук, установленныйPyFile_SetOpenCodeHook()
.gh-103556: Теперь создание объектов
inspect.Signature
с позиционным параметром только по умолчанию, за которым следует позиционный параметр или ключевое слово без него, невозможно.gh-103559: Обновите поставляемую в комплекте копию pip до версии 23.1.1.
gh-103548: Повышает производительность
pathlib.Path.absolute()
иcwd()
, соединяя пути только при необходимости. Также улучшает производительностьpathlib.PurePath.is_absolute()
на Posix, пропуская разбор и нормализацию путей.gh-103538: Удалите код модуля
_tkinter
, защищенный определением макросаTK_AQUA
, который был необходим только для Tk 8.4.7 или более ранних версий и никогда не был определен ни одной системой сборки или документирован для ручного использования.gh-103525: Исправлено недостоверное сообщение об исключении при передаче смешанных аргументов
str
иbytes
вpathlib.PurePath
иPath
.gh-103489: Добавьте
getconfig()
иsetconfig()
кConnection
для внесения изменений в конфигурацию соединения с базой данных. Исправление Эрленда Э. Аасланда.gh-103365: Установите границу флага по умолчанию на
STRICT
и исправьте побитовые операции.gh-103472: Избегайте потенциальных
ResourceWarning
вhttp.client.HTTPConnection
, явно закрывая ответ CONNECT прокси/туннеля.gh-103462: Исправлена проблема с использованием
writelines()
вasyncio
для отправки очень больших полезных нагрузок, превышающих объем данных, который может быть записан за один вызовsocket.socket.send()
илиsocket.socket.sendmsg()
, в результате чего оставшийся буфер оставался незаписанным.gh-103449: Исправление ошибки в генерации doc-строк в
dataclasses.dataclass()
.gh-103092: Изолировать
_collections
(применить PEP 687). Исправление Эрленда Э. Аасланда.gh-103357: Добавлена поддержка параметра
logging.Formatter
defaults
к параметрамlogging.config.dictConfig()
иlogging.config.fileConfig()
. Исправление от Bar Harel.gh-74690: Производительность проверок
isinstance()
по отношению кruntime-checkable protocols
была значительно улучшена для протоколов, состоящих всего из нескольких членов. Для достижения этого улучшения были отрефакторены некоторые детали внутренней реализации модуляtyping
, включаяtyping._ProtocolMeta.__instancecheck__
,typing._is_callable_members_only
иtyping._get_protocol_attrs
. Патчи от Алекса Уэйгуда.gh-74690: Члены протокола, проверяемого во время выполнения, теперь считаются «замороженными» во время выполнения, как только класс был создан. Более подробную информацию см. в «What’s new in Python 3.12».
gh-103256: Исправлена ошибка, из-за которой
hmac
вызывал исключение, когда запрашиваемый хэш-алгоритм не был доступен в OpenSSL, хотя и был доступен отдельно в составе самогоhashlib
. Теперь он корректно возвращается к встроенному. Это может произойти, например, когда ваш OpenSSL не включает поддержку SHA3, а вы хотите вычислитьhmac.digest(b'K', b'M', 'sha3_256')
.gh-103285: Улучшить производительность
ast.get_source_segment()
.gh-103225: Исправление ошибки в
pdb
при отображении номеров строк исходного кода на уровне модуля.gh-103092: Адаптируйте модуль расширения
winsound
к PEP 687.gh-93910: Устраните устаревание доступа к enum
member.member
.gh-102978: Исправление того, что
unittest.mock.patch()
не выполнял сигнатуры функций для методов, оформленных с помощью@classmethod
или@staticmethod
, когда патч вызывается с помощьюautospec=True
.gh-103092: Изолировать
_socket
(применить PEP 687). Исправление Эрленда Э. Аасланда.gh-100479: Добавьте метод
pathlib.PurePath.with_segments()
, который создает объект пути из аргументов. Этот метод вызывается всякий раз, когда создается производный путь, например, изpathlib.PurePath.parent
. Подклассы могут переопределять этот метод для обмена информацией между объектами пути.gh-103220: Исправлена проблема, при которой
os.path.join()
добавлял косую черту при присоединении к неполному UNC-диску с косой чертой в конце на Windows.gh-103204: Исправляет
http.server
, принимая HTTP-запросы с номерами версий, которым предшествуют „+“, „-“ или символы „_“, разделяющие цифры. Длина номеров версий также ограничена.gh-75586: Исправление различных проблем, специфичных для Windows
shutil.which
.gh-103193: Улучшение производительности
inspect.getattr_static()
. Исправление от Алекса Уэйгуда.gh-103176:
sys._current_exceptions()
теперь возвращает отображение из thread-id в экземпляр исключения, а не в кортеж(typ, exc, tb)
.gh-103143: Отполируйте справочные сообщения и документацию
pdb
.gh-103015: Добавьте в
sqlite3.Connection.load_extension()
параметр entrypoint только с ключевым словом, чтобы переопределить точку входа расширения SQLite. Исправление Эрленда Э. Аасланда.gh-103000: Улучшение производительности
dataclasses.astuple()
иdataclasses.asdict()
в случаях, когда содержимое является обычными типами Python.gh-102953: Методы извлечения из
tarfile
иshutil.unpack_archive()
имеют новый аргумент фильтр, который позволяет ограничить возможности tar, которые могут быть неожиданными или опасными, например, создание файлов вне целевого каталога. Подробности см. в Фильтры для извлечения.gh-97696: Реализовал фабрику задач с нетерпением в asyncio. При использовании в качестве фабрики задач в цикле событий она выполняет ускоренное выполнение корутинов. Корутины, которые могут завершиться синхронно (например, return или raise без блокировки), возвращаются сразу как завершенная задача, и задача никогда не планируется в цикл событий. Если корутина блокируется, то (ожидающая) задача планируется и возвращается.
gh-81079: Добавьте чувствительный к регистру аргумент только для ключевого слова в
pathlib.Path.glob()
иrglob()
.gh-101819: Изолируйте модуль расширения
io
, применив PEP 687. Исправление Кумара Адитьи, Виктора Стиннера и Эрленда Э. Аасланда.gh-91896: Утратить
collections.abc.ByteString
gh-101362: Ускорьте построение
pathlib.Path
, исключив якорь пути из внутреннего списка частей пути.gh-102114: Функции в модуле
dis
, принимающие в качестве аргумента строку исходного кода, теперь выводят более лаконичный трассировочный бэкграунд, если строка содержит синтаксическую ошибку или ошибку отступа.gh-62432: Теперь бегун
unittest
будет завершать работу с кодом состояния 5, если не было запущено ни одного теста. Обычно при неправильной конфигурации тестового прогона не удается найти ни одного теста, это должно быть ошибкой.gh-78079: Исправлена некорректная нормализация корней путей UNC устройств и частичных корней путей UNC ресурсов в
pathlib.PurePath
. Pathlib больше не добавляет к таким путям косую черту.gh-85984: Добавьте
tty.cfmakeraw()
иtty.cfmakecbreak()
кtty
и модернизируйте поведениеtty.setraw()
иtty.setcbreak()
, чтобы по умолчанию использовать маски флагов POSIX.1-2017 Глава 11 «Общий терминальный интерфейс».gh-101688: Реализуйте
types.get_original_bases()
, чтобы обеспечить дальнейшую интроспекцию для типов.gh-101640:
argparse.ArgumentParser
теперь отлавливает ошибки при написании сообщений, например, когдаsys.stderr
равноNone
. Исправление Олега Иарыгина.gh-83861: Исправьте возвращаемое значение метода datetime.astimezone при вызове наивного экземпляра datetime, который представляет локальное время, попадающее в промежуток перехода часовых поясов. PEP 495 требует, чтобы в этом случае экземпляры с fold=1 выдавали более раннее время, чем экземпляры с fold=0.
gh-89550: Уменьшите время выполнения некоторых записей в файлы
gzip
на 15%, добавив более подходящую буферизацию.gh-95299: Удалите поставляемое колесо setuptools из
ensurepip
и прекратите установку setuptools в окружениях, созданныхvenv
.gh-99353: Уважать флаг
http.client.HTTPConnection
.debuglevel
флаг вurllib.request.AbstractHTTPHandler
, если параметр конструктораdebuglevel
не установлен. И сделайте то же самое для*HTTPS*
.gh-98040: Удалите давно устаревший модуль
imp
.gh-97850: Утратить
pkgutil.find_loader()
иpkgutil.get_loader()
в пользуimportlib.util.find_spec()
.gh-94473: Уплощение аргументов в
tkinter.Canvas.coords()
. Теперь он принимает не толькоx1, y1, x2, y2, ...
и[x1, y1, x2, y2, ...]
, но и(x1, y1), (x2, y2), ...
и[(x1, y1), (x2, y2), ...]
.gh-98040: Удалите больше устаревших API importlib:
find_loader()
,find_module()
,importlib.abc.Finder
,pkgutil.ImpImporter
,pkgutil.ImpLoader
.gh-96522: Исправление потенциального тупика в pty.spawn()
gh-96534: Поддержка divert(4) добавлена в FreeBSD 14.
gh-87474: Исправление потенциальных утечек дескрипторов файлов в
subprocess.Popen
.gh-94906: Поддержка нескольких шагов в
math.nextafter()
. Исправление от Shantanu Jain и Matthias Gorgens.gh-51574: Заставьте
tempfile.mkdtemp()
возвращать абсолютные пути, когда его параметр dir является относительным.gh-94518: Преобразовать частное
_posixsubprocess.fork_exec()
для использования Аргумент Клиника.gh-92184: При создании zip-файлов с использованием
zipfile
,os.altsep
, если неNone
, всегда будет рассматриваться как разделитель путей, даже если он не является/
. Исправление от Carey Metcalfe.bpo-46797: Предупреждения об устаревании теперь выдаются для
ast.Num
,ast.Bytes
,ast.Str
,ast.NameConstant
иast.Ellipsis
. Они были задокументированы как устаревшие с Python 3.8 и будут удалены в Python 3.14.bpo-44844: Включает
webbrowser
для обнаружения и запуска браузера Microsoft Edge.bpo-45606: Исправлена ошибка в
pathlib.Path.glob()
– ранее висячая ссылка не находилась этим методом при точном совпадении шаблона, но находилась, если шаблон содержал подстановочный знак или рекурсивный подстановочный знак (**
). С этим изменением висячая ссылка будет найдена в обоих случаях.bpo-23041: Добавьте
QUOTE_STRINGS
иQUOTE_NOTNULL
к набору стилей цитирования модуляcsv
.bpo-24964: Добавлен
http.client.HTTPConnection.get_proxy_response_headers()
, предоставляющий доступ к HTTP-заголовкам в ответе прокси-сервера на запросCONNECT
.bpo-17258:
multiprocessing
теперь поддерживает более сильные алгоритмы HMAC для аутентификации межпроцессных соединений, а не только HMAC-MD5.bpo-39744: Заставьте
asyncio.subprocess.Process.communicate()
закрывать stdin подпроцесса, даже если он вызывается с помощьюinput=None
.bpo-22708: Улучшения туннельного метода http.client CONNECT: Использование протокола HTTP 1.1; отправка соответствующего заголовка Host: при CONNECT, если он не предоставлен; преобразование доменных имен IDN в Punycode. Исправление Майкла Хэндлера.
Документация¶
gh-67056: Документируйте, что эффект регистрации или снятия регистрации функции очистки
atexit
изнутри зарегистрированной функции очистки не определен.gh-103629: Упомяните новый способ типизации
**kwargs
с помощьюUnpack
иTypedDict
, представленный в PEP 692.gh-48241: Уточнение документации о том, что параметр url в urllib.request.urlopen и urllib.request.Request должен быть правильно закодирован.
gh-86094: Добавлена поддержка дополнительного поля Unicode Path в ZipFile. Исправление от Yeojin Kim и Andrea Giudiceandrea
gh-99202: Исправьте тип расширения из документации для компиляции в режиме C++20
Тесты¶
gh-104494: Обновите
test_pack_configure_in
иtest_place_configure_in
для изменений в форматировании сообщений об ошибках в Tk 8.7.gh-104461: Запускайте test_configure_screen только на X11, так как переменная окружения
DISPLAY
и опция-screen
для toplevels не пригодятся в Tk для Win32 или Aqua.gh-86275: Добавлены тесты на основе свойств к тестам
zoneinfo
, а также заглушки для интерфейсаhypothesis
. (Исправление от Paul Ganssle)gh-103329: Добавлены регрессионные тесты для поведения
unittest.mock.PropertyMock
.gh-102795: исправлено использование poll в test_epoll’s test_control_and_wait
gh-75729: Исправление ошибок в тестах
os.spawn*
под Windows, когда рабочий каталог или путь к интерпретатору содержит пробелы.
Построить¶
gh-101282: Оптимизация BOLT теперь применяется к общей библиотеке libpython при сборке общей библиотеки. Настройки инструментов и приложений BOLT теперь можно изменять с помощью переменных конфигурации
BOLT_INSTRUMENT_FLAGS
иBOLT_APPLY_FLAGS
.gh-99017:
PYTHON_FOR_REGEN
теперь требуют Python 3.10 или новее.gh-104490: Определите
.PHONY
/ Виртуальные цели выполняются последовательно и правильно.gh-104106: Добавляет gcc fallback для mkfifoat/mknodat для macOS. Исправление от Donghee Na.
gh-103532: Макрос
TKINTER_PROTECT_LOADTK
больше не определяется и не используется в модуле_tkinter
. Раньше он определялся только при сборке с Tk 8.4.13 и старше, но Tk старше 8.5.12 не поддерживается с gh-91152.gh-99069: Расширение обходного пути, определяющего
static_assert
при отсутствии в заголовках libc, на все сборки clang и gcc. В частности, это исправляет сборку на macOS <= 10.10.gh-100220: Изменено значение по умолчанию переменной
SHELL
Makefile переменной с/bin/sh
на/bin/sh -e
, чтобы обеспечить корректное завершение сложных рецептов после ошибки. Ранее переменнаяmake install
могла не устанавливать некоторые файлы и при этом возвращать успешный результат.gh-90656: Добавьте платформенные триплеты для 64-битного LoongArch:
loongarch64-linux-gnusf
loongarch64-linux-gnuf32
loongarch64-linux-gnu
Патч от Чжан На.
Windows¶
gh-104623: Обновление программы установки Windows для использования SQLite 3.42.0.
gh-82814: Исправление потенциальной
[Errno 13] Permission denied
при использованииshutil.copystat()
в Windows Subsystem for Linux (WSL) на смонтированной файловой системе путем добавленияerrno.EACCES
в список игнорируемых ошибок во внутренней реализации.gh-103088: Исправьте скрипт виртуальной среды
activate
, имеющий неправильные окончания строк для Cygwin.gh-103088: Исправляет неработающие venvs в bash под Windows на разных дисках
gh-102997: Обновление программы установки Windows для использования SQLite 3.41.2.
gh-88013: Исправлена ошибка, из-за которой в некоторых случаях при вызове
ntpath.realpath()
с параметром bytes возникала ошибкаTypeError
.
macOS¶
gh-99834: Обновление программы установки macOS до версии Tcl/Tk 8.6.13.
gh-104623: Обновление программы установки macOS до версии SQLite 3.42.0.
gh-103545: Добавьте
os.PRIO_DARWIN_THREAD
,os.PRIO_DARWIN_PROCESS
,os.PRIO_DARWIN_BG
иos.PRIO_DARWIN_NONUI
. Их можно использовать вместе сos.setpriority
, чтобы запустить процесс с более низким приоритетом и задействовать более эффективные ядра в системах Apple Silicon.gh-104180: Поддержка чтения конфигурации SOCKS-прокси из системной конфигурации macOS. Исправление от Сэма Шотта.
gh-60436: обновите текстовое поле curses, чтобы оно дополнительно обрабатывало бэкспейс при нажатии клавиши
curses.ascii.DEL
.gh-102997: Обновление программы установки macOS до версии SQLite 3.41.2.
IDLE¶
Инструменты/демоверсии¶
C API¶
gh-101291: Добавлен нестабильный API на языке C для извлечения значений «компактных» целых чисел:
PyUnstable_Long_IsCompact()
иPyUnstable_Long_CompactValue()
.gh-104109: Мы добавили
Py_NewInterpreterFromConfig()
иPyInterpreterConfig
в публичный C-API (но не в стабильный ABI, по крайней мере, пока). Новая функция может быть использована для создания нового интерпретатора с различными настройками. Функция была добавлена для поддержки PEP 684 (per-interpreter GIL).gh-103968:
PyType_FromSpec()
и его варианты теперь позволяют создавать классы, чей метакласс переопределяетtp_new
. При этомtp_new
игнорируется. Это поведение устарело и будет запрещено в версии 3.14+. НовыйPyType_FromMetaclass()
уже запрещает это.gh-103743: Добавьте функцию
PyUnstable_Object_GC_NewWithExtraData()
, которая может быть использована для выделения дополнительной памяти после объекта для данных, не управляемых Python.gh-103295: Введены
PyUnstable_WritePerfMapEntry()
,PyUnstable_PerfMapState_Init()
иPyUnstable_PerfMapState_Fini()
. Они позволяют модулям расширения (в частности, JIT-компиляторам) писать в файлы perf-map потокобезопасным образом. Поддержка Python для профилировщика Linux perf также использует эти API для записи записей в файл perf-map.gh-103509: Добавлен C API для расширения типов, чья компоновка памяти экземпляра непрозрачна:
PyType_Spec.basicsize
теперь может быть нулевым или отрицательным,PyObject_GetTypeData()
может использоваться для получения данных, специфичных для подкласса, аPy_TPFLAGS_ITEMS_AT_END
может использоваться для безопасного расширения объектов переменного размера. Подробности см. в разделе PEP 697.gh-103091: Добавлена новая функция C-API для нетерпеливого присвоения метки версии объекту PyTypeObject:
PyUnstable_Type_AssignVersionTag()
.gh-101408:
PyObject_GC_Resize
должен вычислять размер предзаголовка, если это необходимо. Исправление от Donghee Na.gh-98836: Добавлена поддержка большего количества вариантов форматирования (выравнивание по левому краю, восьмеричные числа, шестнадцатеричные числа в верхнем регистре,
intmax_t
,ptrdiff_t
,wchar_t
C-строки, переменная ширина и точность) вPyUnicode_FromFormat()
иPyUnicode_FromFormatV()
.gh-96803: Добавьте нестабильные функции C-API для получения объекта кода, lasti и номера строки из внутреннего
_PyInterpreterFrame
в ограниченном API. Этими функциями являются:PyCodeObject * PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame)
int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame)
int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame)
Python 3.12.0 alpha 7¶
Дата выхода: 2023-04-04
Ядро и встроенные модули¶
gh-102192: Утратил силу
_PyErr_ChainExceptions
в пользу_PyErr_ChainExceptions1
.gh-89987: Сократите количество встроенных записей
CACHE
дляBINARY_SUBSCR
.gh-102859: Удалены инструкции
JUMP_IF_FALSE_OR_POP
иJUMP_IF_TRUE_OR_POP
.gh-101975: Исправлено значение
stacktop
в записях трассировки, чтобы избежать повреждения при сборке мусора.gh-102778: Добавьте
sys.last_exc
и отменитеsys.last_type
,sys.last_value
иsys.last_traceback
, которые содержат ту же информацию в устаревшей форме.gh-100982: Замените все вхождения
COMPARE_AND_BRANCH
наCOMPARE_OP
.gh-102701: Исправление переполнения при создании очень больших dict.
gh-102755: Добавьте
PyErr_DisplayException()
, который принимает только экземпляр исключения, чтобы заменить унаследованныйPyErr_Display()
, который принимает триплет(typ, exc, tb)
.gh-102594: Добавьте примечание к исключению, возникающему в
PyErr_SetObject
при неудачной нормализации.gh-90997: Сократите количество встроенных записей
CACHE
, используемыхLOAD_GLOBAL
.gh-102491: Улучшение времени импорта
platform
за счет удаления разбора версии IronPython. Разбор версии IronPython был неработоспособен (см. https://github.com/IronLanguages/ironpython3/issues/1667).gh-101291: Биты возмущения в первом поле (после заголовка) PyLongObject. * Биты 0 и 1: 1 - знак. Т.е. 0 для положительных чисел, 1 для нуля и 2 для отрицательных чисел. * Бит 2 зарезервирован (вероятно, для бессмертного бита) * Бит 3+ размер без знака.
Это делает несколько операций немного более эффективными, а в будущем позволит использовать более компактное и быстрое 2s-комплементарное представление большинства интов.
gh-102397: Исправление segfault из-за состояния гонки при обработке сигналов во время сборки мусора. Исправление от Kumar Aditya.
gh-102406: Ошибки кодирования/декодирования
codecs
теперь получают информацию о контексте (какая операция и какие кодеки) в виде примечаний PEP 678, а не через цепочку новых экземпляров исключения.gh-102281: Исправление потенциального разыменования nullptr и использования неинициализированной памяти в fileutils. Исправление от Макса Бахмана.
gh-102300: Повторное использование операндов с refcount, равным 1, в float-специализациях BINARY_OP.
gh-102213: Исправление падения производительности при обращении к атрибутам объекта с определенным
__getattr__
.gh-102255: Улучшена поддержка сборки для Xbox. Патч от Макса Бахмана.
gh-102027: Исправьте обнаружение SSE2 и SSE3 во внутреннем модуле
_blake2
. Исправление от Макса Бахмана.gh-101865: Утратить
co_lnotab
в объектах кода, запланировать его удаление в Python 3.14bpo-1635741: Адаптируйте
_pickle
к PEP 687. Патч от Mohamed Koubaa и Erlend Aasland.
Библиотека¶
gh-103085: Pure python
locale.getencoding()
не будет предупреждать об устаревании.gh-103068: Больше нельзя регистрировать условные точки останова в
Pdb
, которые поднимаютSyntaxError
. Исправление от Tian Gao.gh-102549: Не игнорируйте исключения при создании типа-члена.
gh-103056: Убедитесь, что конечный
_generate_next_value_
являетсяstaticmethod
.gh-103046: Правильное отображение метки текущей строки в
dis
, еслиshow_caches
равно False иlasti
указывает на запись CACHE.gh-102433: При проверке
isinstance()
наruntime-checkable protocols
теперь используетсяinspect.getattr_static()
, а неhasattr()
для поиска наличия атрибутов. Это означает, что дескрипторы и методы__getattr__()
больше не будут неожиданно оцениваться при проверкеisinstance()
на соответствие протоколам, проверяемым во время выполнения. Однако это также может означать, что некоторые объекты, которые раньше считались экземплярами протокола, проверяемого временем выполнения, больше не будут считаться экземплярами этого протокола на Python 3.12+, и наоборот. Большинство пользователей вряд ли пострадают от этого изменения. Автор исправления - Алекс Уэйгуд.gh-103023: Больше нельзя регистрировать выражения для отображения в
Pdb
, которые поднимаютSyntaxError
. Исправление от Tian Gao.gh-102947: Улучшение возврата трассировки при вызове
dataclasses.fields()
на не-датаклассе. Исправление от Алекса Уэйгудаgh-102780: Менеджер контекста
asyncio.Timeout
теперь надежно работает даже при выполнении очистки из-за отмены задачи. Ранее в таких случаях он мог поднятьCancelledError
вместоTimeoutError
.gh-102871: Удалите поддержку устаревших браузеров из
webbrowser
. К удаленным браузерам относятся Grail, Mosaic, Netscape, Galeon, Skipstone, Iceape, Firebird и Firefox версий 35 и ниже.gh-102839: Повышение производительности обработки аргументов
math.log()
за счет удаления клиники аргументов.gh-102828: Добавьте аргумент
onexc
кshutil.rmtree()
, который похож наonerror
, но ожидает экземпляр исключения, а не кортеж exc_info. Утратитьonerror
.gh-88965: типизация: Исправлена ошибка, связанная с подстановкой в пользовательские классы, общие для
ParamSpec
. Ранее, еслиParamSpec
подставлялся в список параметров, который сам содержалTypeVar
, тоTypeVar
в списке параметров не мог быть впоследствии подставлен. Теперь это исправлено.Патч Никиты Соболева.
gh-76846: Исправлена проблема, из-за которой методы
__new__()
и__init__()
подклассовpathlib.PurePath
иPath
не вызывались при некоторых обстоятельствах.gh-78530:
asyncio.wait()
теперь принимает задания с генераторами, приносящими доход. Исправление Кумара Адитьи.gh-102748:
asyncio.iscoroutine()
теперь возвращаетFalse
для генераторов, посколькуasyncio
не поддерживает унаследованные генераторные корутины. Исправление Кумара Адитьи.gh-102670: Оптимизированы fmean(), correlation(), covariance() и linear_regression() с использованием новой функции math.sumprod().
gh-102615: Типизация: Улучшите
repr
общих псевдонимов для классов, общих дляParamSpec
. (Используйте квадратные скобки для представления списка параметров).gh-100112:
asyncio.Task.get_coro()
теперь всегда возвращает coroutine при обертывании ожидаемого объекта. Исправление Кумара Адитьи.gh-102578: Ускоряет установку или удаление изменяемых атрибутов для подклассов замороженных классов данных, не являющихся классами данных. В связи с реализацией
__setattr__
и__delattr__
для замороженных классов данных, ранее эта задача имела временную сложность O(n). Теперь временная сложность составляет O(1).gh-102519: Добавьте функции
os.listdrives()
,os.listvolumes()
иos.listmounts()
в Windows для перечисления дисков, томов и точек монтированияgh-74468: Атрибут имени извлеченного
tarfile
файлового объекта теперь содержит имя самого файла, а не архива, в котором он находится. Исправление Олега Иарыгина.gh-102378: Приватный метод-помощник
inspect._signature_strip_non_python_syntax
больше не будет удалять/
из входной строки.gh-79940: Добавьте
inspect.getasyncgenstate()
иinspect.getasyncgenlocals()
. Исправление Томаса Креннваллнера.gh-102103: Добавьте аргумент
module
кdataclasses.make_dataclass()
и сделайте производимые им классы pickleable.gh-102069: Исправьте генерацию дескрипторов
__weakref__
для пользовательских классов данных.gh-102038: Пропустите
stat
вsite
, если мы уже нашлиpyvenv.cfg
.gh-98886: Исправление проблем при определении классов данных, содержащих поля со специфическими именами с подчеркиванием, которые явно не зарезервированы
dataclasses
.gh-101673: Исправлена ошибка
pdb
, когдаll
очищал изменения локальных переменных.gh-101313: Добавлены аргументы -h и –help в CLI веб-браузера
gh-100372:
ssl.SSLContext.load_verify_locations()
больше не воспринимает некорректно некоторые случаи с данными в конце при разборе DER.gh-89727: Исправьте ошибку рекурсии pathlib.Path.walk на глубоких деревьях каталогов, переписав ее с помощью итерации вместо рекурсии.
gh-100131: Добавлен необязательный аргумент ключевого слова
delete
дляtempfile.TemporaryDirectory
.gh-48330: Добавлена опция командной строки
--durations
, показывающая N самых медленных тестовых случаев. Конструкторыunittest.TextTestRunner
иunittest.TextTestResult
принимают новый аргумент ключевого слова durations. Подклассы должны учитывать это или принимать**kwargs
. Добавлены методunittest.TestResult.addDuration()
и атрибутunittest.TestResult.collectedDurations
.(Предоставлено Джампаоло Родола)
gh-98169: Исправление сбоя
dataclasses.astuple()
при наличииcollections.defaultdict
в атрибутах.gh-96931: Исправьте неверные результаты из
ssl.SSLSocket.shared_ciphers()
gh-95495: При сборке на базе OpenSSL 3.0 модуль
ssl
имел ошибку, при которой он сообщал о неаутентифицированных EOF (т.е. без close_notify) как о чистых EOF на уровне TLS. Теперь он поднимаетSSLEOFError
, что соответствует поведению в предыдущих версиях OpenSSL. Атрибутoptions
наSSLContext
также больше не включаетOP_IGNORE_UNEXPECTED_EOF
по умолчанию. Этот параметр можно установить, чтобы указать прежнее поведение OpenSSL 3.0.gh-94684: Теперь функции
uuid.uuid3()
иuuid.uuid5()
поддерживают объектыbytes
в качестве аргумента имя.gh-94440: Исправлена ошибка
concurrent.futures.process
, из-за которой выключениеProcessPoolExecutor
могло зависнуть после быстрой отправки и отмены будущего.gh-72346: Добавлено предупреждение об устаревании для параметра isdst в
email.utils.localtime()
.bpo-36305: Исправлена работа с именами файлов Windows, похожими на имена дисков, например
./a:b
, вpathlib
.
Документация¶
gh-103112: Добавьте docstring к
http.client.HTTPResponse.read()
, чтобы исправить выводpydoc
.
Тесты¶
Построить¶
Windows¶
gh-102690: Обновите
webbrowser
, чтобы вернуться к Microsoft Edge вместо Internet Explorer.gh-99726: Улучшает корректность результатов статистики для Windows и использует более быстрый API, если он доступен
Инструменты/демоверсии¶
gh-102809:
Misc/gdbinit
был удален.
C API¶
gh-102013: Добавьте новую (нестабильную) функцию C-API для итерации по объектам GC’able с использованием обратного вызова:
PyUnstable_VisitObjects
.
Python 3.12.0 alpha 6¶
Дата выхода: 2023-03-07
Безопасность¶
gh-99108: Замените встроенные реализации MD5 и SHA1 в хеш-либе проверенными из проекта HACL*.
gh-101727: Обновлена версия OpenSSL, используемая в бинарных сборках Windows и macOS, до 1.1.1t для решения проблем CVE-2023-0286, CVE-2022-4303 и CVE-2022-4303 в соответствии с the OpenSSL 2023-02-07 security advisory.
gh-99108: Замените встроенные
hashlib
реализации SHA2-384 и SHA2-512 из LibTomCrypt на формально проверенный, устойчивый к побочным каналам код из проекта HACL*. Встроенные функции остаются запасным вариантом, используемым только в тех случаях, когда OpenSSL их не предоставляет.gh-101283:
subprocess.Popen
теперь использует более безопасный подход для поискаcmd.exe
при запуске сshell=True
. Патч от Eryk Sun, основанный на патче от Oleg Iarygin.
Ядро и встроенные модули¶
gh-102493: Исправьте регрессию в семантике нормализации в
PyErr_SetObject
.gh-102416: Не мемоизировать неправильно сгенерированные автоматически правила циклов в парсере. Исправление от Пабло Галиндо.
gh-102356: Исправлена ошибка, приводившая к сбою при деаллокации глубоко вложенных объектов фильтра. Исправление от Marta Gómez Macías.
gh-102336: Очистка специальной обработки, специфичной для Windows 7. Исправление от Макса Бахмана.
gh-102250: Исправлен сегфолт, возникающий при вызове интерпретатором метода
__bool__
, который поднимает.gh-102126: Исправление тупика при завершении работы при очистке состояний потоков, если какой-либо финализатор пытается получить головную блокировку времени выполнения. Исправление Кумара Адитьи.
gh-102027: Используйте
GetCurrentProcessId
в Windows, еслиgetpid
недоступен. Исправление от Макса Бахмана.gh-102056: Исправлены ошибки в обработке ошибок в коде печати исключений интерпретатора, которые могли привести к краху при бесконечной рекурсии.
gh-100982: Ограничьте область действия инструкции
FOR_ITER_RANGE
областью действия исходной инструкцииFOR_ITER
, чтобы разрешить инструментарий.gh-101967: Исправление возможного сегфайта в функции
positional_only_passed_as_keyword
при создании нового списка.gh-101952: Исправление возможного сегфайта в опкоде
BUILD_SET
при создании нового набора.gh-74895:
socket.getaddrinfo
больше не повышаетOverflowError
дляint
портов, выходящих за пределы длинного диапазона C. Значения, выходящие за пределы диапазона, остаются на усмотрение API библиотеки C, основанной на строках. Asocket.gaierror
SAI_SERVICE
или вообще никакой ошибки, поскольку не все библиотеки платформы C генерируют ошибку.gh-101799: Добавьте
CALL_INTRINSIC_2
и используйте его вместоPREP_RERAISE_STAR
.gh-101857: Исправьте обнаружение поддержки xattr в системах Linux, расширив проверку на linux, а не только на glibc. Это исправляет поддержку musl.
gh-84783: Сделайте объект slice хэшируемым. Исправление Уилла Брэдшоу и Фуркана Ондера.
gh-87849: Измените инструкцию
SEND
, чтобы оставить приемник в стеке. Это позволяет специализированной формеSEND
пропустить цепочку вызовов C и перейти непосредственно кRESUME
в генераторе или корутине.gh-101765: Исправление ошибки SystemError / segmentation fault в iter
__reduce__
, когда внутренний доступ к ключамbuiltins.__dict__
мутирует объект iter.gh-101430: Обновите
tracemalloc
, чтобы правильно обрабатывать предварительный размер объекта. Исправление от Donghee Na.gh-101696: Недействительный тег версии типа в
_PyStaticType_Dealloc
для статических типов, что позволяет избежать ошибки, при которой ложное попадание в кэш может привести к аварийному завершению работы интерпретатора. Исправление Кумара Адитьи.gh-101632: Добавляет новую инструкцию
RETURN_CONST
.gh-100719: Удалите поле gi_code из объектов генератора (а также coroutine и async-генератора), так как оно является избыточным. Фрейм уже содержит ссылку на объект кода.
gh-98627: Когда интерпретатор настроен на проверку (и только тогда), импорт модуля расширения теперь будет неудачным, если расширение не поддерживает несколько интерпретаторов (т. е. не реализует многофазный инит PEP 489). Это не относится ни к основному интерпретатору, ни к подинтерпретаторам, созданным с помощью
Py_NewInterpreter()
.
Библиотека¶
gh-102302: Микрооптимизация хэширования
inspect.Parameter
, сокращающая время хэширования экземпляра примерно на 40 %.gh-101979: Исправлена ошибка, при которой скобки в аргументе
metavar
дляargparse.ArgumentParser.add_argument()
опускались. Исправление от Yeojin Kim.gh-91038:
platform.platform()
теперь имеет булевые аргументы по умолчанию.gh-81652: Добавьте
mmap.MAP_ALIGNED_SUPER
FreeBSD иmmap.MAP_CONCEAL
OpenBSD константы вmmap
. Исправление от Yeojin Kim.gh-102179: Исправьте сообщение об ошибке
os.dup2()
для отрицательных fds.gh-101961: В двоичном режиме
fileinput.hookcompressed()
не устанавливает значениеencoding
, даже если оно равноNone
. Исправление от Gihwan Kim.gh-101936: Значение по умолчанию
fp
становитсяio.BytesIO
, еслиHTTPError
инициализируется без обозначенного параметраfp
. Патч от Long Vo.gh-101566: В zip-файле синхронизируйте Path с zipp 3.14, включая исправление extractall на базовом zip-файле после обертывания в
Path
.gh-97930: Примените изменения из importlib_resources 5.12, включая исправление для
MultiplexedPath
для поддержки каталогов в нескольких пространствах имен (python/importlib_resources#265).gh-101997: Обновление колеса pip в комплекте с ensurepip (pip 23.0.1)
gh-99108: Встроенные модули расширения для
hashlib
SHA2-алгоритмов, используемые, когда OpenSSL их не предоставляет, теперь находятся в одном внутреннем модуле_sha2
вместо отдельных модулей_sha256
и_sha512
.gh-101892: Вызываемые итераторы больше не поднимают
SystemError
, когда вызываемый объект исчерпывает итератор, но забывает либо вернуть значение sentinel, либо поднятьStopIteration
.gh-87634: Удалите поведение блокировки из
functools.cached_property()
.gh-97786: Исправление потенциально неопределенного поведения в угловых случаях преобразований с плавающей точкой во время.
gh-101517: Исправлена ошибка, при которой
bdb
просматривал исходную строку сlinecache
с помощьюlineno=None
, что приводило к ошибке с необработанным исключением.gh-101773: Оптимизируйте
fractions.Fraction
для небольших компонентов. Частный аргумент_normalize
конструктораfractions.Fraction
был удален.gh-101693: В
sqlite3.Cursor.execute()
теперь выдаетсяDeprecationWarning
, когда named placeholders используются вместе с параметрами, представленными в виде sequence, а не в видеdict
. Начиная с Python 3.14, использование именованных плейсхолдеров с параметрами, переданными в виде последовательности, будет вызывать ошибкуProgrammingError
. Исправление Эрленда Э. Аасланда.gh-101446: Измените repr из
collections.OrderedDict
, чтобы использовать обычное форматирование словаря вместо пар ключей и значений.gh-101362: Ускоряем построение
pathlib.PurePath
, обрабатывая аргументы более единообразно. При передаче аргументаpathlib.Path
мы используем его строковое представление, а не соединяем его части с помощьюos.path.join()
.gh-101362: Ускорьте построение
pathlib.PurePath
, вызываяos.path.join()
только при наличии двух или более аргументов.gh-101362: Ускоряет построение
pathlib.Path
, выполняя проверку совместимости path flavour только при импорте pathlib.gh-85984: Переработали реализацию
pty.fork()
для использованияos.login_tty()
.Теперь
DeprecationWarning
вызываетсяpty.master_open()
иpty.slave_open()
. Они были недокументированы и давно устарели в docstring в пользуpty.openpty()
.gh-101561: Добавьте новый декоратор
typing.override()
. Подробности см. в разделе PEP 698. Исправление Стивена Трокслера.gh-63301: Установите код выхода, когда
tabnanny
CLI завершает работу при ошибке.gh-101360: Исправлено сопоставление якорей в
pathlib.PureWindowsPath.match()
. Якоря путей и шаблонов теперь сопоставляются сfnmatch
, как и другие части пути. Это позволяет сопоставлять такие шаблоны, как"*:/Users/*"
.gh-101277: Удалите глобальное состояние из модуля
itertools
(PEP 687). Патчи Эрленда Э. Аасланда.gh-100809: Исправлена обработка относительных к диску путей (например, „C:“ и „C:foo“) в
pathlib.Path.absolute()
. Теперь этот метод использует API ОС для получения правильного текущего рабочего каталога для диска.gh-99138: Применить PEP 687 к
zoneinfo
. Исправление Эрленда Э. Аасланда.gh-96764:
asyncio.wait_for()
теперь используетasyncio.timeout()
в качестве базовой реализации. Исправление Кумара Адитьи.gh-88233: Корректно сохранять «дополнительные» поля в
zipfile
независимо от их порядка относительно zip64 «extra».bpo-23224: Исправление сегфайтов при создании объектов
lzma.LZMADecompressor
иbz2.BZ2Decompressor
без вызова__init__()
, а также исправление утечки блокировок и внутренних буферов при многократном вызове методов__init__()
объектовlzma.LZMADecompressor
,lzma.LZMACompressor
,bz2.BZ2Compressor
иbz2.BZ2Decompressor
.
Документация¶
gh-85417: Обновите документацию
cmath
, чтобы уточнить поведение при разрезании ветвей.gh-97725: Исправьте описание
asyncio.Task.print_stack()
дляfile=None
. Патч от Олега Иарыгина.
Тесты¶
gh-102019: Исправление тупика при выключении, если
test_current_{exception,frames}
не работает. Исправление от Джейкоба Боуэра.gh-85984: Использование новых функций «winsize» из termios в тестах pty.
gh-89792:
test_tools
теперь копирует в 10 раз меньше исходных данных во временный каталог во время тестаfreeze
, игнорируя метаданные git и другие артефакты. Он также ограничивает параллелизм сборки python на основе os.cpu_count вместо жесткого кодирования в 8 ядер.
Построить¶
gh-99942: На Android в статической сборке python-config в режиме встраивания больше не сообщает неверно о библиотеке, с которой нужно ссылаться.
gh-99942: На Android, python.pc теперь корректно сообщает библиотеку, с которой нужно ссылаться, как и python-config.sh.
gh-100221: Исправлено создание директорий установки в
make sharedinstall
, если они уже существуют внеDESTDIR
.gh-96821: Явно пометьте модули расширения C, которым требуется определенное переполнение знаковых целых чисел, и добавьте опцию configure
--with-strict-overflow
. Исправление Матиаса Гёргенса и Шантану Джайна.
Windows¶
gh-102344: Реализуйте
winreg.QueryValue
с помощьюQueryValueEx
иwinreg.SetValue
с помощьюSetValueEx
. Патч от Макса Бахмана.gh-101881: Правильно обрабатывайте операции чтения и записи на неблокирующих трубах в Windows.
gh-101881: Добавьте поддержку функций os.get_blocking() и os.set_blocking() в Windows.
gh-101849: Обеспечивает корректное обновление существующих установок
py.exe
пусковой установки.gh-101763: Обновление копии libffi, поставляемой с установками Windows, до версии 3.4.4.
gh-101759: Обновление программы установки Windows до версии SQLite 3.40.1.
gh-101614: Корректная обработка расширений, созданных на основе отладочных двоичных файлов, которые ссылаются на
python3_d.dll
.gh-101196: Функции
os.path.isdir
,os.path.isfile
,os.path.islink
иos.path.exists
теперь на 13-28 % быстрее в Windows за счет меньшего количества вызовов Win32 API.
macOS¶
gh-101759: Обновление программы установки macOS до версии SQLite 3.40.1.
C API¶
gh-101907: Убирает использование нестандартного расширения C++ в публичных заголовочных файлах.
gh-99293: Документируйте, что тег Py_TPFLAGS_VALID_VERSION_TAG является внутренней функцией, не должен использоваться и будет удален.
gh-101578: Добавьте
PyErr_GetRaisedException()
иPyErr_SetRaisedException()
для сохранения и восстановления текущего исключения. Эти функции возвращают и принимают один объект исключения, а не тройной аргумент в уже устаревшихPyErr_Fetch()
иPyErr_Restore()
. Это меньше подвержено ошибкам и немного эффективнее.Добавьте
PyException_GetArgs()
иPyException_SetArgs()
в качестве удобных функций для получения и измененияargs
, переданного конструктору исключения.gh-91744: Введен уровень Unstable C API, обозначающий APi, который разрешено изменять в минорных выпусках без периода амортизации. Подробности см. в PEP 689.
Python 3.12.0 alpha 5¶
Дата выхода: 2023-02-07
Безопасность¶
Ядро и встроенные модули¶
gh-92173: Исправление аргументов
defs
иkwdefs
вPyEval_EvalCodeEx()
и утечка ссылок в этой функции.gh-59956: API GILState теперь частично совместим с субинтерпретаторами. Ранее
PyThreadState_GET()
иPyGILState_GetThisThreadState()
рассинхронизировались, что приводило к непоследовательному поведению и сбоям.gh-101400: Исправление неправильного lineno в сообщении об исключении для
continue
илиbreak
, которые не находятся в цикле. Исправление от Donghee Na.gh-101372: Исправьте
is_normalized()
, чтобы правильно обрабатывать случаи UCD 3.2.0. Исправление от Donghee Na.gh-101266: Исправьте отчетность
sys.getsizeof()
для подклассовint
.gh-101291: Рефакторинг
PyLongObject
struct в обычный заголовок объекта Python иPyLongValue
struct.gh-101046: Исправление возможной утечки памяти в парсере при повышении
MemoryError
. Исправление от Пабло Галиндоgh-101037: Исправлена потенциальная проблема неполного распределения памяти для экземпляров подклассов
int
с нулевым значением.gh-100762: Запишите глубину блока (виртуального) исключения в oparg
YIELD_VALUE
. Используйте это, чтобы избежать дорогостоящегоthrow()
при закрытии генераторов (и корутинов), которые могут быть закрыты тривиально.gh-100982: Добавляет новую инструкцию
COMPARE_AND_BRANCH
. Это немного эффективнее при выполнении сравнения, за которым сразу следует ветвление, и восстанавливает замысел PEP 659 о том, что специализации локальны для одной инструкции.gh-100942: Исправлена ошибка в property.getter/setter/deleter, возникавшая, когда подкласс свойства переопределял метод
__new__
для возврата экземпляра, не являющегося свойством.gh-100923: Удалите запись в кэше
mask
для инструкцииCOMPARE_OP
и вставьте маску в oparg.gh-100892: Исправление гонки при итерации по состояниям потоков в очистке
threading.local
. Исправление Кумара Адитьи.gh-91351: Исправление ситуации, когда реентерабельный импорт мог повредить код обнаружения тупиковых ситуаций при импорте и привести к поднятию
KeyError
изimportlib/_bootstrap
. Помимо простых случаев, это также может происходить, когда сборка мусора приводит к выдаче предупреждения - как это происходит при сборе открытого сокета или файла)gh-100726: Оптимизируйте построение объекта
range
для целых чисел среднего размера.gh-100712: Добавлена возможность собирать cpython с отключенной специализацией, установив
ENABLE_SPECIALIZATION=False
вopcode
, а затемmake regen-all
.bpo-32780: В строки формата PEP3118, получаемые из объектов
ctypes.Structure
, теперь вставляются межполевые прокладки, отражающие их истинное представление в памяти.
Библиотека¶
gh-101541: [Enum] - исправить создание псевдо-флага
gh-101570: Обновление колеса pip в комплекте с ensurepip (pip 23.0)
gh-101323: Исправлена ошибка, из-за которой zlib._ZlibDecompressor не выбрасывал ошибки, если они возникали при распаковке.
gh-101317: Добавьте параметр ssl_shutdown_timeout для
asyncio.StreamWriter.start_tls()
.gh-101326: Исправление регрессии при передаче
None
в качестве второго или третьего аргумента вFutureIter.throw
.gh-92123: Адаптация модуля расширения
_elementtree
к многофазному init (PEP 489). Патчи от Эрленда Э. Аасланда.gh-100795: Избежать потенциального неожиданного вызова
freeaddrinfo
(double free) вsocket
, когда реализация libcgetaddrinfo()
оставляет мусор в выходном указателе при возврате ошибки. Автор оригинального патча - Сергей Г. Брестер.gh-101143: Удалите неиспользуемые ссылки на
TimerHandle
вasyncio.base_events.BaseEventLoop._add_callback
.gh-101144: Сделайте так, чтобы
zipfile.Path.open()
иzipfile.Path.read_text()
также принималиencoding
в качестве позиционного аргумента. Такое поведение было в Python 3.9 и более ранних версиях. В версии 3.10 появилась регрессия, когда добавлениеencoding
в качестве позиционного аргумента приводило к появлениюTypeError
.gh-94518: Переименованы связанные с группами переменные модуля
_posixsubprocess
, чтобы подчеркнуть, что дополнительное групповое сродство добавляется к форку, а не заменяет унаследованное. Исправление Олега Иарыгина.gh-101015: Закрепите
typing.get_type_hints()
на'*tuple[...]'
и*tuple[...]
. Он не должен опускать частьUnpack
.gh-101000: Добавьте
os.path.splitroot()
, которая разбивает путь на кортеж из трех элементов(drive, root, tail)
. Эта новая функция используетсяpathlib
для повышения производительности построения путей на треть.gh-100573: Исправлена ошибка Windows
asyncio
с именованными трубами, когда клиент, выполняющийos.stat()
на трубе, вызывал ошибку на сервере, которая не позволяла обслуживать последующие запросы.gh-39615:
warnings.warn()
теперь имеет возможность пропускать кадры стека на основе префикса имени файла кода, а не только числовогоstacklevel
с помощью нового аргументаskip_file_prefixes
в ключевом слове.gh-100750: передать кодировку kwarg подпроцессу в платформе
gh-100160: Выдавать предупреждение об устаревании в
asyncio.DefaultEventLoopPolicy.get_event_loop()
, если нет текущего набора циклов событий, и он решает создать его.gh-96290: Исправлена обработка частичных и недействительных UNC-дисков в
ntpath.splitdrive()
и вntpath.normpath()
на не-Windows системах. Такие пути, как „\server“ и „\“, теперь рассматриваютсяsplitdrive()
как содержащие только диск и, следовательно, не изменяютсяnormpath()
на системах, отличных от Windows. Поведениеnormpath()
на Windows-системах не затрагивается, так как используются собственные API ОС. Исправление сделано Эриком Суном при участии Барни Гейла.gh-99952: Исправление проблемы недосчета ссылок в
ctypes.Structure
с результатамиfrom_param()
, превышающими указатель C.gh-67790: Добавьте поддержку форматирования в стиле float для экземпляров
fractions.Fraction
.gh-99266: Сохраняйте более подробные сообщения об ошибках в
ctypes
.gh-86682: Убедитесь, что создаваемые во время выполнения коллекции имеют правильное имя модуля, используя недавно добавленный (внутренний)
sys._getframemodulename()
.gh-88597:
uuid
теперь имеет интерфейс командной строки. Попробуйтеpython -m uuid -h
.gh-60580: Определение
ctypes.wintypes.BYTE
изменено сc_byte
наc_ubyte
, чтобы соответствовать Windows SDK. Патч от Анатолия Техтоника и Олега Иарыгина.gh-94518:
_posixsubprocess
теперь инициализирует все переменные UID и GID, используя зарезервированное значение-1
вместо отдельного флага. Исправление Олега Иарыгина.bpo-38941: Модуль
xml.etree.ElementTree
теперь выдаетDeprecationWarning
при проверке истинностного значенияxml.etree.ElementTree.Element
. Раньше реализация на Python выдавалаFutureWarning
, а реализация на C - ничего.bpo-40077: Преобразование типов
elementtree
в типы кучи. Исправление Эрленда Э. Аасланда.bpo-29847: Исправлена ошибка, при которой
pathlib.Path
принимал и игнорировал аргументы ключевых слов. Исправление предоставлено Юрием Карабасом.gh-77772:
ctypes.CDLL
,ctypes.OleDLL
,ctypes.WinDLL
иctypes.PyDLL
теперь принимают path-like objects в качестве аргументаname
. Заплатка от Роберта Хоэльцля.
Документация¶
gh-88324: Переформулируйте
subprocess
, чтобы подчеркнуть поведение по умолчанию аргументов stdin, stdout и stderr. Убрать неточное утверждение о наследовании дескрипторов дочерних файлов.
Тесты¶
gh-101334:
test_tarfile
был обновлен для прохождения при выполнении в качестве высокого UID.
Построить¶
gh-101282: Обновите конфигурацию BOLT, чтобы не использовать устаревшее использование
--split functions
. Исправление от Donghee Na.gh-101522: Позволяет переопределять версии и пути к зависимостям Windows с помощью свойств MSBuild.
gh-77532: Незначительные исправления, позволяющие строить с
PlatformToolset=ClangCL
под Windows.gh-101152: В соответствии с PEP 699, поле
ma_version_tag
вPyDictObject
является устаревшим для модулей расширения. Обращение к этому полю будет генерировать предупреждение компилятора во время компиляции. Это поле будет удалено в Python 3.14.gh-100340: Разрешает -Wno-int-конверсию для wasm-sdk 17 и выше, что позволяет собирать сборки WASI один раз против последнего sdk.
gh-101060: Условно добавьте
-fno-reorder-blocks-and-partition
в configure. Эффективно исправляет--enable-bolt
при использовании Clang, так как это, похоже, флаг только для GCC.gh-98705:
__bool__
определен в системных заголовочных файлах AIX, что нарушает сборку в AIX, поэтому отмените его определение.gh-98636: Исправлена регрессия в обнаружении библиотеки
gdbm_compat
для сборки модуля_gdbm
.gh-96305:
_aix_support
теперь использует простой код для получения данных о платформе, а не несуществующий теперь_bootsubprocess
во время загрузки.
Windows¶
gh-101543: Убедитесь, что путь установки в реестре используется только в том случае, если стандартная библиотека не была расположена каким-либо другим способом.
gh-101467: Программа запуска
py.exe
теперь корректно фильтрует, когда установлена только одна среда выполнения. Он также корректно обрабатывает префиксные совпадения тегов, так что-3.1
не совпадает с3.11
, но все равно будет совпадать с3.1-32
.gh-99834: Обновление поставляемой копии Tcl/Tk до версии 8.6.13.0
gh-101135: Восстановление возможности запуска старых 32-битных версий из пусковой установки
py.exe
, когда доступны 32-битная и 64-битная установки одной и той же версии.gh-82052: Исправлена проблема, при которой запись более 32 К Юникода на экран консоли за один раз могла привести к появлению mojibake.
gh-100320: Обеспечивает использование ключа реестра
PythonPath
из установки при запуске из другой копии Python, которая полагается на существующую установку для предоставления копии своих модулей и стандартной библиотеки.gh-100247: Восстанавливает поддержку
py.exe
для пусковой установки, находящей команды shebang в своем конфигурационном файле с использованием полного имени команды.
Python 3.12.0 alpha 4¶
Дата выхода: 2023-01-10
Ядро и встроенные модули¶
gh-100776: Исправьте вводящее в заблуждение значение по умолчанию в
input()
в__text_signature__
.gh-99005: Удалите
UNARY_POSITIVE
,ASYNC_GEN_WRAP
иLIST_TO_TUPLE
, заменив их интринсиками.gh-99005: Добавьте новую инструкцию
CALL_INTRINSIC_1
. УдалитеIMPORT_STAR
,PRINT_EXPR
иSTOPITERATION_ERROR
, заменив их инструкциейCALL_INTRINSIC_1
.gh-100288: Удалите специализированную инструкцию LOAD_ATTR_METHOD_WITH_DICT. Статистика показывает, что она не является полезной.
gh-100720: Добавлена функция
_PyFrame_NumSlotsForCodeObject
, которая возвращает количество слотов, необходимых в кадре для данного объекта кода.gh-100719: Удалено поле co_nplaincellvars из объекта кода, так как оно является избыточным.
gh-100637: Исправьте вычисление
int.__sizeof__()
, чтобы оно включало 1-элементный массивob_digit
для0
иFalse
.gh-100649: Обновление поля native_thread_id в PyThreadState после форка.
gh-100126: Исправление проблемы, при которой «неполные» кадры могли быть кратковременно видны коду на языке C во время разрушения других кадров, что могло привести к повреждению или жесткому аварийному завершению интерпретатора при выполнении финализаторов.
gh-87447: Исправление
SyntaxError
при проверке перепривязки понимания с именами, которые на самом деле не переопределены.Теперь переназначение
b
в[(b := 1) for a, b.prop in some_iter]
разрешено. Переназначениеa
по-прежнему запрещено в соответствии с PEP 572.gh-100268: Добавьте
int.is_integer()
, чтобы улучшить совместимость типов уток междуint
иfloat
.gh-100425: Повышение точности
sum()
с помощью компенсированного суммирования.gh-100374: Исправление неправильного результата и задержки в
socket.getfqdn()
. Исправление от Доминика Сокулара.gh-100357: Преобразовать
vars
,dir
,next
,getattr
иiter
в аргумент клиника.gh-100117: Улучшает вывод
codeobject.co_lines()
, выдавая только одну запись для каждого диапазона строк.gh-90043: Обработка NaN при специализации
COMPARE_OP
для значенийfloat
.gh-100222: Переопределите типовое определение
_Py_CODEUNIT
как объединение, чтобы описать его расположение для компилятора C, избегая каламбура типов и улучшая ясность.gh-99955: Внутренние функции компилятора (в compile.c) теперь последовательно возвращают -1 при ошибке и 0 при успехе.
gh-100188: Инструкции
BINARY_SUBSCR_LIST_INT
иBINARY_SUBSCR_TUPLE_INT
больше не используются для отрицательных целых чисел, поскольку эти инструкции всегда промахиваются при встрече с отрицательными целыми числами.gh-99110: Инициализируйте frame->previous в файле frameobject.c, чтобы исправить ошибку сегментации при обращении к кадрам, созданным
PyFrame_New()
.gh-94155: Улучшен алгоритм хэширования для объектов кода, что позволило уменьшить некоторые коллизии хэшей.
gh-99540:
None
теперь хэшируется до постоянного значения. Это не является изменением требований.gh-100143: При сборке с флагом
--enable-pystats
сбор статистики по умолчанию отключен. Чтобы включить его при раннем запуске, передайте флаг-Xpystats
. Статы теперь всегда сбрасываются, даже если они выключены.gh-100146: Усовершенствуйте опкод
BUILD_LIST
, чтобы он работал аналогично опкодуBUILD_TUPLE
, похищая ссылки из стека, а не используя многократные операции со стеком для установки элементов списка. Подробности реализации - в новом частном API_PyList_FromArraySteal()
.gh-100110: Специализируйте
FOR_ITER
для кортежей.gh-100050: Исправление существующих ошибок, возникающих при поиске несовпадающих скобок в токенизаторе. Исправление от Пабло Галиндо
gh-92216: Улучшение работы
hasattr()
для объектов типа с отсутствующим атрибутом.gh-99554: Более эффективная упаковка отладочных таблиц местоположения во время компиляции байткода.
gh-98522: Добавляет внутренний номер версии к объектам кода, чтобы обеспечить лучшую версионность внутренних функций и пониманий, а значит, и лучшую специализацию этих функций. Это изменение незаметно для расширений как Python, так и C.
gh-94603: Улучшение производительности
list.pop
для небольших списков.gh-89051: Добавить
ssl.OP_LEGACY_SERVER_CONNECT
bpo-32782: Массивы
ctypes
длины 0 теперь сообщают правильный размер элементов при построении из них массиваmemoryview
, а не всегда выдают значение 0.
Библиотека¶
gh-100833: Ускорьте
math.fsum()
, удалив защитные квалификаторыvolatile
.gh-100805: Измените реализацию
random.choice()
, чтобы она снова работала с массивами NumPy.gh-100813: Добавить константу
socket.IP_PKTINFO
.gh-100792: Сделайте
email.message.Message.__contains__()
в два раза быстрее.gh-91851: Микрооптимизации для
fractions.Fraction.__round__()
,fractions.Fraction.__ceil__()
иfractions.Fraction.__floor__()
.gh-90104: Избегайте ошибки RecursionError на
repr
, если определение поля класса данных имеет циклическую ссылку.gh-100689: Исправление сбоя в
pyexpat
путем статического выделения капсулыPyExpat_CAPI
.gh-100740: Исправление
unittest.mock.Mock
, не соблюдающего спецификацию для имен атрибутов с префиксомassert
.gh-91219: Измените
SimpleHTTPRequestHandler
для поддержки подклассификации, чтобы обеспечить другой набор имен индексных файлов вместо использования параметров__init__
.gh-100690:
Mock
небезопасные объекты теперь будут вызывать ошибкуAttributeError
при обращении к атрибуту, совпадающему с именем утверждения, но без префиксаassert_
, например, при обращении кcalled_once
вместоassert_called_once
. Это дополнение к тому, что уже происходит при обращении к атрибутам с префиксамиassert
,assret
,asert
,aseert
иassrt
.gh-89727: Упростите и оптимизируйте
os.walk()
, используя проверкиisinstance()
для проверки вершины стека.gh-100485: Добавьте math.sumprod() для вычисления суммы произведений.
gh-86508: Исправьте
asyncio.open_connection()
, чтобы пропустить привязку к локальным адресам разных семейств. Исправление Кумара Адитьи.gh-97930:
importlib.resources.files
теперь принимает модуль в качестве якоря вместо того, чтобы принимать только пакеты. Если передан модуль, то ресурсы разрешаются рядом с этим модулем (в том же пакете или в корне пакета). Параметр был переименован изpackage
вanchor
с сохранением совместимости для тех, кто передает по ключевому слову. Кроме того, новый параметрanchor
теперь необязателен и по умолчанию будет соответствовать модулю вызывающей стороны.gh-100585: Исправлена ошибка, при которой importlib.resources.as_file оставлял открытыми указатели на файлы
gh-100562: Повышение производительности
pathlib.Path.absolute()
почти в 2 раза. Это достигается за счет снижения производительностиpathlib.Path.cwd()
, который, как правило, реже используется в пользовательском коде.gh-100519: Небольшое упрощение
http.cookiejar.eff_request_host()
, улучшающее читабельность и лучше соответствующее формулировке RFC.gh-100287: Исправьте взаимодействие
unittest.mock.seal()
сunittest.mock.AsyncMock
.gh-100488: Добавьте
Fraction.is_integer()
, чтобы проверить, является лиfractions.Fraction
целым числом. Это улучшает совместимость утиных типов сfloat
иint
.gh-100474:
http.server
теперь проверяет, является ли индексная страница обычным файлом, прежде чем попытаться ее обслужить. Это позволяет избежать проблем с каталогами с именемindex.html
.gh-100363: Ускорьте
asyncio.get_running_loop()
, удалив лишние проверкиgetpid
. Исправление Кумара Адитьи.gh-78878: Исправление сбоя при создании экземпляра
_ctypes.CField
.gh-100348: Исправьте цикл ref в
asyncio._SelectorSocketTransport
, удалив_read_ready_cb
вclose
.gh-100344: Обеспечьте реализацию
asyncio.current_task()
на языке C для ускорения в 4-6 раз.gh-100272: Исправьте JSON-сериализацию OrderedDict. Теперь она сохраняет порядок ключей.
gh-83076: Инстанцирование
Mock()
иAsyncMock()
теперь происходит в 3,8 раза быстрее.gh-100234: Установите значение по умолчанию 1,0 для параметра
lambd
в random.expovariate().gh-100228: При вызове
os.fork()
илиos.forkpty()
из многопоточных процессов может возникнуть ошибкаDeprecationWarning
. Форкинг из потоков небезопасен и может привести к тупикам, сбоям и другим проблемам. Отсутствие предупреждения не означает, что вызов форка был действительно безопасным, так как Python может не знать обо всех потоках.gh-100039: Улучшение подписей для перечислений и флагов.
gh-100133: Исправление регрессии в
asyncio
, когда подпроцесс иногда терял данные, полученные из трубы.bpo-44592: Исправлена непоследовательная обработка чувствительности к регистру аргумента extrasaction в
csv.DictWriter
.gh-100098: Исправьте приведение подклассов
tuple
кtuple
при использовании их в качестве значений перечисления.gh-85432: Переименуйте параметр fmt чистой реализации
datetime.time.strftime()
на format. Переименуйте параметр t изdatetime.datetime.fromtimestamp()
в timestamp. Эти изменения означают, что имена параметров в чистой реализации на Python теперь совпадают с именами параметров в реализации на C. Исправление Алекса Уэйгуда.gh-98778: Обновление
HTTPError
для правильной инициализации, даже еслиfp
- этоNone
. Исправление от Donghee Na.gh-99925: Унифицируйте сообщения об ошибках при сериализации JSON между
json.dumps(float('nan'), allow_nan=False)
иjson.dumps(float('nan'), allow_nan=False, indent=<SOMETHING>)
. Теперь оба сообщения включают представление значения, которое не удалось сериализовать.gh-89727: Исправление проблемы с
os.walk()
, когдаRecursionError
возникал в глубоких структурах каталогов, путем корректировки реализацииos.walk()
, чтобы она была итеративной, а не рекурсивной.gh-94943: Добавьте Поддержка классов данных к
Enum
__repr__()
. При наследовании отdataclass
отображайте только имена полей в секции значений членаrepr()
, а не имя класса класса данных.gh-83035: Исправьте
inspect.getsource()
обработку вызовов декораторов с вложенными круглыми скобками.gh-99576: Исправьте метод
.save()
дляLWPCookieJar
иMozillaCookieJar
: сохраненный файл не усекался при повторном сохранении.gh-94912: Добавьте декоратор
inspect.markcoroutinefunction()
, который вручную помечает функцию как coroutine для пользыiscoroutinefunction()
.gh-99509: Добавьте поддержку PEP 585 для
multiprocessing.queues.Queue
.gh-99482: Удалите код частичной совместимости
Jython
из нескольких модулей stdlib.gh-99433: Исправьте ошибку
doctest
наtypes.MethodWrapperType
в модулях.gh-85267: Несколько улучшений в работе
inspect.signature()
с__text_signature
. - Исправлен случай, когдаinspect.signature()
отбрасывал параметры - Исправлен случай, когдаinspect.signature()
поднималtokenize.TokenError
. - Позволяетinspect.signature()
понимать значения по умолчанию, включающие двоичные операции над константами -inspect.signature()
документирован как вызывающий толькоTypeError
илиValueError
, но иногда вызывалRuntimeError
. Теперь в этих случаях вызываетсяValueError
. - Удален путь к мертвому кодуgh-91166:
asyncio
оптимизировано, чтобы избежать чрезмерного копирования при записи в сокет, и используйтеsendmsg()
, если платформа его поддерживает. Исправление Кумара Адитьи.gh-98030: Добавьте недостающие параметры TCP-сокета из Linux:
TCP_MD5SIG
,TCP_THIN_LINEAR_TIMEOUTS
,TCP_THIN_DUPACK
,TCP_REPAIR
,TCP_REPAIR_QUEUE
,TCP_QUEUE_SEQ
,TCP_REPAIR_OPTIONS
,TCP_TIMESTAMP
,TCP_CC_INFO
,TCP_SAVE_SYN
,TCP_SAVED_SYN
,TCP_REPAIR_WINDOW
,TCP_FASTOPEN_CONNECT
,TCP_ULP
,TCP_MD5SIG_EXT
,TCP_FASTOPEN_KEY
,TCP_FASTOPEN_NO_COOKIE
,TCP_ZEROCOPY_RECEIVE
,TCP_INQ
,TCP_TX_DELAY
.gh-88500: Уменьшено использование памяти
urllib.parse.unquote()
иurllib.parse.unquote_to_bytes()
при больших значениях.gh-96127:
inspect.signature
поднималTypeError
при вызове с mock-объектами. Теперь он корректно возвращает(*args, **kwargs)
в качестве выведенной сигнатуры.gh-95882: Исправлена регрессия 3.11 в
asynccontextmanager()
, из-за которой распространялись исключения с неправильной трассировкой, и исправлена регрессия 3.11 вcontextmanager()
, из-за которой распространялись исключения с неправильной трассировкой дляStopIteration
.gh-78707: Откажитесь от передачи более одного позиционного аргумента в
pathlib.PurePath.relative_to()
иis_relative_to()
.gh-92122: Исправление синтаксических ошибок reStructuredText в документах в модуле
enum
.gh-91851: Оптимизируйте арифметику
Fraction
для маленьких компонентов.bpo-24132: Сделайте
pathlib.PurePath
иPath
подклассами (для начала частными). Ранее попытка инстанцировать подкласс приводила к возникновениюAttributeError
. Исправление Барни Гейла.bpo-40447: Принимайте
os.PathLike
(например,pathlib.Path
) в аргументахstripdir
вcompileall.compile_file()
иcompileall.compile_dir()
.bpo-36880: Исправление проблемы подсчета ссылок, когда обратный вызов
ctypes
с типом возвратаpy_object
возвращалNone
, что могло привести к сбоям.
Документация¶
gh-100616: Документируйте существующий параметр
attr
для функцииcurses.window.vline()
вcurses
.gh-100472: Убрать утверждение в документации, что параметры
stripdir
,prependdir
иlimit_sl_dest
дляcompileall.compile_dir()
иcompileall.compile_file()
могут бытьbytes
.bpo-25377: Уточните использование восьмеричного формата аргумента mode в help(os.chmod), а также help(os.fchmod)
Тесты¶
gh-100454: Начните выполнять SSL-тесты с OpenSSL 3.1.0-beta1.
gh-100086: Бегунок для тестирования Python (libregrtest) теперь регистрирует информацию о сборке Python, такую как «debug» vs «release» сборка, или оптимизация LTO и PGO. Исправление Виктора Стиннера.
gh-93018: Сделайте два теста щадящими по отношению к хост-системе libexpat с примененными исправлениями безопасности.
Построить¶
gh-100540: Удалена опция
--with-system-ffi
configure
; теперьlibffi
должна всегда предоставляться системой на всех платформах, отличных от Windows. Эта опция не имела никакого эффекта на платформах, отличных от Darwin, в течение нескольких выпусков, а в 3.11 имела лишь неочевидный эффект вызоваpkg-config
для поискаlibffi
и никогда не устанавливала-DUSING_APPLE_OS_LIBFFI
. Теперь на платформах Darwinconfigure
будет сначала проверять наличие ОСlibffi
, а затем возвращаться к той же обработке, что и на других платформах, если она не будет найдена.gh-88267: Избегайте экспорта символов Python в связанных приложениях Windows, если ядро собрано как статическое.
bpo-41916: Разрешить переопределение ac_cv_cxx_thread, чтобы кросс-компилируемый python мог установить -pthread для CXX.
Windows¶
gh-100180: Обновление программы установки Windows до OpenSSL 1.1.1s
gh-99191: Используйте
_MSVC_LANG >= 202002L
вместо менее точного_MSC_VER >=1929
для более точной проверки поддержки C++20 вPC/_wmimodule.cpp
.gh-79218: Определите
MS_WIN64
для Mingw-w64 64bit, исправьте ошибку компиляции cython.gh-99941: Убедитесь, что
asyncio.Protocol.data_received()
получает неизменяемый объектbytes
(как указано в документации), а неbytearray
.bpo-43984:
winreg.SetValueEx()
теперь оставляет целевое значение нетронутым в случае ошибок преобразования. Ранее в случае таких ошибок записывалось-1
.bpo-34816:
hasattr(ctypes.windll, 'nonexistant')
теперь возвращаетFalse
, а не поднимаетOSError
.
macOS¶
Инструменты/демоверсии¶
bpo-45256: Исправлена ошибка, из-за которой в
python-gdb.py
возникала ошибкаAttributeError
, когдаpy-locals
использовался без фрейма.gh-100342: Добавьте недостающую проверку
NULL
на возможный сбой выделения при разборе*args
в Argument Clinic.
C API¶
gh-99947: Возбуждение SystemError при импорте теперь будет иметь причиной исходное неожиданное исключение.
gh-99240: При разборе аргумента, после деаллокации вновь выделенной памяти, сбрасывайте ее указатель на NULL.
gh-98724: Макросы
Py_CLEAR
,Py_SETREF
иPy_XSETREF
теперь оценивают свои аргументы только один раз. Если аргумент имеет побочные эффекты, то эти побочные эффекты больше не дублируются. Исправление Виктора Стиннера.
Python 3.12.0 alpha 3¶
Дата выхода: 2022-12-06
Безопасность¶
gh-100001:
python -m http.server
больше не позволяет выводить в журнал сервера stderr символы управления терминалом, отправленные в мусорном запросе.Это делается путем изменения
http.server
BaseHTTPRequestHandler
.log_message
, чтобы заменить управляющие символы на шестнадцатеричный символ\xHH
перед печатью.gh-87604: Избегайте публикации списка активных хуков аудита для каждого интерпретатора через модуль
gc
.
Ядро и встроенные модули¶
gh-99891: Исправление ошибки в токенизаторе, которая могла привести к бесконечной рекурсии при отображении синтаксических предупреждений, возникающих в первой строке исходного текста. Исправление от Пабло Галиндо
gh-91054: Добавьте
PyCode_AddWatcher()
иPyCode_ClearWatcher()
API для регистрации обратных вызовов для получения уведомлений о создании и уничтожении объектов кода.gh-99729: Исправление проблемы, из-за которой фреймы могли быть видны коду Python во время их разрушения, что могло привести к повреждению памяти или жестким сбоям в интерпретаторе.
gh-99708: Исправлена ошибка, при которой компилятор терпел крах при выполнении выражения if с пустым блоком тела.
gh-99578: Исправление ошибки ссылки в
_imp.create_builtin()
после создания первого подинтерпретатора для модулейbuiltins
иsys
. Исправление Виктора Стиннера.gh-99581: Исправлена ошибка, приводившая к переполнению буфера, если токенизатор копировал строку, в которой отсутствует символ новой строки, из файла, длина которого превышает доступный буфер токенизатора. Исправление от Pablo galindo
gh-99553: Исправлена ошибка, из-за которой подкласс
ExceptionGroup
мог обернутьBaseException
.gh-99547: Добавьте в os.path функцию для проверки того, является ли путь перекрестком: isjunction. Добавьте аналогичную функцию в pathlib.Path, как is_junction.
gh-99370: Исправьте путь к zip для venv, созданного из неустановленного python на POSIX-платформах.
gh-99377: Добавьте события аудита для операций создания и очистки потоков.
gh-98686: Удалите
BINARY_OP_GENERIC
иCOMPARE_OP_GENERIC
«специализации».gh-99298: Удалите оставшиеся пути ошибок для специализаций атрибутов и откажитесь специализировать доступ к атрибутам для типов, для которых еще не было вызвано
PyType_Ready()
.gh-99127: Разрешить некоторые возможности
syslog
только основному интерпретатору. Исправление от Donghee Na.gh-91053: Оптимизирующим интерпретаторам и JIT-компиляторам может потребоваться аннулировать внутренние метаданные при изменении функций. Это изменение добавляет возможность указать обратный вызов, который будет вызываться каждый раз, когда функция создается, изменяется или уничтожается.
gh-90994: Улучшение сообщений об ошибках при синтаксических ошибках в аргументах вызова. В следующих трех случаях: - Именованному аргументу, например
foo(a=)
, не присваивается значение. - Значение присвоено звездообразному аргументу, напримерfoo(*args=[0])
. - Значение присваивается аргументу с ключевым словом с двойной звездой, напримерfoo(**kwarg={'a': 0})
.bpo-45026: Оптимизирован итератор объектов
range
. Теперь он стал меньше, что ускоряет итерацию диапазонов, содержащих большие числа. Меньше маринованных огурцов, быстрее распаковка.bpo-31718: Поднимать
ValueError
вместоSystemError
при вызове методов неинициализированных объектовio.IncrementalNewlineDecoder
. Исправление от Орена Милмана.bpo-38031: Исправление возможного сбоя утверждения в
io.FileIO
, когда открыватель возвращал недействительный дескриптор файла.
Библиотека¶
gh-100001: Также escape s в http.server BaseHTTPRequestHandler.log_message, чтобы технически можно было разобрать строку и восстановить, какими были исходные данные. Без этого xHH неясно, является ли это шестнадцатеричной заменой, которую мы вставили, или символы r«x» пришли через оригинальную строку запроса.
gh-99957: Добавьте параметр
frozen_default
кtyping.dataclass_transform()
.gh-79033: Исправьте
asyncio.Server.wait_closed()
, чтобы он действительно делал то, что обещает документация - ждал завершения всех существующих соединений после закрытия сервера.gh-51524: Исправлена ошибка при вызове trace.CoverageResults с корректным infile.
gh-99645: Исправлена ошибка в обработке очистки классов в
unittest.TestCase
. ТеперьaddClassCleanup()
использует отдельные списки для разных подклассовTestCase
, аdoClassCleanups()
очищает только конкретный класс.gh-99508: Исправьте
TypeError
вLib/importlib/_bootstrap_external.py
, вызывая_imp.source_hash()
.gh-66285: Исправьте
asyncio
, чтобы не разделять цикл событий и сигнал wakeupfd в вилочных процессах. Исправление Кумара Адитьи.gh-97001: Освобождение GIL при вызове API termios, чтобы избежать блокировки потоков.
gh-92647: Используйте конечный статус перечисления для определения ветви поиска или создания функционального API.
gh-99388: Добавьте параметр loop_factory в
asyncio.run()
, чтобы можно было указать фабрику циклов событий. Исправление Кумара Адитьи.gh-99341: Исправьте
ast.increment_lineno()
, чтобы он также охватывалast.TypeIgnore
при изменении номеров строк.gh-99382: Проверка количества аргументов в подстановке в пользовательских дженериках, содержащих
TypeVarTuple
и один или несколькоTypeVar
.gh-99379: Исправьте замену
ParamSpec
наTypeVarTuple
в общих псевдонимах.gh-99344: Исправьте подстановку
TypeVarTuple
иParamSpec
вместе в пользовательских дженериках.gh-99284: Удалите из
_use_broken_old_ctypes_structure_semantics_
старый непроверенный и недокументированный хак изctypes
.gh-99201: Исправьте
IndexError
при инициализации переменных конфигурации на Windows, еслиHAVE_DYNAMIC_LOADING
не установлен.gh-99240: Исправлена ошибка double-free в клинике аргументов
str_converter
путем извлечения очистки памяти в новую секциюpost_parsing
.gh-64490: Исправление ошибки refcount, когда аргументы упаковываются в кортеж в Argument Clinic.
gh-99029:
pathlib.PurePath.relative_to()
теперь рассматривает пути к дискам Windows как относительные. Это приводит его поведение в соответствие с другими частями pathlib.gh-98253: Реализация модуля типизации теперь более устойчива к утечкам ссылок в бинарных модулях расширения.
Ранее утечка ссылок в типизированном модуле расширения на базе API C могла привести к утечке внутренних данных типизированного модуля, что, в свою очередь, могло привести к утечке данных в практически любом другом пакете с типизированными сигнатурами функций. Хотя пакет типизации не является первоначальным источником проблемы, такие нелокальные зависимости усугубляют отладку крупных проектов, поэтому реализация была изменена, чтобы уменьшить вред за счет лучшей изоляции.
gh-98458: Исправление бесконечного цикла в unittest, когда поднимается цепочечное исключение с самоссылкой
gh-93453:
asyncio.get_event_loop()
и многие другие функцииasyncio
, такие какasyncio.ensure_future()
,asyncio.shield()
илиasyncio.gather()
, а также методget_event_loop()
изasyncio.BaseDefaultEventLoopPolicy
теперь вызывают ошибкуRuntimeError
, если вызываются, когда нет запущенного цикла событий и не установлен текущий цикл событий. Ранее они неявно создавали и устанавливали новый текущий цикл событий.DeprecationWarning
больше не выдается, если нет запущенного цикла событий, но установлен текущий цикл событий.gh-97966: На
uname_result
восстановлено ожидание, что_fields
и_asdict
будут включать все шесть свойств, включаяprocessor
.gh-98248: Выдавать информативные сообщения об ошибках в
struct.pack()
, когда его интегральные аргументы не находятся в диапазоне.gh-98108:
zipfile.Path
теперь pickleable, если его параметры инициализации были pickleable (например, для путей к файловой системе).gh-98098: Созданы пакеты из модулей zipfile и test_zipfile, разделяющие функциональность
zipfile.Path
.gh-82836: Исправьте свойства
is_private
в модулеipaddress
. Ранее нечастные сети (0.0.0.0/0) возвращалиTrue
из этого метода; теперь они корректно возвращаютFalse
.gh-96828: Добавьте опцию
OP_ENABLE_KTLS
для включения использования TLS ядра (kTLS). Исправление Илии Волочии.gh-88863: Чтобы избежать явных утечек памяти при возникновении
asyncio.open_connection()
, прервите циклы ссылок, генерируемые локальными экземплярами исключения и будущего (у которого экземпляр исключения является членом var). Исправление от Dong Uk, Kang.gh-91078:
TarFile.next()
теперь возвращаетNone
при вызове пустого tarfile.bpo-47220: Документируйте необязательный параметр callback в
WeakMethod
. Исправление от Géry Ogam.bpo-44817: Игнорируйте ошибки WinError 53 (ERROR_BAD_NETPATH), 65 (ERROR_NETWORK_ACCESS_DENIED) и 161 (ERROR_BAD_PATHNAME) при использовании ntpath.realpath().
bpo-41260: Переименуйте параметр fmt чисто питоновской реализации
datetime.date.strftime()
в format.bpo-15999: Все встроенные функции теперь принимают аргументы любого типа, а не только
bool
иint
для булевых параметров.
Документация¶
gh-99931: Используйте sphinxext-opengraph для генерации OpenGraph metadata.
gh-89682: Пересмотрена docstring стандартного
__contains__
, чтобы уточнить, что она возвращаетbool
.gh-88330: Улучшено описание того, что такое ресурс, в документации importlib.resources.
gh-92892: Документируйте, что вызов переменных функций с помощью ctypes требует особой осторожности на macOS/arm64 (и, возможно, на других платформах).
bpo-41825: Реорганизована документация по семейству функций
os.wait*
и улучшена документация поos.waitid()
с более подробным объяснением возможных констант аргументов.
Тесты¶
gh-99892: Пропускайте test_normalization() из test_unicodedata, если не удается загрузить файл NormalizationTest.txt с pythontest.net. Исправление Виктора Стиннера.
gh-99934: Исправление test_marsh на (32 бит) x86: test_deterministic sets давал сбой.
gh-99741: Мы реализовали многофазную инициацию (PEP 489/630/687) для внутреннего (для тестирования) модуля _xxsubinterpreters.
gh-99659: Необязательные тесты на большой объем памяти в
test_sqlite3
теперь отлавливают правильный тип исключенияsqlite.DataError
в случае передачи слишком больших строк и/или блобов.gh-99593: Охватите тестами Unicode C API.
gh-96002: Добавьте функциональный тест для Argument Clinic.
Построить¶
gh-99086: Исправьте предупреждения компилятора
-Wimplicit-int
,-Wstrict-prototypes
и-Wimplicit-function-declaration
в проверках configure.gh-99337: Исправление проблемы компиляции с GCC 12 на macOS.
gh-99289: Добавьте переменную
COMPILEALL_OPTS
в Makefile, чтобы переопределить опцииcompileall
(по умолчанию:-j0
) вmake install
. Также объединены командыcompileall
в одну команду, создающую .pyc-файлы для всех уровней оптимизации (0, 1, 2) сразу. Исправление Виктора Стиннера.gh-98872: Исправление возможной утечки fd в
Programs/_freeze_module.c
, появившейся в Python 3.11.gh-88226: Всегда определяйте метки
TARGET_*
вPython/ceval.c
, даже еслиUSE_COMPUTED_GOTOS
отключен. Это позволяет устанавливать точки останова на эти метки в (например)gdb
.
Windows¶
gh-99345: Используйте более быстрые функции инициализации для определения места установки пакета Windows Store
gh-98629: Исправьте инициализацию
sys.version
иsys._git
в Windowsgh-99442: Исправление обработки в Python Launcher для Windows, когда
argv[0]
не содержит расширения файла.bpo-40882: Устранение утечки памяти в
multiprocessing.shared_memory.SharedMemory
на Windows.
macOS¶
Инструменты/демоверсии¶
gh-64490: Исправления в клинике аргументов varargs
Исправьте ошибку выхода за пределы границ в
_PyArg_UnpackKeywordsWithVararg()
.Исправление некорректной проверки, которая позволяла использовать более одного varargs в clinic.py.
Исправьте ошибку в вычислении
noptargs
в сгенерированном коде.Не генерируйте
noptargs
, если есть аргумент vararg и нет необязательного аргумента.
C API¶
gh-98680: Константы
PyBUF_*
были отмечены как часть Limited API Python 3.11+. Они были доступны в 3.11.0 сPy_LIMITED_API
, определенными для 3.11, и необходимы для использования API буфера.gh-99612: Исправьте
PyUnicode_DecodeUTF8Stateful()
для данных только в формате ASCII:*consumed
не был установлен.gh-47146: Заголовок
structmember.h
является устаревшим. Его не устаревшее содержимое теперь доступно только при включенииPython.h
, с добавлением префиксаPy_
, если он отсутствовал. (Утратившим актуальность содержимым являютсяT_OBJECT
,T_NONE
и флаги no-op.) Исправление Петра Викторина, основанное на более ранней работе Александра Белопольского и Маттиаса Брауна.
Python 3.12.0 alpha 2¶
Дата выхода: 2022-11-14
Безопасность¶
gh-98433: Декодер кодека IDNA, используемый для имен хостов DNS функциями разрешения имен, связанными с
socket
илиasyncio
, больше не использует квадратичный алгоритм. Это предотвращает потенциальный отказ в обслуживании процессора в случае декодирования имени хоста чрезмерной длины, содержащего двунаправленные символы. Некоторые протоколы, такие какurllib
http3xx
редиректы, потенциально позволяют злоумышленнику предоставить такое имя.Отдельные метки в DNS-имени, закодированном в IDNA, теперь будут вызывать ошибку на ранней стадии декодирования IDNA, если их длина превышает 1024 символа юникода, учитывая, что каждая декодированная DNS-метка должна состоять из 63 или менее символов, а все декодированное DNS-имя ограничено 255. С этим новым ограничением столкнется только приложение, представляющее имя хоста или метку, состоящую в основном из RFC 3454 раздела 3.1 «Ничего» символов, которые необходимо удалить. См. также RFC 5894 раздел 6 и RFC 3491.
gh-98739: Обновление libexpat до версии 2.5.0
Ядро и встроенные модули¶
gh-81057: В документации четко сказано, что
PyImport_Inittab
,PyImport_AppendInittab()
иPyImport_ExtendInittab()
не должны использоваться после вызоваPy_Initialize()
. Теперь мы обеспечиваем это для этих двух функций. Кроме того, время выполнения теперь использует внутреннюю копиюPyImport_Inittab
, чтобы защитить ее от модификации.gh-99298: Исправление проблемы, которая потенциально могла привести к некорректной обработке ошибок для некоторых инструкций байткода.
gh-99254: Компилятор теперь удаляет все неиспользуемые константы из объектов кода (кроме первой, которая может быть docstring).
gh-99205: Исправлена проблема, из-за которой память
PyThreadState
иPyInterpreterState
не освобождалась должным образом.gh-81057: 18 глобальных переменных C, хранящих состояние аллокаторов, были перемещены в
_PyRuntimeState
. Это сугубо внутреннее изменение, не меняющее поведение.gh-99181: Исправление сбоя в
except*
с нехешируемыми исключениями.gh-99204: Исправлено вычисление
sys._base_executable
при нахождении в виртуальной среде POSIX, использующей копии двоичного файла python, когда базовая установка не предоставляет имя исполняемого файла, используемого venv. При вычислении будут использоваться альтернативные имена («python<MAJOR>», «python<MAJOR>.<MINOR>»).gh-96055: Обновите
faulthandler
, чтобы выдавалось сообщение об ошибке с правильным номером неожиданного сигнала. Исправление от Donghee Na.gh-99153: Исправьте расположение
SyntaxError
для блокаtry
, имеющего иexcept
, иexcept*
.gh-98686: Объедините логику адаптивного опкода в неускоренный вариант каждой инструкции и объедините логику в
EXTENDED_ARG_QUICK
сEXTENDED_ARG
. Благодаря этим изменениям ускорение, происходящее при создании объекта кода, теперь отвечает только за инициализацию счетчиков разминки и вставку суперинструкций.gh-99103: Исправьте положение сообщений об ошибках специализированных якорей трассировки, когда исходная строка содержит символы Юникода.
gh-99139: Улучшено предложение ошибок для исключений
NameError
для экземпляров. Теперь, если в методе поднимаетсяNameError
, а у экземпляра есть атрибут, точно совпадающий с именем в исключении, предложение будет включатьself.<NAME>
вместо ближайшего совпадения в области видимости метода. Исправление от Pablo Galindogh-98401: Октальные эскейпы со значением больше
0o377
(например,"\477"
), устаревшие в Python 3.11, теперь выдаютSyntaxWarning
, а неDeprecationWarning
. В одной из будущих версий Python они будут выдаватьSyntaxError
. Исправление Виктора Стиннера.gh-98401: Пара обратный слеш-символ, не являющаяся допустимой управляющей последовательностью, теперь генерирует
SyntaxWarning
, а неDeprecationWarning
. Например,re.compile("\d+\.\d+")
теперь выдаетSyntaxWarning
("\d"
- недопустимая управляющая последовательность), используйте необработанные строки для регулярных выражений:re.compile(r"\d+\.\d+")
. В одной из будущих версий Python вместоSyntaxWarning
будет выдаватьсяSyntaxError
. Исправление Виктора Стиннера.gh-96793: Обрабатывать StopIteration и StopAsyncIteration, поднятые в генераторе или корутинах в байткоде, а не в обертке кода C.
gh-98931: Улучшено сообщение об ошибке
SyntaxError
, когда пользователь набираетimport x from y
вместоfrom y import x
. Исправление от Пабло Галиндоgh-98852: Исправьте подписку на псевдонимы типов, содержащие голые общие типы или типы типа
TypeVar
: например,tuple[A, T][int]
иtuple[TypeVar, T][int]
, гдеA
- общий тип, аT
- переменная типа.gh-98925: Снижение глубины рекурсии для marshal на WASI для поддержки (в разработке) wasmtime 2.0.
gh-98783: Исправление многочисленных сбоев в режиме отладки при использовании подклассов
str
вместо самогоstr
.gh-98811: Используйте полное расположение источника, чтобы упростить обнаружение импорта
__future__
, который находится не в начале файла. Также исправлено смещение в исключении, вызванном в одном случае, которое было смещено на единицу и мешало выделению.gh-96793: Добавьте специализацию
FOR_ITER
для генераторов. Это избавляет от нескольких уровней диспетчеризации и проверок, чтобы перейти от инструкцииFOR_ITER
в вызывающей машине кRESUME
в генераторе.gh-98762: Исправьте расположение источников подпаттернов
match
.gh-98586: В Limited API добавлены методы
PyObject_Vectorcall()
иPyObject_VectorcallMethod()
, а также вспомогательная макроконстантаPY_VECTORCALL_ARGUMENTS_OFFSET
.Наличие этих функций позволяет более эффективно вызывать вектор PEP 590 из бинарных модулей расширения, что позволяет избежать накладных расходов на обработку/разборку аргументов.
gh-99257: Исправление проблемы, из-за которой дескрипторы членов (например, для
__slots__
) могли вести себя некорректно или аварийно завершаться вместо того, чтобы вызывать ошибкуTypeError
при обращении к экземпляру недопустимого типа.gh-93143: Вместо изменения
co_code
интерпретатор теперь будет отображатьRuntimeWarning
и присваиватьNone
всем быстрым локалям, оставшимся несвязанными после переходов или операторовdel
, выполненных при трассировке.gh-96421: При вызове кода Python из кода C через функцию
PyEval_EvalFrameEx()
или связанную с ней функцию C-API в стек вызовов вставляется шимфрейм. Это происходит в функции_PyEval_EvalFrameDefault()
. Этот дополнительный фрейм должен быть невидим для всех расширений Python и большинства расширений C, но внепроцессные профилировщики и отладчики должны знать о нем. Эти шимфреймы можно обнаружить, проверивframe->owner == FRAME_OWNED_BY_CSTACK
.Расширения, реализующие собственные интерпретаторы, использующие PEP 523, должны знать об этой рамке shim и изменениях в семантике
RETURN_VALUE
,YIELD_VALUE
иRETURN_GENERATOR
, которые теперь очищают эту рамку.gh-98415: Исправление обнаружения MAC-адресов для
uuid
на некоторых ОС. Исправление от Хаима Сандерсаgh-98686: Ускоряет все объекты кода и более агрессивно специализирует адаптивные инструкции байткода.
gh-92119: Выводить имя класса исключения вместо его строкового представления при обнаружении ошибок от вызовов
ctypes
.gh-91058:
ImportError
, поднятые из неудачногоfrom <module> import <name>
, теперь включают предложения для значения<name>
, основанные на доступных именах в<module>
. Исправление от Pablo Galindogh-96793:
FOR_ITER
теперь оставляет итератор в стеке при завершении цикла. Это сделано для того, чтобы помочь специализировать циклы для генераторов.gh-90716: Добавьте модуль _pylong.py. Он включает в себя асимптотически более быстрые алгоритмы, которые можно использовать для операций над целыми числами с большим количеством цифр. Он используется в longobject.c для ускорения некоторых операций.
gh-95389: Раскройте
ETH_P_ALL
и некоторые из ETHERTYPE_* constants вsocket
. Исправление Ноама Коэна.gh-93696: Разрешите
pdb
находить исходные тексты замороженных модулей в стандартной библиотеке.
Библиотека¶
gh-99418: Исправление ошибки в
urllib.parse.urlparse()
, из-за которой схемы URL, начинающиеся с цифры, знака плюс или знака минус, разбирались некорректно.gh-94597: Утратить
asyncio.AbstractChildWatcher
, чтобы быть удаленным в Python 3.14. Исправление от Kumar Aditya.gh-99305: Улучшить производительность
secrets.token_hex()
.gh-74044: Исправлена ошибка, при которой
inspect.signature()
сообщал неверные аргументы для декорированных методов.gh-99275: Исправьте
SystemError
вctypes
, когда исключение не было установлено во время__initsubclass__
.gh-99277: Удалите старую версию
_SSLProtocolTransport.get_write_buffer_limits
вasyncio.sslproto
.gh-99248: исправление ошибки отрицательных чисел в verify()
gh-99155: Исправьте
statistics.NormalDist
маринад с помощью протоколов0
и1
.gh-93464:
enum.auto()
теперь корректно активируется в сочетании с другими значениями присваивания. Например,ONE = auto(), 'some text'
теперь будет оцениваться как(1, 'some text')
.gh-99134: Обновите поставляемую в комплекте копию pip до версии 22.3.1.
gh-92584: Удалите пакет
distutils
. Он был устаревшим в Python 3.10 благодаря PEP 632 «Deprecate distutils module». Для проектов, которые все еще используютdistutils
и не могут быть обновлены на что-то другое, можно установить проектsetuptools
: он по-прежнему предоставляетdistutils
. Исправление Виктора Стиннера.gh-98999: Теперь
_pyio
согласуется с_io
в повышенииValueError
при выполнении методов над закрытыми буферами.gh-83004: Очистите refleak при неудачной инициализации модуля в
_zoneinfo
gh-83004: Очистка рефлексов при неудачной инициализации модуля в
_pickle
gh-83004: Очистите refleak при неудачной инициализации модуля в
_io
.gh-98897: Исправьте утечку памяти в
math.dist()
, когда обе точки не имеют одинаковой размерности. Исправление Кумара Адитьи.gh-98878: Используйте встроенные элементы, связанные с рамкой, при предложении имени в
traceback
, чтобы избежать сбоя, если__builtins__
не является dict.gh-98139: В
importlib._bootstrap
увеличьте пакет пространства имен repr до<module 'x' (namespace) from ['path']>
.gh-90352: Исправьте
_SelectorDatagramTransport
, чтобы он наследовался отDatagramTransport
вasyncio
. Исправление Кумара Адитьи.gh-98793: Исправление проверки типов аргументов в функциях
_overlapped.WSAConnect()
и_overlapped.Overlapped.WSASendTo()
.gh-98744: Предотвращение сбоя в
traceback
при получении смещения байта для некоторых исходных файлов, содержащих определенные символы юникода.gh-98740: Исправлена внутренняя ошибка в модуле
re
, которая в очень редких случаях не позволяла скомпилировать регулярное выражение, содержащее conditional expression без ветви «else».gh-98703: Исправьте
asyncio.StreamWriter.drain()
для вызова обратного вызоваprotocol.connection_lost
только один раз на Windows.gh-98624: Добавьте мьютекс в unittest.mock.NonCallableMock для защиты одновременного доступа к атрибутам mock.
gh-98658: Класс
array.array
теперь поддерживает подзапись, что делает его классом generic type.gh-98284: Улучшенное сообщение
TypeError
для неопределенных абстрактных методов экземпляраabc.ABC
. Имена отсутствующих методов окружены одинарными кавычками, чтобы выделить их.gh-96151: Разрешите
BUILTINS
быть допустимым именем поля для замороженных классов данных.gh-98086: Убедитесь, что
patch.dict()
можно применять к асинхронным функциям.gh-72719: Удалите модули
asyncore
иasynchat
, которые были устаревшими в PEP 594.gh-96192: Исправьте обработку
bytes
path-like objects вos.ismount()
.gh-94172:
ftplib
: Удалите атрибут классаFTP_TLS.ssl_version
: вместо него используйте параметр context. Исправление Виктора Стиннераgh-94172: Удалите параметры keyfile и certfile из модулей
ftplib
,imaplib
,poplib
иsmtplib
, а также параметры key_file, cert_file и check_hostname из модуляhttp.client
, устаревшие с Python 3.6. Вместо них используйте параметр context (ssl_context вimaplib
). Исправление Виктора Стиннера.gh-83638: Добавьте атрибут
autocommit
кsqlite3.Connection
и параметр autocommit кsqlite3.connect()
для управления PEP 249-совместимыми transaction handling. Исправление Эрленда Э. Аасланда.gh-92452: Исправлено состояние гонки, из-за которого
sysconfig.get_config_var()
мог неверно возвращатьNone
в многопоточных программах.gh-91803: Исправление ошибки при использовании метода объектов, замакетированных с помощью
unittest.mock.create_autospec()
, после того как он был запечатан с помощью функцииunittest.mock.seal()
.bpo-38523:
shutil.copytree()
теперь рекурсивно применяет аргумент ignore_dangling_symlinks.bpo-40358: Добавьте аргумент walk_up в
pathlib.PurePath.relative_to()
.bpo-36267: Исправьте ошибку IndexError в
argparse.ArgumentParser
, когда действиюstore_true
дается явный аргумент.
Документация¶
gh-98832: Изменена формулировка docstring для
pathlib.Path.iterdir()
.gh-97966: Обновите документацию по uname, чтобы прояснить особый характер атрибута platform и указать, когда он стал поздним.
Тесты¶
gh-98903: Набор тестов Python теперь завершается с кодом выхода 4, если не было выполнено ни одного теста. Это должно помочь обнаружить опечатки в именах тестов и тестовых методов.
gh-98713: Исправлена ошибка в тестах
typing
, когда тест, полагающийся на детали реализации, специфичные для CPython, не был украшен@cpython_only
и не пропускался в других реализациях.gh-87390: Добавлены тесты на распаковку звезд с PEP 646 и некоторые другие разнообразные тесты PEP 646.
gh-96853: Добавили явное покрытие
Py_Initialize
(и, следовательно,Py_InitializeEx
) обратно в тесты встраивания (все остальные тесты встраивания перешли наPy_InitializeFromConfig
в Python 3.11)bpo-34272: Некоторые тесты C API были перемещены в новую директорию Lib/test/test_capi/.
Построить¶
gh-99086: Исправьте предупреждение компилятора
-Wimplicit-int
в configure проверьтеPTHREAD_SCOPE_SYSTEM
.gh-99016: Исправьте сборку с
PYTHON_FOR_REGEN=python3.8
.gh-97731: Укажите полный путь к исходному расположению
make docclean
(необходимо для кросс-сборки).gh-98949: Удалите неиспользуемую зависимость сборки от
readelf
.gh-98989: Используйте
python3.11
, если доступно, для регенерации и замораживания.gh-98831: Добавьте в
Tools/cases_generator
новый инструментарий для генерации оператора переключения интерпретатора из списка определений опкодов. Это касается только добавления, изменения или удаления определений команд. Определения команд теперь находятся вPython/bytecodes.c
, в виде файла custom DSL (under development). Инструментарий считывает этот файл и пишетPython/generated_cases.c.h
, который затем включается вPython/ceval.c
, чтобы обеспечить большинство случаев главного переключателя интерпретатора.gh-98817: Удалите PCbuild/lib.pyproj: он ни для чего не используется, является лишь незначительным удобством для пользователей Visual Studio (которые, вероятно, даже не знают о нём), и требует много усилий по обслуживанию, чтобы поддерживать его в актуальном состоянии.
gh-98776: Исправьте
make regen-test-levenshtein
для сборок вне дерева.gh-98707: Не используйте заголовки
libmpdec
, если--with-system-libmpdec
передается в configure. Не используйте заголовкиlibexpat
, если--with-system-expat
передается в configure.
Windows¶
gh-98689: Обновите сборки Windows до zlib v1.2.13. v1.2.12 имеет CVE-2022-37434, но уязвимый
inflateGetHeader
API не используется в Python.gh-98790: Предполагает, что отсутствие каталога
DLLs
означает, что стандартные модули расширения находятся в каталоге исполняемого файла.gh-98745: Обновите
py.exe
пусковую установку, чтобы она устанавливала 3.11 по умолчанию и 3.12 по запросу.gh-98692: Исправление Python Launcher для Windows, игнорирующего нераспознанные строки шебанга вместо того, чтобы рассматривать их как локальные пути
gh-94328: Обновление программы установки Windows для использования SQLite 3.39.4.
macOS¶
gh-94328: Обновление программы установки macOS до версии SQLite 3.39.4.
C API¶
gh-98724: Макросы
Py_CLEAR
,Py_SETREF
иPy_XSETREF
теперь оценивают свой аргумент только один раз. Если аргумент имеет побочные эффекты, то эти побочные эффекты больше не дублируются. Исправление Виктора Стиннера.gh-98978: Исправьте use-after-free в вызовах функций
Py_SetPythonHome(NULL)
,Py_SetProgramName(NULL)
и_Py_SetProgramFullPath(NULL)
. О проблеме сообщил Бенедикт Рейнартц. Исправление подготовил Виктор Стиннер.gh-98410: Добавьте
getbufferproc
иreleasebufferproc
в стабильный API.gh-98610: Некоторые настраиваемые возможности субинтерпретаторов изменились. Теперь они всегда разрешают подпроцессы (
subprocess
), тогда как раньше подпроцессы могли быть опционально запрещены для подинтерпретатора. Вместо этого теперь можно запретитьos.exec()
. Запрет потоков демонов теперь поддерживается. Запрет всех потоков по-прежнему разрешен, но никогда не выполняется по умолчанию. Обратите внимание, что дополнительные ограничения доступны только через_Py_NewInterpreterFromConfig()
, который не является публичным API. Они не влияют ни на основной интерпретатор, ни наPy_NewInterpreter()
.gh-98608: Был добавлен
_PyInterpreterConfig
, а_Py_NewInterpreter()
был переименован в_Py_NewInterpreterFromConfig()
. Аргумент «isolated_subinterpreters» теперь является гранулированной конфигурацией, которая отражает предыдущее поведение. Обратите внимание, что это все «приватный» API.gh-96853:
Py_InitializeEx
теперь корректно вызываетPyConfig_Clear
после инициализации интерпретатора (пропуск не привел к утечке памяти только потому, что ни одно из динамически выделяемых полей конфига не заполняется функцией-оберткой)gh-91248: Добавьте функции
PyFrame_GetVar()
иPyFrame_GetVarString()
, чтобы получить переменную кадра по ее имени. Исправление Виктора Стиннера.
Python 3.12.0 alpha 1¶
Дата выхода: 2022-10-25
Безопасность¶
gh-97616: Исправлено умножение списка на целое число (
list *= int
): обнаружено целочисленное переполнение, когда новая выделенная длина близка к максимальному размеру. О проблеме сообщил Джордан Лимор. Исправление подготовил Виктор Стиннер.gh-97514: В Linux модуль
multiprocessing
возвращается к использованию сокетов домена unix с поддержкой файловой системы для связи с процессом forkserver вместо абстрактного пространства имен сокетов Linux. Затронут только код, который решил использовать «forkserver» start method.Абстрактные сокеты не имеют прав доступа и могли позволить любому пользователю системы в том же network namespace (а зачастую и всей системе) внедрить код в многопроцессорный процесс forkserver. Это было потенциальным повышением привилегий. Разрешения на сокеты, основанные на файловой системе, ограничивают эту возможность пользователем процесса forkserver, как это было по умолчанию в Python 3.8 и более ранних версиях.
Это предотвращает появление Linux CVE-2022-42919.
gh-87389:
http.server
: Устранение уязвимости открытой переадресации в HTTP-сервере, когда путь URI начинается с//
. Уязвимость обнаружена и предложено первоначальное исправление Хамзой Авваном.gh-79096: LWPCookieJar и MozillaCookieJar создают файлы с файловым режимом 600 вместо 644 (Microsoft Windows не затронута)
gh-92888: Исправьте использование
memoryview
после free при обращении к резервному буферу в некоторых случаях.gh-68966: Устаревший модуль mailcap теперь отказывается вводить небезопасный текст (имена файлов, типы MIME, параметры) в команды оболочки. Вместо использования такого текста он будет предупреждать и действовать так, как если бы совпадение не было найдено (или для тестовых команд - как если бы тест не удался).
Ядро и встроенные модули¶
gh-98374: Подавление ошибки ImportError при некорректном запросе для команды help(). Исправление от Donghee Na.
gh-98461: Исправлено расположение источника в байткоде для списков, множеств и диктов, а также генераторных выражений.
gh-98354: Добавлена проверка юникода для атрибута
name
аргументаspec
, передаваемого в функцию_imp.create_builtin()
.gh-98398: Исправьте расположение источника байткода „assert“.
gh-98390: Исправляет расположение подвыражений булевых выражений, уменьшая их область видимости до области видимости подвыражения.
gh-98254: Модули из стандартной библиотеки теперь потенциально могут быть предложены в качестве части сообщений об ошибках, выводимых интерпретатором, когда
NameError
поднимается на верхний уровень. Исправление от Pablo Galindogh-97997: Добавляет смещение бегущего столбца в состояние токенизатора, чтобы избежать вычисления информации о столбце AST с помощью арифметики указателей.
gh-97973: Модифицируйте токенизатор, чтобы он возвращал всю необходимую информацию, которая нужна парсеру для установки информации о местоположении в узлах AST, чтобы парсеру не приходилось вычислять их, выполняя арифметику с указателями.
gh-96078:
os.sched_yield()
теперь освобождают GIL при вызове sched_yield(2). Исправление от Donghee Na.gh-97912: Компилятор теперь избегает квадратичного поведения при поиске инструкций, которые должны использовать опкод
LOAD_FAST_CHECK
.gh-97002: Исправление проблемы, когда несколько объектов фрейма могли быть подкреплены одним и тем же фреймом интерпретатора, что могло привести к повреждению памяти и жестким сбоям в работе интерпретатора.
gh-97943: Исправление:
PyFunction_GetAnnotations()
должен возвращать заимствованную ссылку. Она возвращала новую ссылку.gh-97922: Сборщик мусора теперь работает только с механизмом eval breaker цикла оценки байткода Python, а не с выделением объектов. GC также может запускаться при вызове
PyErr_CheckSignals()
, так что расширения на C, которые должны работать долгое время без выполнения кода Python, также имеют возможность периодически запускать GC.gh-65961: Если
__package__
отличается от__spec__.parent
, поднимитеDeprecationWarning
вместоImportWarning
.Также удалите
importlib.util.set_package()
, который был запланирован к удалению.gh-97850: Давно устарел,
module_repr()
теперь должен быть полностью уничтожен.gh-86298: В случаях, когда
warnings.warn_explicit()
обращается к загрузчику модуля, выдается сообщениеDeprecationWarning
, еслиm.__loader__
отличается отm.__spec__.loader
.gh-97779: Убедитесь, что все объекты кадров Python поддерживаются «полными» кадрами.
gh-91052: Добавьте API для подписки на события модификации выбранных словарей.
gh-97752: Исправление возможного повреждения данных или сбоев при обращении к члену
f_back
вновь созданных фреймов генератора или coroutine.gh-97591: Исправлена отсутствующая пара incref/decref в
Exception.__setstate__()
. Исправление от Ofey Chan.gh-97670: Удалите функцию
sys.getdxp()
и скриптTools/scripts/analyze_dxp.py
. DXP означает «пары динамического выполнения». Они были связаны с макросамиDYNAMIC_EXECUTION_PROFILE
иDXPAIRS
, которые были удалены в Python 3.11. Теперь Python можно собрать с помощью./configure --enable-pystats
для сбора статистики по опкодам Python. Исправление от Виктора Стиннера.gh-94526: Исправьте конфигурацию путей Python, используемую для инициализации
sys.path
при запуске Python. Пути больше не кодируются в UTF-8/strict, чтобы избежать ошибок кодировки, если они содержат суррогатные символы (байтовые пути декодируются с помощью обработчика ошибок surrogateescape). Исправление Виктора Стиннера.gh-96670: Парсер теперь поднимает
SyntaxError
при разборе исходного кода, содержащего нулевые байты. Исправление от Pablo Galindogh-96975: Исправление сбоя, возникающего при вызове
PyEval_GetFrame()
, когда самый верхний фрейм Python находится в частично инициализированном состоянии.gh-96848: Исправление разбора командной строки: отбрасывать опцию
-X int_max_str_digits
без значения (недействительную), когда переменная окруженияPYTHONINTMAXSTRDIGITS
установлена на допустимый предел. Исправление Виктора Стиннера.gh-95921: Исправление слишком широкой информации о позиции источника для цепочечных сравнений, используемых в качестве условий ветвления.
gh-96821: Исправьте неопределенное поведение в
audioop.c
.gh-96821: Исправьте неопределенное поведение в
_testcapimodule.c
.gh-95778: При появлении
ValueError
, если целое число больше предела, в сообщении об ошибке упоминается функцияsys.set_int_max_str_digits()
. Исправление Виктора Стиннера.gh-96387: При выходе из Python иногда поток, удерживающий GIL, может вечно ждать поток (обычно это поток демона), который запросил сброс GIL, в то время как этот поток уже вышел. Чтобы устранить это состояние гонки, поток, запросивший сброс GIL, теперь сбрасывает свой запрос перед выходом. Проблема обнаружена и проанализирована Mingliang ZHAO. Исправление подготовил Виктор Стиннер.
gh-96864: Исправление возможного сбоя утверждения, фатальной ошибки или
SystemError
, если событие трассировки строк вызывает исключение при включенной трассировке опкодов.gh-95778: Функция
PyLong_FromString
была рефакторизована, чтобы сделать ее более удобной для обслуживания и расширения.gh-96678: Исправление неопределенного поведения арифметики нулевого указателя в коде на языке C.
gh-96754: Убедитесь, что все создаваемые объекты фреймов созданы из корректных фреймов интерпретатора. Предотвращает возможность появления недействительных фреймов в бэктрейсах и обработчиках сигналов.
gh-90997: Улучшение производительности чтения и записи кэша встроенного байткода на некоторых платформах.
gh-96751: Удалите мертвый код из опкода
CALL_FUNCTION_EX
.gh-90751:
memoryview
теперь поддерживает полуплоскости. Исправление от Donghee Na и Antoine Pitrou.gh-96678: Исправьте случай неопределенного поведения в ceval.c
gh-64373: Преобразуйте
_functools
в аргумент clinic.gh-96641: Не выставляйте
KeyWrapper
в_functools
.gh-96636: Убедитесь, что трассировка,
sys.setrace()
, включается немедленно. В предварительных версиях 3.11 некоторые события трассировки могли быть потеряны при включении трассировки в методе или прерывании__del__
.gh-96572: Исправление использования после free в режиме сборки trace refs. Исправление от Kumar Aditya.
gh-96611: При загрузке файла с недопустимым UTF-8 внутри многострочной строки выдается корректная ошибка SyntaxError.
gh-96612: Убедитесь, что неполные кадры не отображаются в трассировках tracemalloc.
gh-90230: Исправление предупреждений компилятора и ошибок в тестах при сборке с
--enable-pystats
.gh-96587: Корректно поднимает
SyntaxError
в группах исключений (PEP 654) на версиях python до 3.11gh-96569: Устраните два случая неопределенного поведения, добавив проверку на NULL.
gh-96582: Исправление возможного разыменования указателя
NULL
в_PyThread_CurrentFrames
. Исправление Кумара Адитьи.gh-91079: Отделите проверку рекурсии в Python от проверки рекурсии в C, что уменьшает вероятность переполнения стека в C и позволяет безопасно увеличивать предел рекурсии.
gh-93911: Исправление проблемы, из-за которой
LOAD_ATTR
не мог правильно специализироваться при доступе к свойствам.gh-96348: Выдавать предупреждение о депривации, когда
throw()
,throw()
илиathrow()
вызываются с более чем одним аргументом.gh-95196: Отключение некорректного пикирования дескрипторов методов класса, реализованных на языке C.
gh-96364: Исправьте текстовые подписи
list.__getitem__
иdict.__getitem__
.gh-96352: Исправление отсутствующих в
AttributeError
атрибутовname
иobj
вobject.__getattribute__()
. Исправление от Филиппа Георги.gh-93554: Измените опкоды переходов таким образом, чтобы все условные переходы были переходами вперед. Переходы назад преобразуются ассемблером в условный переход вперед, целью которого является выпадающий блок (и с обратным условием), за которым следует безусловный переход назад. Например:
POP_JUMP_IF_TRUE BACKWARD_TARGET
становитсяPOP_JUMP_IF_FALSE NEXT_BLOCK; JUMP BACKWARD_TARGET
.Были удалены все опкоды направленных условных переходов:
POP_JUMP_FORWARD_IF_TRUE
,POP_JUMP_BACKWARD_IF_TRUE
,POP_JUMP_FORWARD_IF_FALSE
,POP_JUMP_BACKWARD_IF_FALSE
,POP_JUMP_FORWARD_IF_NONE
,POP_JUMP_BACKWARD_IF_NONE
,POP_JUMP_FORWARD_IF_NOT_NONE
,POP_JUMP_BACKWARD_IF_NOT_NONE
.Соответствующие опкоды без направления больше не являются псевдоинструкциями и реализуют прямые условные переходы.
gh-96268: При загрузке файла с недопустимым UTF-8 теперь сообщается о прерванном символе в правильном месте.
gh-96237: Внутреннее поле
_PyInterpreterFrame.f_func
переименовывается в_PyInterpreterFrame.f_funcobj
и может быть любым объектом. Поляf_globals
иf_builtin
могут содержать ненужные значения.Безопаснее всего рассматривать структуру
_PyInterpreterFrame
как непрозрачную.gh-96187: Исправлена ошибка, из-за которой
_PyCode_GetExtra
возвращала мусор для отрицательных индексов. Исправление от Пабло Галиндоgh-96143: Добавьте новую
-X perf
опцию командной строки Python, а такжеsys.activate_stack_trampoline()
иsys.deactivate_stack_trampoline()
функции в модулеsys
, которые позволяют установить/отключить интерпретатор таким образом, чтобы профилировщик Linuxperf
мог обнаружить вызовы Python. Новая функцияsys.is_stack_trampoline_active()
позволяет запрашивать состояние батута perf. Разработка Пабло Галиндо. Патч Пабло Галиндо и Кристиана Хаймса при участии Грегори П. Смита [Google] и Марка Шеннона.gh-96071: Исправление тупиковой ситуации в
PyGILState_Ensure()
при выделении нового состояния потока. Исправление Кумара Адитьи.gh-96046:
PyType_Ready()
теперь инициализируетht_cached_keys
и выполняет дополнительные проверки, чтобы убедиться, что объекты типов правильно сконфигурированы. Это позволяет избежать сбоев в сторонних пакетах, которые не используют обычный API для создания новых типов.gh-96005: В WASI
ENOTCAPABLE
теперь отображается наPermissionError
. Модулиerrno
отображают новый номер ошибки.getpath.py
теперь игнорируетPermissionError
, когда не может открыть файлы-землиpybuilddir.txt
иpyenv.cfg
.gh-93678: Добавлена тестовая оболочка для прямого модульного тестирования этапа оптимизации компилятора. Функция
_testinternalcapi.optimize_cfg()
запускает оптимизатор на последовательности инструкций. КлассCfgOptimizationTestCase
вtest.support
содержит утилиты для вызова оптимизатора и проверки результатов.gh-95245: Уменьшает размер «простого» объекта Python с 8 до 6 слов, перемещая указатель weakreflist в предзаголовок непосредственно перед указателем dict/values объекта.
gh-90997: Компилируйте виртуальные блоки
try
/except
для обработки исключений, возникающих во время вызововclose()
илиthrow()
через приостановленный кадр.gh-95977: Оптимизирован вызов
__get__()
с помощью vectorcall. Исправление Кумара Адитьи.gh-91210: Улучшите сообщение об ошибке, когда параметр без значения по умолчанию следует за параметром со значением по умолчанию, и показывайте то же самое сообщение, даже если последовательность без значения по умолчанию/по умолчанию предшествует параметрам только с позиционированием.
gh-95922: Исправлена ошибка, при которой функция
eliminate_empty_basic_blocks
компилятора игнорировала последний блок единицы кода.gh-95818: Пропускать неполные кадры в
PyThreadState_GetFrame()
.gh-95876: Исправьте строку формата в
_PyPegen_raise_error_known_location
, которая могла привести к повреждению памяти на некоторых 64-битных системах. Функция строила кортеж сi
(int) вместоn
(Py_ssize_t) для аргументов Py_ssize_t.gh-95605: Исправьте вводящее в заблуждение содержимое сообщения об ошибке при преобразовании строки со всеми пробелами в
float
.gh-95150: Обновление хеширования и равенства объектов кода для учета всех таблиц отладки и обработки исключений. Это исправляет проблему, из-за которой некоторые неидентичные объекты кода могли быть «дедуплицированы» во время компиляции.
gh-91146: Уменьшите размер выделения
list
изstr.split()
иstr.rsplit()
. Исправление от Donghee Na и Inada Naoki.gh-87092: Создайте в компиляторе абстракцию „jump target label“, чтобы этап codegen компилятора не работал напрямую с базовыми блоками. Это подготовит код к изменениям в базовом механизме генерации CFG.
gh-95355:
_PyPegen_Parser_New
теперь правильно обнаруживает ошибки выделения памяти для токенов. Исправление от Honglin Zhu.gh-90081: Запуск Python-кода в функции трассировщика/профайлера на полной скорости. Исправляет замедление в ранних версиях 3.11.
gh-95324: Выдавать предупреждение в режиме отладки, если объект не вызывает
PyObject_GC_UnTrack()
перед деаллокацией. Исправление от Пабло Галиндо.gh-95245: Объедините управляемые указатели dict и values в один указатель с меткой, чтобы сэкономить одно слово в предзаголовке.
gh-93678: Добавьте структуру cfg_builder и отрефакторьте соответствующий код, чтобы cfg можно было построить без экземпляра структуры компилятора.
gh-95185: Предотвращены сбои в конструкторе AST при компиляции некоторых абсурдно длинных выражений типа
"+0"*1000000
. Вместо этого теперь поднимается значениеRecursionError
. Исправление от Pablo Galindogh-93351: Позиции узлов
ast.AST
теперь проверяются при передаче вcompile()
и другие связанные функции. Если обнаружены недопустимые позиции, будет выдано сообщениеValueError
.gh-94438: Исправление проблемы, из-за которой при вычислении допустимых целей перехода для присваиваний атрибуту
f_lineno
фреймовых объектов игнорировались расширенные аргументы опкодов и некоторые условные всплытия. В некоторых случаях это могло привести к несогласованному внутреннему состоянию, что приводило к жесткому аварийному завершению работы интерпретатора.gh-95060: Недокументированная функция
PyCode_Addr2Location
теперь корректно возвращается, если аргументaddrq
меньше нуля.gh-95113: Замените все инструкции
EXTENDED_ARG_QUICK
базовыми инструкциямиEXTENDED_ARG
в неадаптивном коде. Потребители неадаптивного байткода должны уметь работать с расширенными аргументами так же, как они работали в CPython 3.10 и старше.gh-91409: Исправление некорректной информации о местоположении источника, вызванной некоторыми оптимизациями в компиляторе байткода.
gh-95023: Реализуйте
os.setns()
иos.unshare()
для Linux. Исправление Ноама Коэна.gh-94036: Исправление некорректной информации о местоположении источника для некоторых многострочных обращений к атрибутам и вызовов методов.
gh-94938: Исправление обнаружения ошибок в некоторых встроенных функциях, когда ключевое слово аргумента name является экземпляром подкласса str с перегруженными
__eq__
и__hash__
. Ранее это могло вызывать SystemError или другое нежелательное поведение.gh-94996:
ast.parse()
больше не будет разбирать определения функций с параметрами только позиционного типа, если переданоfeature_version
меньше, чем(3, 8)
. Исправление от Shantanu Jain.gh-94739: Позволяет переходить внутри, вне и между обработчиками исключений в отладчике.
gh-94949:
ast.parse()
больше не будет разбирать контекстные менеджеры со скобками, если переданоfeature_version
меньше, чем(3, 9)
. Исправление от Shantanu Jain.gh-94947:
ast.parse()
больше не будет разбирать выражения присваивания, если переданоfeature_version
меньше, чем(3, 8)
. Исправление от Shantanu Jain.gh-91256: Гарантирует, что имя программы будет известно для текста справки при запуске интерпретатора.
gh-94869: Исправление смещения столбцов для некоторых выражений в многострочных узлах f-строк
ast
. Исправление от Пабло Галиндо.gh-94893: Исправление проблемы, при которой манипуляции с фреймовыми объектами могли повреждать кэши встроенного байткода.
gh-94822: Исправление проблемы, когда поиск дескрипторов метаклассов мог игнорироваться, если атрибут с таким же названием существовал и в самом классе.
gh-91153: Исправлена проблема, из-за которой назначение элемента
bytearray
могло аварийно завершаться, если его размер изменялся методом__index__()
нового значения.gh-90699: Исправление ошибки подсчета ссылок в
bool.__repr__()
. Исправление сделано Кумаром Адитьей.gh-94694: Исправление проблемы, из-за которой код с многострочным поиском методов мог содержать недостоверную или неправильную информацию о смещении столбцов. В некоторых случаях (при компиляции собранного вручную AST) это могло привести к аварийному завершению работы интерпретатора.
gh-93252: Исправление проблемы, из-за которой внутренние кадры не успевали отработать неудачные вызовы функций Python, что могло привести к утечкам памяти или жестким сбоям интерпретатора.
gh-94215: Исправление проблемы, при которой исключения, вызванные событиями трассировки строк, приводили к тому, что фреймы оставались в недопустимом состоянии, что могло привести к аварийному завершению работы интерпретатора.
gh-92228: Отключите оптимизацию компилятора inline-small-exit-blocks для блоков выхода, связанных со строками исходного кода. Это исправляет ошибку, когда отладчик не мог определить, где заканчивается обработчик исключений и начинается следующий блок кода.
gh-94485: Номер строки инструкции
RESUME
модуля устанавливается в 0, как указано в PEP 626.gh-94438: Учет инструкций, которые могут выталкивать NULL в стек при установке номера строки в кадре. Предотвращает некоторые (маловероятные) сбои.
gh-91719: Перезагружает
opcode
при поднятииunknown opcode error
в главном цикле интерпретатора, чтобы компиляторы C могли самостоятельно генерировать код диспетчеризации.gh-94329: Скомпилируйте и запустите код с распаковкой очень больших последовательностей (1000 элементов). Такой код не удавалось скомпилировать. Теперь он компилируется и выполняется правильно.
gh-94360: Исправлено падение токенизатора при чтении кодированных файлов с синтаксическими ошибками из
stdin
с текстом в кодировке не utf-8. Исправление от Pablo Galindogh-88116: Исправление проблемы при чтении номеров строк из объектов кода, если кодированные номера строк близки к
INT_MIN
. Исправление от Pablo Galindogh-94262: Не создавайте объекты фреймов для неполных фреймов. Предотвращает создание генераторов и замыканий от наблюдения за расширениями Python и C, восстанавливая поведение 3.10 и более ранних версий.
gh-94192: Исправлена ошибка для словарных литералов с недопустимым выражением в качестве значения.
gh-87995: Экземпляры
types.MappingProxyType
теперь хэшируются, если базовое отображение является хэшируемым.gh-93883: Пересмотрите стратегию отображения улучшенных мест ошибок при трассировке. Индикаторы отображаются только в том случае, если местоположение не занимает всю строку.
gh-94163: Добавьте инструкции
BINARY_SLICE
иSTORE_SLICE
для более эффективной обработки и лучшей специализации операций нарезки, когда нарезка явно указана в исходном коде.gh-94021: Исправьте предупреждение о недоступном коде в
Python/specialize.c
.gh-93911: Специализировать
LOAD_ATTR
для предметов с пользовательскими__getattribute__
.gh-93955: Улучшение производительности поиска атрибутов у объектов с пользовательскими
__getattribute__
и__getattr__
. Исправление от Кена Джина.gh-93911: Специализировать
LOAD_ATTR
для атрибутовproperty()
.gh-93678: Переработайте код оптимизации компилятора так, чтобы ему больше не требовались передаваемые
struct assembler
иstruct compiler
. Вместо этого каждая функция берет CFG и другие данные, которые ей действительно нужны. Это позволит тестировать этот код напрямую.gh-93841: При сборке с
-enable-pystats
,sys._stats_on()
,sys._stats_off()
,sys._stats_clear()
иsys._stats_dump()
были добавлены функции, позволяющие собирать статистику для частей программ.gh-93516: Хранит смещение первой отслеживаемой инструкции в объекте кода, чтобы избежать необходимости вычислять его для каждой инструкции при трассировке.
gh-93516: Лениво создайте таблицу, сопоставляющую смещения байткода с номерами строк, чтобы ускорить вычисление номеров строк при трассировке.
gh-89828:
types.GenericAlias
больше не передает атрибут__class__
. Например,isinstance(list[int], type)
больше не возвращаетTrue
.gh-93678: Рефакторинг компилятора, чтобы уменьшить количество шаблонов и повторений.
gh-93671: Исправление некоторых случаев экспоненциального бэктрейса, возникающих при использовании глубоко вложенных шаблонов последовательностей в операторах соответствия. Исправление от Pablo Galindo
gh-93662: Убедитесь, что смещение конечного столбца корректно в многострочных вызовах методов. Ранее конечный столбец мог предшествовать смещению столбца.
gh-93461:
importlib.invalidate_caches()
теперь отбрасывает записи изsys.path_importer_cache
с относительным путем в качестве имени. Это решает проблему кэширования, когда процесс меняет текущий рабочий каталог.FileFinder
больше не вставляет точку в путь, например,/egg/./spam
теперь/egg/spam
.gh-93621: Измените порядок выполнения инструкций байткода для
with
иasync with
, чтобы уменьшить количество записей в таблице исключений.gh-93533: Уменьшите размер инлайн-кэша для
LOAD_METHOD
на 2 байта.gh-93444: Удалены лишние поля из структуры basicblock компилятора:
b_nofallthrough
,b_exit
,b_return
. Их можно легко вычислить из опкода последней инструкции блока.gh-93429: Инструкция
LOAD_METHOD
была удалена. Она была объединена обратно вLOAD_ATTR
.gh-93418: Исправлена ошибка, когда в f-строке после выражения стоял знак равенства „=“, но не было скобки в конце. Например, f«{i=»».
gh-93382: Кэшируйте результат функции
PyCode_GetCode()
, чтобы восстановить O(1) поиск атрибутаco_code
.gh-93359: Убедитесь, что пользовательские узлы
ast
без явных конечных позиций могут быть скомпилированы. Исправление от Пабло Галиндо.gh-93356: Код для обработчиков исключений выдается в конце байткода кодовой единицы. Это позволяет избежать одного прыжка, если исключение не было вызвано.
gh-93354: Использовать экспоненциальный бэк-офф для счетчиков специализаций в интерпретаторе. Позволяет значительно сократить количество неудачных специализаций и избежать замедления работы тех частей программы, которые не подходят для специализации.
gh-93283: Улучшено сообщение об ошибке при неправильном синтаксисе символа преобразования в выражениях f-строк.
gh-93345: Исправление сбоя при замене
TypeVar
во вложенном родовом псевдониме послеTypeVarTuple
.gh-93223: Когда инструкция байткода переходит к инструкции безусловного перехода, первая инструкция часто может быть оптимизирована для прямого обращения к цели безусловного перехода. По причинам трассировки раньше это происходило только в том случае, если обе инструкции имели одинаковый номер строки. Теперь это также происходит, если безусловный переход является искусственным, т. е. не имеет связанного с ним номера строки.
gh-84694: Опция конфигурации
--experimental-isolated-subinterpreters
и макросEXPERIMENTAL_ISOLATED_SUBINTERPRETERS
были удалены.gh-91924: Исправьте возможность отладки
__lltrace__
, если кодировка stdout не UTF-8. Исправление от Виктора Стиннера.gh-93040: Обертывает неиспользуемые параметры в
Objects/obmalloc.c
сPy_UNUSED
.gh-93143: Избегайте проверок
NULL
на наличие неинициализированных локальных переменных, определяя во время компиляции, какие переменные должны быть инициализированы.gh-93061: Переходы назад после циклов
async for
больше не получают сомнительные номера строк.gh-93065: Исправьте реализацию HAMT для обработки итерации над глубокими деревьями.
Ошибка была обнаружена и исправлена Эли Либманом. Более подробную информацию см. в разделе MagicStack/immutables#84.
gh-93012: Добавлена новая функция
PyType_FromMetaclass()
, которая обобщает существующуюPyType_FromModuleAndSpec()
, используя дополнительный аргумент метакласса. Это полезно для инструментов связывания языков, где можно перехватить операции, связанные с типом, такие как подклассификация или статический доступ к атрибутам, указав метакласс с пользовательскими слотами.Важно отметить, что
PyType_FromMetaclass()
доступен в Limited API, что открывает путь к переносу большего количества инструментов связывания на Stable ABI.gh-93021: Исправьте методы
__text_signature__
для__get__()
, реализованные на C. Исправление от Jelle Zijlstra.gh-89914: Операнд инструкции
YIELD_VALUE
устанавливается в глубину стека. Это делается для облегчения обработки фреймов наyield
и может помочь отладчикам.gh-92955: Исправьте утечку памяти в итераторах линий и позиций объекта кода, поскольку они не были завершены при выходе. Исправление Кумара Адитьи.
gh-92930: Исправлен сбой в
_pickle.c
при мутировании коллекций во время__reduce__
илиpersistent_id
.gh-90690: Инструкция PRECALL была удалена. Она давала лишь небольшое преимущество при специализации и не нужна в подавляющем большинстве случаев.
gh-92914: Всегда округляйте выделенный размер для списков до ближайшего четного числа.
gh-92858: Улучшено сообщение об ошибке для некоторых наборов с синтаксической ошибкой перед „:“
gh-90473: Уменьшение стандартного предела рекурсии в WASI для решения проблемы ограниченного размера стека вызовов.
gh-92804: Исправьте утечку памяти в итераторе
memoryview
, поскольку он не финализировался при выходе. Исправление от Kumar Aditya.gh-92777: Специализируйте
LOAD_METHOD
для объектов с ленивыми словарями. Исправление от Кена Джина.gh-92658: Добавляет поддержку подключения и привязки к сокетам Hyper-V на хостах и гостях Windows Hyper-V.
gh-92236: Устраняет ложное событие «LINE» при запуске генератора или coroutine, видимые функции трассировки, реализованные на C.
gh-91102:
_warnings.warn_explicit()
переносится в Клинику аргументов.gh-92619: Заставляет компилятор дублировать блок выхода только в том случае, если ни одна из его инструкций не имеет lineno (ранее проверялась только первая инструкция в блоке, что приводило к ненужному дублированию блоков).
gh-88750: Устаревшая переменная окружения debug build only
PYTHONTHREADDEBUG
больше ничего не делает.gh-92261: Исправьте зависание при попытке итерации над
typing.Union
.gh-91432: Специализация опкода
FOR_ITER
с использованием механизма PEP 659gh-91399: Удалена дублирующая запись „{0, 0, 0, 0, 0, 0, 0}“ в „Objects/unicodetype_db.h“.
gh-91578: Обновляет сообщение об ошибке для абстрактного класса.
bpo-47091: Улучшите производительность повторения
list
иtuple
, используяmemcpy
для копирования данных и выполняя приращение ссылок за один шаг.bpo-46142: Сделайте вывод
--help
короче, переместив часть информации в новые опции командной строки--help-env
и--help-xoptions
. Также добавьте опцию--help-all
для вывода полного использования.bpo-42316: Документируйте некоторые места, где выражение присваивания нуждается в круглых скобках.
Библиотека¶
gh-89237: Исправьте зависание на Windows в
subprocess.wait_closed()
вasyncio
сProactorEventLoop
. Исправление от Kumar Aditya.gh-97928:
tkinter.Text.count()
теперь вызывает исключение для опций, начинающихся с «-», вместо того, чтобы молча игнорировать их.gh-98393: Модуль
os
больше не принимает байтовые пути, такие как типыbytearray
иmemoryview
: для байтовых строк принимается только точный типbytes
. Исправление Виктора Стиннера.gh-98363: Добавлена функция itertools.batched() для пакетной обработки данных в списках заданной длины, причем последний список может быть короче остальных.
gh-98331: Обновите поставляемые в комплекте копии pip и setuptools до версий 22.3 и 65.5.0 соответственно.
gh-98307: Метод
createSocket()
был добавлен вSysLogHandler
.gh-96035: Исправление ошибки в
urllib.parse.urlparse()
, из-за которой некоторые номера портов, содержащие пробелы, символы подчеркивания, знаки плюс и минус или цифры, не являющиеся символами ASCII, принимались неверно.gh-98257: Сделайте функции
sys.setprofile()
иsys.settrace()
реентерабельными. Они больше не могут выходить из строя с помощью:RuntimeError("Cannot install a trace function while another trace function is being installed")
. Исправление от Виктора Стиннера.gh-98251: Разрешить
venv
передавать переменныеPYTHON*
вensurepip
иpip
, если они не влияют на разрешение путиgh-94597: Устаревшие методы
asyncio.AbstractEventLoopPolicy.get_child_watcher()
иasyncio.AbstractEventLoopPolicy.set_child_watcher()
будут удалены в Python 3.14. Исправление от Kumar Aditya.gh-98178: В macOS исправлено падение
syslog.syslog()
в многопоточных приложениях. На macOS функция libcsyslog()
не является потокобезопасной, поэтомуsyslog.syslog()
больше не освобождает GIL для ее вызова. Исправление Виктора Стиннера.gh-44098: Освобождение GIL при создании объектов
mmap.mmap
на Unix.gh-87730: Последовательное обертывание сетевых ошибок в поддержке urllib FTP, чтобы тестовый набор не проваливался, когда сеть доступна, но публичный интернет недоступен.
gh-94597: Классы дочерних наблюдателей
MultiLoopChildWatcher
,FastChildWatcher
иSafeChildWatcher
являются устаревшими и будут удалены в Python 3.14. Исправление Кумара Адитьи.gh-98023: Измените значение дочернего наблюдателя по умолчанию на
PidfdChildWatcher
в системах Linux, которые его поддерживают. Исправление от Кумара Адитьи.gh-90985: Ранее в версии 3.11 мы обесценили
asyncio.Task.cancel("message")
. Мы поняли, что были слишком строги, и отменили его.gh-65961: Не полагайтесь только на
__cached__
в модулях; код также будет поддерживать__spec__.cached
.gh-97646: Замените устаревший
application/javascript
наtext/javascript
вmimetypes
. См. RFC 9239. Исправление Ноама Коэна.gh-97930: Примените изменения из importlib_resources 5.8 и 5.9:
Traversable.joinpath
предоставляет конкретную реализацию.as_file
теперь поддерживает каталоги ресурсов.gh-97850: Удалите устаревшие
importlib.util.set_loader()
иimportlib.util.module_for_loader()
изimportlib.util
.gh-97837: Измените предупреждение deprecate в
unittest
сIt is deprecated to return a value!=None
на
It is deprecated to return a value that is not None from a test case
gh-97825: Исправляет
AttributeError
, когдаsubprocess.check_output()
используется с аргументомinput=None
и используется один из аргументов encoding или errors.gh-97008: Предложения по написанию
NameError
иAttributeError
, предоставленные с gh-82711, теперь также выдаются модулем чистого Pythontraceback
. Тесты для этих предложений теперь проверяют обе реализации, чтобы убедиться в их эквивалентности. Исправление Карла Фридриха Больц-Терейка и Лукаша Ланги.gh-97799:
dataclass
теперь используетinspect.get_annotations()
для изучения аннотаций на объектах класса.gh-97781: Удалены устаревшие интерфейсы в
importlib.metadata
(точки входа, доступные как словарь, неявное построение словаря из последовательности объектовEntryPoint
, мутабельность результатаEntryPoints
, доступ к точке входа по индексу). Вentry_points
теперь есть более простой и понятный API (возвращениеEntryPoints
).gh-96827: Избегайте ложных возвратов из
asyncio
, когда очистка исполнителя по умолчанию откладывается до закрытия цикла событий (например, в результате прерывания клавиатуры).gh-95534:
gzip.GzipFile.read()
читает на 10 % быстрее.gh-97592: Избежать сбоя в C-версии
asyncio.Future.remove_done_callback()
при передаче дурного аргумента.gh-97545: Заставить семафор работать быстрее.
gh-73588: Исправлена генерация имени по умолчанию для
tkinter.Checkbutton
. Ранее флажки в разных родительских виджетах могли иметь одинаковое короткое имя и иметь одинаковое состояние, если не были указаны аргументы «name» и «variable». Теперь они глобально уникальны.gh-96865: исправить Флаг для использования границы CONFORM
Это восстанавливает прежнее поведение флагов, позволяющее объединять флаги с непоследовательными значениями; например
class Skip(Flag): 2 = 2 8 = 8
Skip.TWO | Skip.EIGHT -> <Skip.TWO|EIGHT: 10>
gh-97005: Обновление libexpat до версии 2.4.9
gh-85760: Исправление состояния гонки в
asyncio
, когдаprocess_exited()
вызывался раньшеpipe_data_received()
, что приводило к несогласованному выводу. Исправление сделано Кумаром Адитьей.gh-96704: Передайте правильное значение
contextvars.Context
, когда обработчик исключенийasyncio
вызывается от имени задачи или обработчика обратного вызова. Это добавляет новый методTask
,get_context
, а также новый методHandle
с тем же именем. Если этот метод не найден в объекте задачи (возможно, потому что это сторонняя библиотека, которая еще не предоставляет такой метод), используется контекст, преобладающий на момент вызова обработчика исключений.gh-96819: Исправлена проверка в
multiprocessing.resource_tracker
, гарантирующая, что длина записи в трубу не превышаетPIPE_BUF
.gh-95865: Сократите использование памяти
urllib.parse.quote_from_bytes()
при больших значениях.Внесено Деннисом Суини.
gh-96741: Исправлена аннотация типа для атрибута dataclass
pstats.FunctionProfile.ncalls
наstr
.gh-96734: Обновление базы данных
unicodedata
до версии Unicode 15.0.0.gh-96735: Исправьте неопределенное поведение в
struct.unpack()
.gh-46412: Улучшение производительности
bool(db)
для больших баз данных ndb/gdb. Раньше для этого вызывалсяlen(db)
, который перебирал все ключи - ответ (пустой или нет) был известен после первого ключа.gh-96652: Исправьте реализацию фаултхандлера
faulthandler.register(signal, chain=True)
, если функцияsigaction()
недоступна: не вызывайте предыдущий обработчик сигнала, если он NULL. Исправление Виктора Стиннера.gh-68163: Правильное преобразование
numbers.Rational
вfloat
.gh-96538: Ускорьте работу функций
bisect.bisect()
, используя преимущества стабильности типов.gh-96465: Дробные хэши теперь кэшируются.
gh-96079: В
typing
исправьте отсутствующее полеname
и неправильное__module__
в _AnnotatedAlias.gh-96415: Удалите
types._cell_factory
из пространства имен модуля.gh-95987: Исправьте
repr
изAny
подклассов.gh-96388: Работа над отсутствующими функциями сокетов в
socket
в__repr__
.gh-96385: Исправьте
TypeVarTuple.__typing_prepare_subst__
.TypeError
не поднимался при использовании более одногоTypeVarTuple
, как и[*T, *V]
в подстановках псевдонимов типов.gh-96142: Добавьте
match_args
,kw_only
,slots
иweakref_slot
к_DataclassParams
.gh-96073: В
inspect
исправьте излишнюю замену «typing.
» в аннотациях форматирования.gh-89258: В
logging.Logger
добавлен методgetChildren()
для получения ближайших дочерних логгеров логгера.gh-96346: Используйте двойное кэширование для скомпилированных шаблонов RE.
gh-96349: Исправлена незначительная регрессия производительности в
threading.Event.__init__()
gh-90467: Исправьте
asyncio.streams.StreamReaderProtocol
, чтобы сохранить сильную ссылку на созданную задачу, чтобы она не собиралась в мусорgh-96172: Исправление ошибки в
unicodedata
:east_asian_width
возвращала неверное значение для неназначенных символов; и для еще неназначенных, но зарезервированных символов.gh-96159: Исправление регрессии производительности в логировании TimedRotatingFileHandler. Проверяет наличие специальных файлов только по истечении времени поворота.
gh-96175: Исправьте неиспользуемый параметр
localName
в классеAttr
вxml.dom.minidom
.gh-96145: Добавьте AttrDict в модуль JSON для использования с object_hook.
gh-96052: Исправлена обработка предупреждений компилятора (SyntaxWarning и DeprecationWarning) в
codeop.compile_command()
при проверке на неполный ввод. Ранее он выдавал предупреждения и вызывал ошибку SyntaxError. Теперь он всегда возвращаетNone
для неполного ввода, не выдавая никаких предупреждений.gh-96125: Исправление некорректного состояния, приводящего к ошибке
sys.thread_info.name
на платформах pthread.gh-96019: Исправлена ошибка в скрипте
makeunicodedata.py
, приводящая к экономии около 13 килобайт места в модулеunicodedata
, в частности, в данных о разложении символов.gh-95463: Удалите несовместимое изменение из bpo-28080, которое вызывало регрессию, игнорирующую utf8 в
ZipInfo.flag_bits
. Исправление от Пабло Галиндо.gh-69142: Добавьте
%:z
код формата strftime (генерирует tzoffset с двоеточиями в качестве разделителя), см. strftime() и strptime() Поведение.gh-95899: Исправьте
asyncio.Runner
, чтобы он вызывалasyncio.set_event_loop()
только один раз, чтобы избежать многократного вызоваattach_loop()
на дочерних наблюдателях. Исправление Кумара Адитьи.gh-95736: Исправьте
unittest.IsolatedAsyncioTestCase
, чтобы установить цикл событий перед вызовом функций настройки. Исправление от Kumar Aditya.gh-95865: Ускорьте
urllib.parse.quote_from_bytes()
, заменив списочное понимание наmap()
.gh-95861: Добавьте поддержку вычисления коэффициента корреляции Спирмена в существующую функцию statistics.correlation().
gh-95804: Исправьте обработчик выключения
logging
, чтобы он уважалMemoryHandler.flushOnClose
.gh-95704: Когда задача ловит
asyncio.CancelledError
и вызывает другую ошибку, эта ошибка, как правило, не должна молча подавляться.gh-95149: Перечисление
HTTPStatus
предлагает несколько свойств для указания категории статуса HTTP, напримерHTTPStatus.OK.is_success
.gh-95609: Обновление поставляемого pip до версии 22.2.2.
gh-95289: Исправление
asyncio.TaskGroup
для распространения исключения, когдаasyncio.CancelledError
был заменен на другое исключение менеджером контекста. Исправление Кумара Адитьи и Гвидо ван Россума.gh-94909: Исправлено некорректное объединение относительных путей Windows с дисками в инициализаторе
pathlib.PurePath
.gh-95385: Быстрее
json.dumps()
, если сортировка ключей не запрашивается (по умолчанию).gh-83901: Улучшите сообщение об ошибке
Signature.bind
при отсутствии аргументов, относящихся только к ключевым словам.gh-95339: Обновление поставляемого pip до версии 22.2.1.
gh-95045: Исправление сбоя GC при деаллоцировании
_lsprof.Profiler
путем снятия с него трекинга перед вызовом обратных вызовов. Исправление от Kumar Aditya.gh-95231: Изящно откажитесь, если при загрузке методов
crypt
будет поднята ошибкаEPERM
илиENOSYS
. Это может произойти при попытке загрузитьMD5
на ядре Linux с включенным FIPS.gh-95097: Исправьте
asyncio.run()
для реализацийasyncio.Task
без методаuncancel()
. Исправление от Kumar Aditya.gh-95087: Исправление IndexError при разборе недействительной даты в модуле
email
.gh-95199: Обновление поставляемых setuptools до версии 63.2.0.
gh-95194: Обновление поставляемого pip до версии 22.2.
gh-93899: Исправлена проверка наличия флагов
os.EFD_CLOEXEC
,os.EFD_NONBLOCK
иos.EFD_SEMAPHORE
на старых версиях ядра, где эти флаги отсутствуют. Исправление Кумара Адитьи.gh-95166: Исправьте
concurrent.futures.Executor.map()
, чтобы отменить текущее ожидание при ошибке - например, TimeoutError или KeyboardInterrupt.gh-95132: Исправление регрессии
sqlite3
, при которой*args
и**kwds
неверно передавались изconnect()
в фабрикуConnection
. Регрессия была внесена в 3.11a1 с PR 24421 (gh-85128). Исправление Эрленда Э. Аасланда.gh-93157: Исправьте, что модуль
fileinput
не поддерживал опциюerrors
, когдаinplace
был истинным.gh-91212: Исправлено мерцание окна черепахи при выключении трассировки. Исправление от Shin-myoung-serp.
gh-95077: Добавить предупреждение об устаревании для доступа к enum
member.member
(например,Color.RED.BLUE
). УдалитьEnumMeta.__getattr__
.gh-95109: Убедитесь, что тайм-ауты, запланированные с помощью
asyncio.Timeout
, которые уже истекли, будут доставлены своевременно.gh-95105:
wsgiref.types.InputStream.__iter__()
должно возвращатьIterator[bytes]
, а неIterable[bytes]
. Исправление от Shantanu Jain.gh-95066: Заменено утверждение на исключение в
ast.parse()
, когдаfeature_version
имеет недопустимую мажорную версию. Исправление от Shantanu Jain.gh-77617: Добавить
sqlite3
command-line interface. Исправление Эрленда Аасланда.gh-95005: Замените _PyAccu на _PyUnicodeWriter в кодировщике JSON и StringIO и удалите реализацию _PyAccu.
gh-90085: Удалите
-c/--clock
и-t/--time
. Опции CLI изtimeit
. Эти опции были устаревшими с Python 3.3, а в Python 3.7 их функциональность была удалена. Исправление от Shantanu Jain.gh-94857: Исправьте refleak в
_io.TextIOWrapper.reconfigure
. Исправление от Kumar Aditya.gh-94821: Исправьте привязку unix-сокета к пустому адресу в Linux, чтобы использовать доступный адрес из абстрактного пространства имен, а не «0».
gh-94736: Исправление сбоя при деаллокации экземпляра подкласса
_multiprocessing.SemLock
. Исправление Кумара Адитьи.gh-81620: Добавить random.binomialvariate().
gh-74116: Разрешите
asyncio.StreamWriter.drain()
ожидать одновременно нескольким задачам. Исправление Кумара Адитьи.gh-87822: При вызове с
capture_locals=True
функции модуляtraceback
проглатывают исключения, возникающие при вызовеrepr()
на локальных переменных фреймов. Это делается для того, чтобы приоритет отдавался исходному исключению, а не ошибкам рендеринга. Вместо отсутствующего значения выводится признак сбоя. (Исправление Симона-Мартина Шредера).gh-88050: Исправьте перенос подпроцесса
asyncio
, чтобы убивать процесс, когда он заблокирован, и избежатьRuntimeError
, когда цикл закрыт. Исправление Кумара Адитьи.gh-94637:
SSLContext.set_default_verify_paths()
теперь освобождает GIL вокруг вызоваSSL_CTX_set_default_verify_paths
. Вызов функции выполняет работу, связанную с вводом-выводом и интенсивной работой процессора.gh-94309: Утратить псевдонимы
typing.Hashable
иtyping.Sized
.gh-92546: Недокументированный бенчмарк
python -m pprint
перенесен в наборpprint
пакета pyperformance. Исправление Олега Иарыгина.gh-94607: Исправление подклассификации сложных дженериков с переменными типа в
typing
. Ранее выдавалось сообщение об ошибкеSome type variables ... are not listed in Generic[...]
.typing
больше не заполняет__parameters__
данными__parameters__
класса Python.gh-94619: Удалите давно устаревший
module_repr()
изimportlib
.gh-93910: Возможность доступа к другим значениям перечисления в перечислении (например,
Color.RED.BLUE
) была восстановлена, чтобы исправить регресс производительности.gh-93896: Исправьте
asyncio.run()
иunittest.IsolatedAsyncioTestCase
, чтобы они всегда выполняли цикл события set, как это было в Python 3.10 и более ранних версиях. Исправление Кумара Адитьи.gh-94343: Разрешить установку атрибутов
reprlib.Repr
при инициализации объектаgh-94382: Перенос статических типов модуля
_multiprocessing
в типы кучи. Исправление Кумара Адитьи.gh-78724: Исправление сбоя в
struct.Struct
, когда он не был полностью инициализирован, путем инициализации в__new__()
. Исправление от Kumar Aditya.gh-94510: Ре-энтри коллы на
sys.setprofile()
иsys.settrace()
теперь повышаютRuntimeError
. Исправление от Пабло Галиндо.gh-92336: Исправлена ошибка, из-за которой
linecache.getline()
не срабатывал в плохих файлах сUnicodeDecodeError
илиSyntaxError
. Теперь она возвращает пустую строку, как указано в документации.gh-94398: После того как группа задач
asyncio.TaskGroup
начала завершать работу (т. е. хотя бы одна задача завершилась неудачей, и группа задач начала отменять оставшиеся задачи), добавление новых задач в группу задач должно быть невозможным.gh-94383:
xml.etree
: Удалите методElementTree.Element.copy()
из чисто питоновской реализации, устаревший в Python 3.10, вместо него используйте функциюcopy.copy()
. В реализацииxml.etree
на C нет методаcopy()
, есть только метод__copy__()
. Исправление Виктора Стиннера.gh-94379:
zipimport
: Удалите методыfind_loader()
иfind_module()
, устаревшие в Python 3.10: вместо них используйте методfind_spec()
. Обоснование смотрите в PEP 451. Исправление Виктора Стиннера.gh-94352:
shlex.split()
: ПередачаNone
для аргумента s теперь вызывает исключение, а не чтениеsys.stdin
. Эта возможность была устаревшей в Python 3.9. Исправление Виктора Стиннера.gh-89988: Исправьте утечку памяти в
pickle.Pickler
при просмотреdispatch_table
. Исправление от Kumar Aditya.gh-90016: Утратить актуальность
sqlite3
default adapters and converters. Исправление Эрленда Э. Аасланда.gh-94254: Исправлены типы модуля
struct
на неизменяемые. Исправление Кумара Адитьи.gh-93259: Теперь поднимает
ValueError
, когдаNone
или пустая строка передаютсяDistribution.from_name
(и другим вызывающим устройствам).gh-74696:
shutil.make_archive()
теперь передает аргумент root_dir пользовательским архиваторам, которые его поддерживают.gh-94216: Модуль
dis
теперь содержит опкоды для псевдоинструкций (те, которые используются компилятором во время генерации кода, но затем удаляются или заменяются реальными опкодами перед выдачей окончательного байткода).gh-93096: Удалена недокументированная
python -m codecs
. Вместо него используйтеpython -m unittest test.test_codecs.EncodedFileTest
.gh-94207: Сделано
_struct.Struct
GC-трекинг, чтобы исправить утечку ссылок в модуле_struct
.gh-93096: Удален недокументированный аргумент
-t
изpython -m base64
. Вместо него используйтеpython -m unittest test.test_base64.LegacyBase64TestCase.test_encodebytes
.gh-94226: Удалите функцию
locale.format()
, устаревшую в Python 3.7: вместо нее используйтеlocale.format_string()
. Исправление Виктора Стиннера.gh-94199: Удалите функцию
ssl.match_hostname()
. Функцияssl.match_hostname()
была устаревшей в Python 3.7. OpenSSL выполняет сопоставление имен хостов начиная с Python 3.7, Python больше не использует функциюssl.match_hostname()
. Исправление Виктора Стиннера.gh-94214: Документируйте объект
context
, используемый в классеvenv.EnvBuilder
, и добавьте к нему путь к библиотеке нового окружения.gh-94199: Уберите функцию
ssl.wrap_socket()
, устаревшую в Python 3.7: вместо этого создайте объектssl.SSLContext
и вызовите его методssl.SSLContext.wrap_socket
. Любой пакет, который все еще используетssl.wrap_socket()
, сломан и небезопасен. Функция не отправляет расширение SNI TLS и не проверяет имя хоста сервера. Код подвержен CWE-295 Неправильной проверке сертификатов. Исправление от Виктора Стиннера.gh-94199: Удалите функцию
ssl.RAND_pseudo_bytes()
, устаревшую в Python 3.6: вместо нее используйтеos.urandom()
илиssl.RAND_bytes()
. Исправление Виктора Стиннера.gh-94199:
hashlib
: Удалите чисто питоновскую реализациюhashlib.pbkdf2_hmac()
, устаревшую в Python 3.10. Для Python 3.10 и новее требуется OpenSSL 1.1.1 (PEP 644): эта версия OpenSSL обеспечивает реализациюpbkdf2_hmac()
на C, которая работает быстрее. Исправление Виктора Стиннера.gh-94196:
gzip
: Удалите атрибутfilename
изgzip.GzipFile
, устаревший с Python 2.6, вместо него используйте атрибутname
. В режиме записи атрибутfilename
добавлял расширение файла'.gz'
, если оно отсутствовало. Исправление Виктора Стиннера.gh-94182: запустить
asyncio.PidfdChildWatcher
на работающем цикле; это позволяет циклам событий запускать подпроцессы, если в главном потоке не запущен цикл событий по умолчаниюgh-94169: Удалите
io.OpenWrapper
и_pyio.OpenWrapper
, устаревшие в Python 3.10: вместо них используйтеopen()
. Функцияopen()
(io.open()
) является встроенной функцией. Начиная с Python 3.10,_pyio.open()
также является статическим методом. Исправление Виктора Стиннера.gh-91742: Исправление падения
pdb
после перехода, вызванного разыменованием нулевого указателя. Автор исправления - Кумар Адитья.gh-94101: Ручное инстанцирование объектов
ssl.SSLSession
больше не допускается, так как это приводило к неправильной конфигурации экземпляров, что при обращении к ним с атрибутами приводило к аварийному завершению работы интерпретатора.gh-84753:
inspect.iscoroutinefunction()
,inspect.isgeneratorfunction()
иinspect.isasyncgenfunction()
теперь корректно возвращаютTrue
для утино-типизированных функционально-подобных объектов, таких как экземплярыunittest.mock.AsyncMock
.Это делает
inspect.iscoroutinefunction()
совместимым с поведениемasyncio.iscoroutinefunction()
. Исправление от Mehdi ABAAKOUK.gh-94028: Исправление регрессии в
sqlite3
, когда объекты операторов не очищались и не сбрасывались после использования в курсорных итерах. Регрессия была введена в PR 27884 в Python 3.11a1. Исправление Эрленда Э. Аасланда.gh-93973: Добавьте ключевое слово-аргумент
all_errors
кasyncio.create_connection
, чтобы несколько ошибок подключения могли быть вызваны какExceptionGroup
.gh-93963: Официально устаревшие классы из
importlib.abc
перенесены вimportlib.resources.abc
.gh-93858: Предотвращение ошибки при активации venv во вложенных экземплярах рыбы.
gh-93847: Исправьте повтор перечисления общих псевдонимов.
gh-91404: Верните утечку памяти в
re
, когда матч завершается по сигналу или ошибке выделения памяти, так как реализованное исправление привело к значительному снижению производительности.gh-83499: Исправьте двойное закрытие описания файла в
tempfile
.gh-93820: Исправлена регрессия, когда
copy.copy()
-указаниеenum.Flag
имело несколько членов флага.gh-79512: Исправлены имена и значение
__module__
классовweakref
ReferenceType
,ProxyType
,CallableProxyType
. Это делает их pickleable.gh-91389: Исправлена проблема, из-за которой утилиты
dis
могли сообщать недостающую или неверную информацию о позиции при наличии записейCACHE
.gh-93626: Установите для
__future__.annotations
значениеNone
mandatoryRelease, чтобы указать, что в настоящее время это «TBD».gh-90473: Emscripten и WASI не имеют домашнего каталога и не могут предоставить PEP 370 каталог сайта пользователя.
gh-90494:
copy.copy()
иcopy.deepcopy()
теперь всегда выдают ошибку TypeError, если__reduce__()
возвращает кортеж с длиной 6, вместо того чтобы молча игнорировать 6-й элемент или выдавать неверный результат.gh-90549: Исправление ошибки многопроцессорной обработки, когда глобальный именованный ресурс (например, семафор) мог утекать при порождении дочернего процесса (в отличие от форка).
gh-93521: Исправлена ситуация, когда классы данных пытались добавить
__weakref__
в__slots__
для класса данных, указавшегоweakref_slot=True
, когда он уже был определен в одной из своих баз. Это приводило к появлениюTypeError
при создании нового класса.gh-79579:
sqlite3
теперь корректно определяет DML-запросы с ведущими комментариями. Исправление Эрленда Э. Аасланда.gh-93421: Обновление
sqlite3.Cursor.rowcount
после завершения выполнения оператора DML. Это исправляет подсчет строк для SQL-запросов типаUPDATE ... RETURNING
. Исправление Эрленда Э. Аасланда.gh-93475: Раскрыть константы
FICLONE
иFICLONERANGE
вfcntl
. Патч от Illia Volochii.gh-93370: Утратить
version
иversion_info
.gh-91810: Подавить запись декларации XML в открытых файлах в
ElementTree.write()
сencoding='unicode'
иxml_declaration=None
.gh-91162: Поддержка разбиения распакованного кортежа произвольной длины по параметрам
TypeVar
иTypeVarTuple
. Например:A[T, *Ts][*tuple[int, ...]]
->A[int, *tuple[int, ...]]
A[*Ts, T][*tuple[int, ...]]
->A[*tuple[int, ...], int]
gh-93353: Исправьте менеджер контекста
importlib.resources.as_file()
для удаления временного файла, если он был уничтожен поздно во время финализации Python: сохраните локальную ссылку на функциюos.remove()
. Исправление Виктора Стиннера.gh-83658: Заставьте
multiprocessing.Pool
вызывать исключение, еслиmaxtasksperchild
не являетсяNone
или положительным int.gh-93312: Добавьте флаг
os.PIDFD_NONBLOCK
для открытия дескриптора файла для процесса сos.pidfd_open()
в неблокирующем режиме. Исправление Кумара Адитьи.gh-88123: Реализуйте
Enum.__contains__
, возвращающийTrue
илиFalse
, чтобы заменить устаревшее поведение, которое иногда вызывалоTypeError
.gh-93297: Сделать так, чтобы группы задач asyncio не допускали GCed дочерних задач
gh-85308: Изменен
argparse.ArgumentParser
для использования filesystem encoding and error handler вместо текстовой кодировки по умолчанию для чтения аргументов из файла (например, опцияfromfile_prefix_chars
). Это изменение влияет на Windows; файл аргументов должен быть закодирован в UTF-8 вместо ANSI Codepage.gh-93156: Доступ к последовательности
pathlib.PurePath.parents
абсолютного пути с использованием отрицательных значений индексов давал некорректные результаты.gh-93162: Добавьте возможность для
logging.config.dictConfig()
использоватьQueueHandler
иQueueListener
в качестве пары, а также добавьтеlogging.getHandlerByName()
иlogging.getHandlerNames()
. API для доступа к обработчикам по имени.gh-93243: Модуль
smtpd
был удален в соответствии с расписанием в PEP 594.gh-92886: Замените утверждения
assert
наraise AssertionError()
вBaseHandler
, чтобы проверенное поведение сохранялось при оптимизации(-O)
.gh-90155: Исправьте поломку
asyncio.Semaphore
при отмене приобретения.gh-90817: Функция
locale.resetlocale()
устарела и будет удалена в Python 3.13. Вместо нее используйтеlocale.setlocale(locale.LC_ALL, "")
. Исправление Виктора Стиннера.gh-91513: Добавлен атрибут
taskName
в модульlogging
для использования с заданиямиasyncio
.gh-74696:
shutil.make_archive()
больше не изменяет временно текущий рабочий каталог при создании стандартных.zip
или tar-архивов.gh-92728: Функция
re.template()
и соответствующие флагиre.TEMPLATE
иre.T
восстановлены после их удаления в версии 3.11.0b1, но теперь они устарели, поэтому могут быть удалены из Python 3.13.gh-93033: Поиск в некоторых строках (зависит от платформы, т.е. [U+0xFFFF, U+0x0100] в Windows или [U+0xFFFFFF, U+0x00010000] в Linux 64-bit) теперь работает в 10 раз быстрее.
gh-89973: Исправьте
re.error
, поднятое вfnmatch
, если шаблон содержит диапазон символов, верхняя граница которого меньше нижней (например,[c-a]
). Теперь такие диапазоны интерпретируются как пустые.gh-93044: Больше не преобразуйте аргумент базы данных
sqlite3.connect()
в байты перед передачей его фабрике.gh-93010: В особом случае почтовый пакет пытался добавить в список дефектов несуществующий
InvalidHeaderError
. Должно было бытьInvalidHeaderDefect
.gh-92986: Исправьте
ast.unparse()
, когдаImportFrom.level
будетNone
.gh-92932: Теперь
dis()
иget_instructions()
обрабатывают значения операндов для инструкций с префиксомEXTENDED_ARG_QUICK
. Исправление Сэма Гросса и Донгхи На.gh-92675: Исправьте
venv.ensure_directories()
, чтобы он принимал аргументыpathlib.Path
в дополнение к путямstr
. Исправление Дэвида Фостера.gh-87901: Удален аргумент
encoding
изos.popen()
, который был добавлен в 3.11b1.gh-91922: Исправьте функцию
sqlite.connect()
и конструкторsqlite.Connection
на локали, отличные отUTF-8. Также теперь они поддерживают байтовые пути, не декодируемые в текущей кодировке FS.gh-92869: Добавили
c_time_t
кctypes
, который имеет тот же размер, что и типtime_t
в C.gh-92839: Исправлено падение, возникающее при вызове bisect.insort() или bisect.insort_left() с аргументом key, не равным
None
.gh-90473:
subprocess
теперь не срабатывает раньше времени на платформах Emscripten и WASI, чтобы решить проблему отсутствияos.pipe()
на WASI.gh-89325: Удалено множество старых устаревших функций
unittest
:TestCase
псевдонимы методов, недокументированный и сломанныйTestCase
методassertDictContainsSubset
, недокументированныйTestLoader.loadTestsFromModule
параметр use_load_tests, а также подчеркнутый псевдоним классаTextTestResult
.gh-92734: Позволяет многоэлементным репризам, испускаемым
reprlib
, быть красиво напечатанными с использованием настраиваемого отступа.gh-92671: Исправлено
ast.unparse()
для пустых кортежей в целевом контексте присваивания.gh-91581:
utcfromtimestamp()
больше не пытается разрешитьfold
в чистой реализации Python, поскольку сложение никогда не равно 1 в UTC. Помимо того, что это немного быстрее в общем случае, это также предотвращает некоторые ошибки, когда временная метка близка кdatetime.min
. Исправление от Paul Ganssle.gh-86388: Удалена функциональность randrange(), устаревшая с Python 3.10. Раньше randrange(10.0) без потерь преобразовывался в randrange(10). Теперь она вызывает ошибку типа TypeError. Кроме того, исключение, возникающее для неинтегральных значений, таких как randrange(10.5) или randrange(„10“), было изменено с ValueError на TypeError.
gh-90385: Добавьте
pathlib.Path.walk()
в качестве альтернативыos.walk()
.gh-92550: Исправьте
pathlib.Path.rglob()
для пустого шаблона.gh-92591: Разрешить фильтрам
logging
возвращать экземплярlogging.LogRecord
, чтобы фильтры, подключенные кlogging.Handler
, могли обогащать записи без побочных эффектов для других обработчиков.gh-92445: Исправлена ошибка в
argparse
, когдаnargs="*"
вместо возврата пустого списка при 0 аргументов выдавал ошибку, если выбор был также определен вparser.add_argument
.gh-92547: Удалите недокументированные
sqlite3
функции, устаревшие в Python 3.10:sqlite3.enable_shared_cache()
sqlite3.OptimizedUnicode
Патч Эрленда Э. Аасланда.
gh-92530: Исправление проблемы, возникавшей после прерывания
threading.Condition.notify()
.gh-92531: Функция statistics.median_grouped() теперь всегда возвращает float. Раньше она не преобразовывала тип входных данных, если речь шла о последовательностях длины один.
gh-84131: Устаревший метод
pathlib.Path
link_to
был удален. Вместо него используйте методhardlink_to()
из версии 3.10, поскольку его семантика соответствует семантикеsymlink_to()
.gh-89336: Удалены API модулей
configparser
: псевдоним классаSafeConfigParser
, свойство и параметрParsingError.filename
и методConfigParser.readfp
, которые были устаревшими с Python 3.2.gh-92391: Добавьте
__class_getitem__()
кcsv.DictReader
иcsv.DictWriter
, позволяя параметризовать их во время выполнения. Исправление Марка Мюллера.gh-91968: Добавьте константы
SO_RTABLE
иSO_USER_COOKIE
вsocket
.gh-91810:
ElementTree
методwrite()
и функцияtostring()
теперь используют кодировку текстового файла («UTF-8», если она недоступна) вместо кодировки локали в объявлении XML, когда указаноencoding="unicode"
.gh-81790:
os.path.splitdrive()
теперь понимает пути к устройствам DOS с UNC-ссылками (начало\\?\UNC\
). Внесено Барни Гейлом.gh-91760: Применяются более строгие правила для числовых ссылок на группы и имен групп в регулярных выражениях. Теперь в качестве числовой ссылки принимается только последовательность ASCII-цифр. Имя группы в байтовых шаблонах и строках замены теперь может содержать только буквы и цифры ASCII и знак подчеркивания.
gh-90622: Рабочие процессы для
concurrent.futures.ProcessPoolExecutor
больше не порождаются по требованию (функция, добавленная в 3.9), когда метод запуска многопроцессорного контекста равен"fork"
, так как это может привести к тупиковым ситуациям в дочерних процессах из-за того, что во время работы потоков произойдет форк.gh-91577: Переместите импорты в методах
SharedMemory
на уровень модуля, чтобы они могли выполняться на поздних этапах финализации python.gh-91581: Устраните необработанный случай ошибки в реализации на C при вызове
datetime.fromtimestamp
без указания часового пояса (т. е. при получении локального времени из временной метки эпохи). Это не должно иметь никакого эффекта для пользователя, кроме как дать, возможно, более точное сообщение об ошибке при вызове с временными метками, которые попадают на 10000-01-01 по местному времени. Исправление Пола Гансла.gh-91539: Улучшение производительности
urllib.request.getproxies_environment
при наличии большого количества переменных окруженияgh-91524: Ускоряет подстановку регулярных выражений (функции
re.sub()
иre.subn()
и соответствующие методыre.Pattern
) для подстановки строк, содержащих групповые ссылки, в 2–3 раза.gh-91447: Исправьте findtext в модуле xml, чтобы он выдавал пустую строку только в том случае, если атрибут text имеет значение
None
.gh-91456: Отменяем текущее поведение auto() по умолчанию: В 3.13 по умолчанию auto() будет всегда возвращать наибольшее значение члена, увеличенное на 1, и вызывать ошибку, если используются несовместимые типы значений.
bpo-47231: Исправлена проблема с непоследовательными слешами в каталогах длинных имен tarfile.
bpo-39064:
zipfile.ZipFile
теперь поднимаетzipfile.BadZipFile
вместоValueError
при чтении поврежденного zip-файла, в котором смещение центрального каталога отрицательно.bpo-41287: Исправьте обработку аргумента
doc
в подклассахproperty()
.gh-90005:
ctypes
зависимостьlibffi
теперь определяется с помощьюpkg-config
.bpo-32547: Конструкторы для
DictWriter
иDictReader
теперь коэрцитируют аргументfieldnames
вlist
, если он является итератором.bpo-35540: Исправление сбоя
dataclasses.asdict()
при наличииcollections.defaultdict
в атрибутах.bpo-47063: Добавьте параметр index_pages для поддержки использования нестандартных имен страниц индекса.
bpo-46951: Упорядочивает содержимое архивов zipapp, чтобы сделать сборки более воспроизводимыми.
bpo-42777: Реализуйте
pathlib.Path.is_mount()
для путей Windows.bpo-46755: В
QueueHandler
очиститеstack_info
отLogRecord
, чтобы трассировка стека не была записана дважды.bpo-45393: Исправьте форматирование для
await x
иnot x
в таблице старшинства операторов при использовании системыhelp()
.bpo-46642: Улучшено сообщение об ошибке при попытке подклассифицировать экземпляр
typing.TypeVar
,typing.ParamSpec
,typing.TypeVarTuple
и т. д. Основано на исправлении Грегори Борегара.bpo-46364: Ограничьте использование сокетов вместо труб для stdin подпроцессов, созданных
asyncio
, только для платформы AIX.bpo-28249: Установите
doctest.DocTest.lineno
вNone
, если у объекта нет__doc__
.bpo-46197: Исправьте изоляцию окружения
ensurepip
для подпроцесса, запущенногоpip
.bpo-45924: Исправление
asyncio
неправильного возврата трассировки, когда исключение future’s поднималось несколько раз. Исправление Кумара Адитьи.bpo-45046: Добавьте поддержку менеджеров контекста в
unittest
: методыenterContext()
иenterClassContext()
классаTestCase
, методenterAsyncContext()
классаIsolatedAsyncioTestCase
и функциюunittest.enterModuleContext()
.bpo-44173: Включить быстрый поиск несжатого незашифрованного
zipfile.ZipExtFile
bpo-42627: Исправление некорректного разбора настроек прокси в реестре Windows
bpo-42047: Добавьте
threading.get_native_id()
поддержку DragonFly BSD. Исправление от Дэвида Карлье.bpo-14243: В функции
tempfile.NamedTemporaryFile
появился новый необязательный параметр delete_on_close.bpo-41246: Дайте ту же функцию обратного вызова, когда операция перекрытия выполняется для функций
recv
,recv_into
,recvfrom
,sendto
,send
иsendfile
внутриIocpProactor
.bpo-39264: Исправлено
collections.UserDict.get()
, чтобы не вызывать__missing__()
, когда значение не найдено. Это соответствует поведениюdict
. Исправление от Bar Harel.bpo-38693:
importlib
теперь внутренне использует f-строки вместоstr.format
.bpo-38267: Добавьте параметр timeout к
asyncio.loop.shutdown_default_executor()
. Значение по умолчанию -None
, что означает, что исполнителю будет предоставлено неограниченное количество времени. При вызове изasyncio.Runner
илиasyncio.run()
таймаут по умолчанию равен 5 минутам.bpo-34828:
sqlite3.Connection.iterdump()
теперь работает с базами данных, использующимиAUTOINCREMENT
в одной или нескольких таблицах.bpo-32990: Поддержка чтения волновых файлов с форматом
WAVE_FORMAT_EXTENSIBLE
в модулеwave
.bpo-26253: Разрешить настраиваемый уровень сжатия для потоков tarfile в
tarfile.open()
.
Документация¶
gh-85525: Удалить лишний ряд
gh-86404: Устаревшие инструменты
make suspicious
иrstlint.py
теперь удалены. Они были заменены на sphinx-lint.gh-97741: Исправьте
!
в синтаксисе целевых ссылок домена c помощью патчаconf.py
, чтобы отключение разрешения целевых ссылок работало как положено.gh-96432: Дробные литералы теперь поддерживают пробелы вокруг прямой косой черты,
Fraction('2 / 3')
.gh-96098: Улучшение открываемости высокоуровневого модуля concurrent.futures путем предоставления более четких ссылок из низкоуровневых модулей threading и multiprocessing.
gh-95957: Что нового В версии 3.11 появились инструкции по предоставлению флагов компилятора и компоновщика для Tcl/Tk и OpenSSL на RHEL 7 и CentOS 7.
gh-95588: Уточнены противоречивые рекомендации, данные в документации к
ast
, о том, чтоast.literal_eval()
«безопасен» для использования на недоверенных входных данных, и в то же время предупреждение о том, что он может привести к краху процесса. Последнее утверждение верно и считается неисправимым без большого объема работы, не подходящей для исправления ошибок. Поэтому мы сохраняем предупреждение и больше не утверждаем, чтоliteral_eval
безопасен.gh-91207: Исправление неработающей таблицы стилей в документах Windows CHM htmlhelp и добавление предупреждения о том, что они устарели. Внесено C.A.M. Герлахом.
gh-95454: Заменены неправильно написанные значения true/false в документации. Исправление Роберта О’Ши
gh-95451: Обновление документации по библиотеке с availability information на платформах WebAssembly
wasm32-emscripten
иwasm32-wasi
.gh-95415: Используйте согласованный синтаксис для определения доступности платформы. Теперь директива поддерживает тело содержимого и выдает предупреждение, если встречает неизвестную платформу.
gh-94321: Документируйте тип протокола в стиле PEP 246
sqlite3.PrepareProtocol
.gh-86128: Документируйте ограничение в ThreadPoolExecutor, когда его обработчик выхода выполняется раньше всех обработчиков в atexit.
gh-61162: Уточните поведение
sqlite3
, когда Как использовать менеджер контекста соединения.gh-87260: Приведите спецификации аргументов
sqlite3
в соответствие с реальной реализацией.gh-86986: Минимальная версия Sphinx, необходимая для создания документации, теперь составляет 3.2.
gh-88831: Дополнена документация по asyncio.create_task(). Уточнена необходимость сохранять сильные ссылки на задачи и добавлен фрагмент кода, показывающий, как это сделать.
gh-86438: Уточните, что
-W
иPYTHONWARNINGS
вwarnings
сопоставляются буквально и без учета регистра, а не как регулярные выражения.gh-93031: Обновите вывод введения учебника, чтобы использовать 3.10+ SyntaxError invalid range.
gh-92240: Добавлены даты выхода «Что нового в Python 3.X» для 3.0, 3.1, 3.2, 3.8 и 3.10
bpo-47161: Документ показывает, что
pathlib.PurePath
не сворачивает начальные двойные слэши, поскольку они обозначают пути UNC.bpo-40838: Документ о том, что
inspect.getdoc()
,inspect.getmodule()
иinspect.getsourcefile()
могут вернутьNone
.bpo-43689: В документации к
Differ
теперь упоминаются и другие пробельные символы, что усложняет понимание вывода diff.bpo-38056: Переработайте документацию Обработчики ошибок в
codecs
.bpo-13553: Документ tkinter.Tk args.
Тесты¶
gh-95027: В Windows при запуске тестового пакета Python с опцией
-jN
в качестве кодировки временного файла stdout теперь используется кодовая страница ANSI, а не UTF-8, что может привести к ошибкам декодирования. Исправление Виктора Стиннера.gh-96624: Исправлен сбой повторных запусков
test.test_unittest
, вызванный побочными эффектами вtest_dotted_but_module_not_loaded
.gh-95243: Устранение состояния гонки, присущего использованию find_unused_port() в testSockName(), путем попытки найти неиспользуемый порт несколько раз, прежде чем произойдет сбой. Исправление Росса Бартона.
gh-95573: Lib/test/test_asyncio/test_ssl.py выявил ошибку в ядре macOS, когда интенсивная одновременная нагрузка на неблокирующие сокеты иногда приводит к выдаче сообщения
errno.ENOBUFS
(«Нет свободного места в буфере»). FB11063974 подано в Apple, а тем временем в качестве обходного пути размер буфера, используемого в тестах на macOS, уменьшен, чтобы избежать периодических сбоев. Исправление от Fantix King.gh-95280: Исправление проблемы с
test_ssl
test_get_ciphers
в системах, требующих шифров с идеальной прямой секретностью (PFS).gh-95212: Сделайте многопроцессорный тестовый пример
test_shared_memory_recreate
параллельно безопасным.gh-95218: Переместите тесты для importlib.resources в test_importlib.resources.
gh-93963: Обновлены тесты, чтобы использовать предпочтительное местоположение для
importlib.resources
. Азбука.gh-94675: Добавьте регрессионный тест на экспоненциальное замедление
re
при использовании rjsmin.gh-91330: Добавлены дополнительные тесты для
dataclasses
, чтобы охватить поведение с полями на основе дескрипторов данных.gh-94208:
test_ssl
теперь проверяет поддерживаемые версии и протоколы TLS в большем количестве тестов.gh-94315: Тесты теперь проверяют возможность переопределения ЦАП вместо того, чтобы полагаться на
os.geteuid()
.gh-54781: Переименуйте test_tk в test_tkinter и переименуйте test_ttk_guionly в test_ttk. Исправление Виктора Стиннера.
gh-93839: Переместите
Lib/ctypes/test/
вLib/test/test_ctypes/
. Исправление Виктора Стиннера.gh-93951: В test_bdb.StateTestCase.test_skip избегайте включения вспомогательных импортеров.
gh-93957: Обеспечьте более приятный отчет об ошибках от подпроцессов в test_venv.EnsurePipTest.test_with_pip.
gh-93884: Добавьте тестовые случаи для
PyNumber_ToBase()
, которые принимают в качестве параметра большое число или неинтовый объект.gh-93852: test_asyncio, test_logging, test_socket и test_socketserver теперь создают домены AF_UNIX в текущем каталоге и больше не выдают ошибку
OSError("AF_UNIX path too long")
, если временный каталог (переменная окруженияTMPDIR
) слишком длинный. Исправление Виктора Стиннера.gh-93353: regrtest теперь проверяет, не сливает ли тест временные файлы или каталоги, если он запущен с опцией -jN. Исправление Виктора Стиннера.
gh-84461:
run_tests.py
теперь корректно обрабатывает кросс-компилируемые env-вары и передаетHOSTRUNNER
в регрессионные тесты.gh-93616:
test_modulefinder
теперь создает временный каталог вModuleFinderTest.setUp()
вместо области видимости модуля.gh-93575: Исправление проблемы с test_unicode test_raiseMemError. Теперь в тестовом примере используется
test.support.calcobjsize
для вычисления размера PyUnicode-структур.sys.getsizeof()
может возвращать другой размер, если строка имеет память UTF-8.gh-90473: У WASI нет системного вызова
chmod(2)
.os.chmod()
теперь является фиктивной функцией на WASI. Пропустите все тесты, зависящие от работыos.chmod()
.gh-90473: Пропускайте тесты на WASI, требующие симлинков с абсолютными путями.
gh-57539: Увеличьте покрытие календарных тестов для
calendar.LocaleTextCalendar.formatweekday()
.gh-90473: Пропускать проверку симлинков в WASI. wasmtime использует
openat2(2)
с флагомRESOLVE_BENEATH
, который предотвращает симлинки с абсолютными путями.gh-89858: Исправление
test_embed
для сборок без дерева. Исправление от Kumar Aditya.gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (
-O
) вtest_imaplib.py
.gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (
-O
) вtest_zipimport.py
gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (
-O
) вtest_py_compile.py
gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (
-O
) вtest_sys_settrace.py
.gh-92886: Исправление тестов, которые не работают при запуске с оптимизацией (
-O
) в_test_multiprocessing.py
gh-92670: Пропустите тест
test_shutil.TestCopy.test_copyfile_nonexistent_dir
на AIX, так как тест использует косую черту, чтобы заставить ОС рассматривать путь как каталог, но на AIX косая черта не имеет эффекта и рассматривается как файл.gh-92514: Удалите неиспользуемые
test.support.BasicTestRunner
. Исправление от Jelle Zijlstra.bpo-47016: Создание рабочего процесса GitHub Actions для проверки поставляемых pip и setuptools. Исправление Илии Волочии и Адама Тернера.
Построить¶
gh-96761: Исправьте процесс сборки компилятора clang для _bootstrap_python, если применяется оптимизация LTO. Исправление от Маттиаса Гёргенса и Донгхи На.
gh-96883: Сборки
wasm32-emscripten
для браузеров теперь включаютconcurrent.futures
дляasyncio
иunittest.mock
.gh-85936: CPython теперь использует опцию ThinLTO в качестве политики по умолчанию, если компилятор Clang принимает этот флаг. Исправление от Donghee Na.
gh-96729: Убедитесь, что выпуски Windows, созданные с помощью
Tools\msi\buildrelease.bat
, могут обновляться до официальных выпусков Python и обратно.gh-96269: Цели общих модулей теперь зависят от новой переменной
MODULE_DEPS
, которая включает в себяEXPORTSYMS
. Это исправляет проблему с порядком сборки на неподдерживаемой платформе AIX.gh-84461: Платформа
wasm32-emscripten
больше не собирает модульresource
,getresuid()
,getresgid()
и их сеттеры. Эти API являются заглушками и не являются функциональными.gh-95973: Добавьте новую опцию конфигурации
--with-dsymutil
, чтобы связать отладочную информацию в macOS. Исправление от Пабло Галиндо.gh-90536: Используйте оптимизатор BOLT post-link для повышения производительности, особенно в средних и крупных приложениях.
gh-93744: Уберите опцию сборки
configure --with-cxx-main
: она не работала в течение многих лет. Удалите переменнуюMAINCC
изconfigure
иMakefile
. Исправление Виктора Стиннера.gh-94801: Исправление регрессии в скрипте
configure
, из-за которой некоторые проверки заголовков игнорировали пользовательскиеCPPFLAGS
. Регрессия была внесена в gh-94802.gh-95145: сборки wasm32-wasi больше не зависят от заглушек pthread от WASIX. Теперь у Python есть свой собственный заглушенный pthread API.
gh-95174: Python теперь обнаруживает отсутствие функции
dup
в WASI и обходит некоторые отсутствующие константыerrno
,select
иsocket
.gh-95174: Python теперь пропускает недостающие
socket
функции и методы на WASI. WASI может создавать сокеты только из существующих fd / accept и не имеет netdb.gh-95085: Платформы
wasm32-unknown-emscripten
иwasm32-unknown-wasi
были переведены в категорию PEP 11 с поддержкой платформы третьего уровня.gh-94847: Исправлена проблема сборки модуля
_decimal
на GCC при компиляции с LTO и pydebug. Отладочные сборки больше не заставляют инлайнить функции.gh-94841: Исправление возможного снижения производительности
PyObject_Free()
, скомпилированного с MSVC версии 1932.gh-94801:
configure
теперь использует пользовательские флагиZLIB_CFLAGS
иZLIB_LIBS
при поиске заголовков и библиотек.gh-94773:
deepfreeze.py
теперь поддерживает объекты кода с фростенсетами, содержащими несовместимые несортируемые типы.gh-94682: Сборка и тестирование с OpenSSL 1.1.1q
gh-90005: Зависимости модулей
readline
иcurses
теперь обнаруживаются в скриптеconfigure
сpkg-config
. Толькоncurses
/ncursesw
определяются автоматически. Старая библиотекаcurses
не конфигурируется автоматически. Обходной путь для отсутствующей библиотекиtermcap
илиtinfo
был удален.gh-90005: Исправьте сборку расширения
_ctypes
безpkg-config
.gh-90005:
_dbm
зависимости модулей теперь определяются configure.gh-94404:
makesetup
теперь обходит проблему с sed на macOS и использует корректные CFLAGS для объектных файлов, которые оказываются в общем расширении. CFLAGS модуля используются перед PY_STDMODULE_CFLAGS, чтобы избежать столкновений с системными заголовками.gh-93939: Модули расширения C теперь собираются с помощью
configure
иmake
вместоdistutils
иsetup.py
.gh-93939: Скрипты
2to3
,idle
иpydoc
теперь генерируются и устанавливаютсяMakefile
, а неsetup.py
.gh-94280: Обновлен скрипт pegen regeneration под Windows, чтобы найти и использовать Python 3.9 или выше. До этого регенерация pegen уже требовала 3.9 или выше, но скрипт мог использовать более низкие версии Python.
gh-93584: Устранение состояния гонки в
Makefile
при установке сборки PGO. Все целиtest
иinstall
теперь зависят от целиall
.gh-93491:
configure
теперь обнаруживает и сообщает об уровнях поддержки PEP 11.gh-69093: Исправьте правило
Modules/Setup.stdlib.in
для расширения_sqlite3
.gh-93207:
va_start()
с двумя параметрами, как иva_start(args, format),
, теперь требуется для сборки Python.va_start()
больше не вызывается с одним параметром. Исправление Кумара Адитьи.gh-93202: Теперь Python всегда использует форматы
%zu
и%zd
printf для форматирования чиселsize_t
илиPy_ssize_t
. Сборка Python 3.12 требует компилятора C11, поэтому эти форматы printf теперь всегда поддерживаются. Исправление подготовлено Виктором Стиннером.gh-90473: Отключите pymalloc и увеличьте размер стека на
wasm32-wasi
.bpo-34449: Убрать недопустимый ключ компилятора
-fPIC
для HP aCC на HP-UX. Исправление от Михаила Осипова.
Windows¶
gh-98360: Исправляет
multiprocessing
, порождающий дочерние процессы в Windows из виртуальной среды, чтобы дочерние процессы, которые также используютmultiprocessing
для порождения большего числа дочерних процессов, распознавали, что они находятся в виртуальной среде.gh-98414: Исправлена работа
py.exe
пусковой установки с опцией-V:<company>/
, когда предпочтения по умолчанию были заданы в переменных окружения или конфигурационных файлах.gh-97728: Исправление возможных сбоев, вызванных использованием неинициализированных переменных при передаче недопустимых аргументов в
os.system()
под Windows и в Windows-специфичных модулях (например,winreg
).gh-90989: Сделали Python Launcher для Windows установку для каждого пользователя по умолчанию (если только установка для всех пользователей уже не существует), а также уточнили некоторые тексты в программе установки.
gh-97649: Каталог
Tools
больше не установлен в Windowsgh-96965: Обновление libffi до версии 3.4.3
gh-96577: Исправляет потенциальный выход за пределы буфера в
msilib
.gh-96559: Исправление того, что программа запуска Windows не использовала совместимую интерпретацию стандартных тегов, найденных в файлах конфигурации, когда команде не передавался ни один тег.
gh-94781: Исправление
pcbuild.proj
для очистки предыдущих экземпляров выходных файлов в каталогахPython\deepfreeze
иPython\frozen_modules
под Windows. Исправление от Чарли Чжао.gh-89545: Обновляет код
platform
, получающий версию Windows, чтобы использовать собственные запросы Windows Management Instrumentation (WMI) для определения версии, типа и архитектуры ОС.gh-95733: Сделайте некоторые требования пакета Windows Store необязательными для установки на более ранние обновления Windows.
gh-95656: Включить
enable_load_extension()
sqlite3
API.gh-95587: Исправлены некоторые проблемы, из-за которых программа установки Windows неправильно определяла некоторые особенности существующей установки при обновлении.
gh-94399: Восстанавливает поведение Python Launcher для Windows для строк
/usr/bin/env
shebang, которые теперь будут искатьPATH
для исполняемого файла, соответствующего заданной команде. Если таковой не найден, используется обычный процесс поиска.gh-95445: Исправлено неудачное удаление каталога HTML-документов при деинсталляции с помощью Windows msi.
gh-95359: Исправлена работа Python Launcher для Windows с командами
py.ini
(он неправильно ожидал префиксpy_
в ключах) и сбои при чтении конфигурационного файла для каждого пользователя.gh-95285: Исправление Python Launcher для Windows обработки командных строк, в которых передается только короткое имя исполняемого файла.
gh-90844: Разрешить корректный запуск виртуальных сред при наличии пробелов в пути.
gh-94772: Исправление некорректной обработки строк shebang в программе запуска py.exe
gh-94018:
zipfile
теперь будет удалять пробелы в конце пути при извлечении файлов в Windows.gh-93824: Перетаскивание файлов на файлы Python в проводнике Windows было включено для Windows ARM64.
gh-43414:
os.get_terminal_size()
теперь пытается прочитать размер из любого предоставленного дескриптора, а не только поддерживает файловые дескрипторы 0, 1 и 2.gh-92817: Гарантирует, что
py.exe
будет отдавать предпочтение активной виртуальной среде, а не меткам по умолчанию, заданным с помощью переменных окружения или через файлpy.ini
.gh-92984: Явное отключение инкрементальной линковки для сборок, не относящихся к отладке
gh-92841:
asyncio
больше не бросаетRuntimeError: Event loop is closed
при выходе из интерпретатора после асинхронной работы с сокетом. Исправление Олега Ярыгина.bpo-46907: Обновление программы установки Windows для использования SQLite 3.38.4.
gh-91061: Примите os.PathLike в качестве аргумента для winsound.PlaySound
bpo-42658: Поддерживайте нечувствительное к регистру сравнение путей в Windows, используя
LCMapStringEx
вместоstr.lower()
вntpath.normcase()
. ДобавьтеLCMapStringEx
в модуль_winapi
.bpo-38704: Предотвращение установки на неподдерживаемые версии Windows.
macOS¶
gh-97897: В macOS 13 SDK включена поддержка системных вызовов
mkfifoat
иmknodat
. Использование опцииdir_fd
сos.mkfifo()
илиos.mknod()
может привести к ошибке сегфайта, если cpython собран с помощью macOS 13 SDK, но запущен на более ранней версии macOS. Чтобы предотвратить это, добавьте поддержку обнаружения этих системных вызовов во время выполнения («weaklinking»), как это сделано для других более новых системных вызовов в macOS.
IDLE¶
gh-97527: Исправление ошибки в предыдущем исправлении, из-за которой IDLE не запускался при запуске с 3.10.8, 3.12.0a1 и, по крайней мере, Microsoft Python 3.10.2288.0, установленным без пакета Lib/test. На 3.11.0 это никак не повлияло.
gh-65802: Обработка расширений в диалоговых окнах Save As.
gh-95191: Включать подсказки при сохранении Shell (интерактивный ввод и вывод).
gh-95511: Исправлена ошибка копирования лишней строки в контекстном меню Shell при выделении целых строк.
gh-95471: В меню «Правка» переместите
Select All
и добавьте новый разделитель.gh-95411: Включите использование браузера модулей IDLE с файлами .pyw.
gh-89610: Добавьте .pyi в качестве распознаваемого расширения для IDLE на macOS. Это позволит открывать файлы-заглушки двойным щелчком на них в Finder.
Инструменты/демоверсии¶
gh-68686: Удалите скрипты ptags и eptags.
gh-97681: Удалите каталог
Tools/demo/
, содержавший старые демо-скрипты. Копию можно найти в каталоге old-demos project. Исправление от Виктора Стиннера.gh-97669: Удалите устаревшие примеры скриптов из каталога
Tools/scripts/
. Копию можно найти в каталоге old-demos project. Исправление от Виктора Стиннера.gh-95853: Скрипт
wasm_build.py
теперь предварительно собирает порты Emscripten, проверяет наличие неработающих версий EMSDK и предупреждает о параметрах pkg-config env.gh-95853: Новый инструмент
Tools/wasm/wasm_builder.py
автоматизирует этапы конфигурирования, компиляции и тестирования для сборки CPython на платформах WebAssembly.gh-95731: Исправлена работа с докстрингами модулей в
Tools/i18n/pygettext.py
.gh-93939: Добавьте скрипт
Tools/scripts/check_modules.py
для проверки и валидации встроенных и общих модулей расширения. Этот скрипт также работает сModules/Setup
и со временем заменитsetup.py
.gh-94538: Исправление вывода клиники аргументов в пользовательские места назначения файлов. Исправление Эрленда Э. Аасланда.
gh-94430: Разрешить параметры с именами
module
иself
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-86087: Скрипт
Tools/scripts/parseentities.py
, использовавшийся для разбора сущностей HTML4, был удален.
C API¶
gh-98393: Разрешить параметры с именами
PyUnicode_FSDecoder()
иbytearray
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91051: Разрешить параметры с именами
PyType_Watch()
иPyType_Modified()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-95756: Ленивое создание и кэширование атрибутов
co_
для повышения производительности геттеров кода.gh-96512: Конфигурация для integer string conversion length limitation теперь находится в структуре PyConfig C API.
gh-95589: Разрешить параметры с именами
tp_dictoffset
иtp_weaklistoffset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-95781: Разрешить параметры с именами
PyUnicode_FromFormat()
иPyUnicode_FromFormatV()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92678: Восстановление поведения 3.10 для множественного наследования классов расширения C, которые хранят свой словарь в конце структуры.
gh-92678: Поддерживайте расширения C, использующие управляемые словари, установив флаг
Py_TPFLAGS_MANAGED_DICT
.gh-93274: Разрешить параметры с именами
Py_TPFLAGS_HAVE_VECTORCALL
иPyVectorcall_NARGS()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-95504: Разрешить параметры с именами
PyUnicode_FromFormat()
иPyUnicode_FromFormatV()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-93012: Разрешить параметры с именами
Py_TPFLAGS_HAVE_VECTORCALL
и__call__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-95388: Создание
immutable types
с мутабельными основаниями устарело и планируется к отключению в Python 3.14.gh-92678: Разрешить параметры с именами
_PyObject_VisitManagedDict
и_PyObject_ClearManagedDict
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-94936: Разрешить параметры с именами
PyCode_GetVarnames()
иPyCode_GetCellvars()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-94930: Разрешить параметры с именами
SystemError
иPyArg_ParseTupleAndKeywords()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-94731: Разрешить параметры с именами
-Wold-style-cast
и-Wzero-as-null-pointer-constant
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-93937: Разрешить параметры с именами
#include <Python.h>
и#include <frameobject.h>
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПатч Виктора Стиннера.
gh-91321: Исправление совместимости Python C API с C++ старше C++11. Исправление от Виктора Стиннера.
gh-91731: Избегайте определения
static_assert
при компиляции с C++ 11, где это ключевое слово и его переопределение может привести к неопределенному поведению. Исправление от Pablo Galindogh-89546: Разрешить параметры с именами
PyType_FromMetaclass()
иPyType_From*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-93503: Разрешить параметры с именами
PyEval_SetProfileAllThreads()
иPyEval_SetTraceAllThreads()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-93442: Добавьте перегрузки C++ для _Py_CAST_impl() для обработки 0/NULL. Это позволит расширениям C++, передающим 0 или NULL макросам, использующим _Py_CAST(), продолжать компилироваться.
gh-93466: Идентификаторы слотов в PyType_Spec не могут повторяться. Документация была обновлена, чтобы упомянуть об этом. В некоторых случаях, когда слоты повторяются, PyType_FromSpec и связанные с ней функции теперь будут вызывать исключение.
gh-92898: Исправление предупреждений компилятора C++ при приведении аргументов функции к
PyObject*
. Исправление Сержа Гельтона.gh-93103: Разрешить параметры с именами
Py_IgnoreEnvironmentFlag
иPy_InitializeFromConfig()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-77782: Разрешить параметры с именами
Py_IgnoreEnvironmentFlag
иPy_InitializeFromConfig()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92913: Разрешить параметры с именами
PyConfig.module_search_paths
иPyConfig.module_search_paths_set
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92781: Избегайте смешивания деклараций и кода в C API, чтобы исправить предупреждение компилятора: «ISO C90 запрещает смешивать декларации и код» [-Werror=declaration-after-statement]. Исправление Виктора Стиннера.
gh-92651: Разрешить параметры с именами
token.h
иtoken.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92536: Удалите устаревшие API Unicode, основанные на
Py_UNICODE*
.gh-85858: Разрешить параметры с именами
PyUnicode_InternImmortal()
иSSTATE_INTERNED_IMMORTAL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92193: Разрешить параметры с именами
PyFunction_SetVectorcall()
иPyFunctionObject
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаВнимание: расширения, использующие этот API, должны сохранять поведение неизмененной функции!
gh-59121: Исправлено утверждение, из-за которого
PyRun_InteractiveOne
не предоставлял трассировки при разборе из предоставленного FD.bpo-45383:
PyType_FromSpec()
API теперь будет находить и использовать метакласс на основе предоставленных баз. При конфликте метаклассов будет выдана ошибка.
Python 3.11.0 beta 1¶
Дата выхода: 2022-05-06
Безопасность¶
gh-57684: Разрешить параметры с именами
-P
иPYTHONSAFEPATH
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
gh-89519: Цепочка дескрипторов classmethod (введенная в bpo-19072) устарела. Его больше нельзя использовать для обертывания других дескрипторов, таких как property(). Основной дизайн этой функции был ошибочным, и она вызвала ряд последующих проблем.
gh-92345: Разрешить параметры с именами
pymain_run_python()
иreadline
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43857: Улучшение сообщения
AttributeError
при удалении отсутствующего атрибута. Исправление от Géry Ogam.gh-92245: Убедитесь, что PEP 523 соблюдается во всех случаях. В версии 3.11a7 специализация могла помешать вызовам Python-to-Python соблюдать PEP 523.
gh-92203: Разрешить параметры с именами
exec()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91173: Отключение замороженных модулей в отладочных сборках. Исправление от Kumar Aditya.
gh-92114: Разрешить параметры с именами
__class_getitem__
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92112: Исправление сбоя, вызванного злым пользовательским
mro()
в метаклассе.gh-92063: Инструкция
PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS
теперь гарантирует, что методы будут вызываться только на объектах правильного типа.gh-92031: Разрешить параметры с именами
Py_FINALIZE()
и_PyCode_Quicken
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92036: Исправление сбоя в субинтерпретаторах, связанного со сборщиком мусора. При удалении субинтерпретатора необходимо отследить все объекты, отслеживаемые его GC. Чтобы предотвратить падение функций деаллокатора, ожидающих объекты, отслеживаемые GC, специально передавайте сильную ссылку на эти объекты, чтобы они никогда не удалялись и их функции деаллокатора не вызывались. Исправление Виктора Стиннера.
gh-92032: Разрешить параметры с именами
match
иcase
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-87999: Предупреждение, выдаваемое парсером Python для числового литерала, за которым сразу следует ключевое слово, было изменено с предупреждения об устаревании на предупреждение о синтаксисе.
gh-91869: Исправление проблемы, когда специализированные опкоды с расширенными аргументами могли выдавать некорректный вывод трассировки или приводить к сбоям в утверждениях.
gh-91603: Ускорение инстанцирования
types.UnionType
. Основано на патче, предоставленном Юрием Карабасом.gh-89373: Если Python собран в режиме отладки, то теперь Python гарантирует, что функции деаллокатора оставят текущее исключение без изменений. Исправление Виктора Стиннера.
gh-91632: Исправьте незначительную утечку памяти при выходе: освободите память типа
generic_alias_iterator
. Исправление от Donghee Na.gh-81548: Разрешить параметры с именами
0o377
иDeprecationWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43950: Используйте одну компактную таблицу для начала, конца строк и смещения столбцов. Сокращает потребление памяти для информации о местоположении в два раза
gh-91102: Используйте клинику аргументов для
EncodingMap
. Патч от Олега Иарыгина.gh-91636: Исправлен сбой в краевом случае сбора мусора, когда функция
PyFunction_Type.tp_clear
могла оставить объект функции python в несогласованном состоянии.gh-91603: Разрешить параметры с именами
isinstance()
иissubclass()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91625: Исправлена ошибка, при которой адаптивные опкоды игнорировали все предшествующие
EXTENDED_ARG
s при сбое специализации.gh-78607: Разрешить параметры с именами
__lltrace__
и__ltrace__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91576: Ускорение итерации строк ascii на 50%. Исправление Кумара Адитьи.
gh-89279: Улучшение производительности интерпретатора под Windows за счет инлайнинга нескольких специфических макросов.
gh-91502: Разрешить параметры с именами
_PyFrame_IsEntryFrame()
иPyFrameObject
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91266: Разрешить параметры с именами
bytearray
иstrip
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91479: Разрешить параметры с именами
__note__
иBaseException
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-46055: Ускоряет сдвиг вправо отрицательных целых чисел, удаляя ненужное создание временных элементов. Оригинальный патч Xinhang Xu, переработанный Марком Дикинсоном.
gh-91462: Сделать вывод функции низкоуровневой трассировки интерпретатора (lltrace) более читабельным, отображая имена опкодов (а не просто цифры) и выводя содержимое стека перед каждым опкодом.
gh-89455: Исправлено неинициализированное значение bool в пути кода печати трассировки, которое появлялось при работе начальных групп исключений bpo-45292.
gh-91421: Исправление потенциального целочисленного переполнения в _Py_DecodeUTF8Ex.
gh-91428: Разрешить параметры с именами
static const char *const _PyOpcode_OpName[256] = {...};
иopcode.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47120: Разрешить параметры с именами
POP_JUMP_IF_TRUE
иPOP_JUMP_IF_FALSE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45317: Добавьте внутреннюю документацию, объясняющую дизайн нового (для 3.11) стека фреймов.
bpo-47197: Разрешить параметры с именами
void
иctypes.CFUNCTYPE(None, ctypes.c_int)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47120: Разрешить параметры с именами
JUMP_IF_TRUE_OR_POP
иJUMP_IF_FALSE_OR_POP
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47177: Разрешить параметры с именами
f_lasti
и_PyInterpreterFrame
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46961: Целочисленные операции mod/remainder, включая трехаргументную форму
pow()
, теперь последовательно возвращают ints из глобального малого целочисленного кэша, когда это применимо.bpo-46962: Классы и функции, которые безоговорочно объявляли свои документообороты, игнорируя флаг компиляции
--without-doc-strings
, больше не делают этого.ctypes.UnionType
: Разрешить параметры с именамиpickle.PickleBuffer
иtestcapi.RecursingInfinitelyError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаЗатронутыми функциями являются 24 метода в
ctypes
.Патч от Олега Иарыгина.
bpo-46942: Используйте Argument Clinic для конструктора
types.MethodType
. Исправление Олега Иарыгина.bpo-46764: Исправление обертывания связанных методов с помощью @classmethod
bpo-43464: Оптимизируйте
set.intersection()
для аргументов, не являющихся наборами.bpo-46721: Оптимизируйте
set.issuperset()
для аргумента без набора.bpo-46509: Разрешить параметры с именами
Py_DECREF()
иfloat
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46045: Не используйте семафоры POSIX в NetBSD
bpo-36819: Исправление сбоев во встроенных кодировщиках с обработчиками ошибок, возвращающими позицию, меньшую или равную начальной позиции некодируемых символов.
bpo-34093: Разрешить параметры с именами
marshal.dumps()
иFLAG_REF
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26579: Разрешить параметры с именами
object.__getstate__
и__getstate__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаКопирование и пикирование экземпляров подклассов встроенных типов bytearray, set, frozenset, collections.OrderedDict, collections.deque, weakref.WeakSet и datetime.tzinfo теперь копирует и пикирует атрибуты экземпляров, реализованные в виде слотов.
Библиотека¶
gh-87901: Добавьте параметр encoding в
os.popen()
.gh-90997: Устранение проблемы, при которой утилиты
dis
могли интерпретировать заполненные записи встроенного кэша как действительные инструкции.gh-92332: Deprecate
typing.Text
(удаление класса в настоящее время не планируется). Исправление от Алекса Уэйгуда.Отмените превращение вложенных классов в определениях перечислений в члены - в 3.13 они будут обычными классами; добавьте функции
member
иnonmember
, чтобы можно было контролировать результаты сейчас.gh-92356: Исправлено снижение производительности при вызове функции ctypes.
gh-90997: Разрешить параметры с именами
show_caches=True
иdis
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92301: Разрешить параметры с именами
close_range()
иsubprocess
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-67248: Сортировка различных тем в Cmd.do_help()
gh-92210: Порт
socket.__init__
в Argument Clinic. Исправление от Cinder.gh-80010: Разрешить параметры с именами
datetime.datetime.fromisoformat()
иdatetime.date.fromisoformat()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92118: Исправлена регрессия 3.11 в
contextmanager()
, которая приводила к распространению исключений с некорректной трассировкой.gh-90887: Разрешить параметры с именами
COPYFILE_STAT
иCOPYFILE_ACL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91215: Разрешить параметры с именами
@dataclass
иFalse
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-85984: Новая функция os.login_tty() для Unix.
gh-92128: Разрешить параметры с именами
__class_getitem__()
иlogging.LoggerAdapter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92049: Запретить травить константы
re._constants.SUCCESS
и т. д. Ранее маринование не приводило к сбою, но результат нельзя было распикировать.gh-92062: Разрешить параметры с именами
inspect.Parameter
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-87390: Разрешить параметры с именами
__unpacked__
иtypes.GenericAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-88089: Добавьте поддержку общих
typing.NamedTuple
.gh-91996: Новый перечислитель http.HTTPMethod для удобного представления всех доступных методов HTTP-запросов
gh-91984: Изменены тестовые строки в test_argparse.py, чтобы они не содержали пробелов перед концом строки.
gh-91952: Разрешить параметры с именами
encoding="locale"
иTextIOWrapper.reconfigure()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91954: Разрешить параметры с именами
subprocess.getoutput()
иsubprocess.getstatusoutput()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47029: Разрешить параметры с именами
multiprocessing.Queue
иBrokenPipeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91928: Разрешить параметры с именами
datetime.UTC
иdatetime.timezone.utc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПатч от Кабира Кватры.
gh-68966: Разрешить параметры с именами
mailcap
и PEP 594 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91401: Разрешить параметры с именами
subprocess
иvfork()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-64783: Разрешить параметры с именами
signal.NSIG
иsignal.SIGRTMIN
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91910: Разрешить параметры с именами
multiprocessing
иasyncio
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91860: Разрешить параметры с именами
typing.dataclass_transform()
и PEP 681 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91832: Разрешить параметры с именами
required
иargparse.Action
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91827: Разрешить параметры с именами
tkinter
иinfo_patchlevel()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-84461: Разрешить параметры с именами
--enable-wasm-pthreads
иEmscripten/node
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91821: Разрешить параметры с именами
test_from_tuple
иtest_decimal.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91217: Утратить модуль xdrlib.
gh-91217: Утратить модуль uu.
gh-91760: Для числовых ссылок на группы и имен групп в регулярных выражениях будут применяться более строгие правила. Пока что для групповых ссылок и групповых имен выдается предупреждение об устаревании, которое будет устранено в будущих версиях Python.
gh-84461: Добавьте предварительный
sys._emscripten_info
именованный кортеж с информацией о времени сборки и времени выполнения платформы Emscripten.gh-90623: Разрешить параметры с именами
signal.raise_signal()
иos.kill()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91734: Исправление поддержки звука OSS на Solaris.
gh-90633: Включите переданное значение в исключение, выбрасываемое
typing.assert_never()
. Исправление от Jelle Zijlstra.gh-91700: Разрешить параметры с именами
(?(group)...)
иre.error
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91231: Добавьте в конструктор
multiprocessing.BaseManager
необязательный ключевой параметр shutdown_timeout. Убивает процесс, если terminate() занимает больше времени, чем таймаут. Исправление Виктора Стиннера.gh-91621: Разрешить параметры с именами
typing.get_type_hints()
иcollections.abc.Callable
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-90568: Разрешить параметры с именами
\N
иregular expression
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91670: Разрешить параметры с именами
SO
иsysconfig
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91217: Утрачиваем модуль telnetlib.
gh-91217: Утратить модуль sunau.
gh-91217: Утрачиваем модуль spwd.
gh-91217: Утрачиваем модуль sndhdr, а также встраиваем необходимую функциональность для
email.mime.MIMEAudio
.gh-91616: Разрешить параметры с именами
re
иfullmatch()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91217: Утратить модуль „pipes“.
gh-91217: Утратить модуль ossaudiodev.
bpo-47256: Модуль
re
, ограничивающий максимальную группу захвата до 1 073 741 823 в 64-битной сборке, что увеличивает глубину обратного пути.gh-91217: Утратить модуль nis.
gh-91595: Исправьте сравнение символа и целого числа внутри
Tools.gdb.libpython.write_repr()
. Исправление от Yu Liu.gh-74166: Разрешить параметры с именами
create_connection()
иExceptionGroup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91487: Оптимизация скорости Asyncio UDP, более чем в 100 раз быстрее при передаче большого файла.
gh-91575: Обновите нечувствительное к регистру соответствие в модуле
re
до последней версии Unicode.gh-90622: Разрешить параметры с именами
concurrent.futures.process.ProcessPoolExecutor
иmax_tasks_per_child
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-89022: Разрешить параметры с именами
sqlite3
иSQLITE_MISUSE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91526: Разрешить параметры с именами
os.device_encoding(file.fileno())
иTextIOWrapper
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-88116: Разрешить параметры с именами
inspect
и PEP 657 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-69093: Добавьте поддержку индексирования и нарезки в
sqlite3.Blob
. Исправление Авива Паливоды и Эрленда Э. Аасланда.gh-69093: Разрешить параметры с именами context manager и
sqlite3.Blob
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91217: Deprecate nntplib.
gh-91217: Утратить msilib.
gh-91404: Повышение производительности сопоставления
re
за счет использования вычисляемых гото (или «потокового кода») на поддерживаемых платформах и удаления дорогостоящих перенаправлений указателей.gh-91217: Утратить модуль imghdr.
gh-91217: Утратить модуль crypt.
gh-91276: Освободите место для более длинных опкодов в выводе
dis
.bpo-47000: Разрешить параметры с именами
TextIOWrapper
иencoding="locale"
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91230: Разрешить параметры с именами
warnings.catch_warnings()
иwarnings.simplefilter()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91217: Утратить модуль chunk.
Добавьте параметр
TCP_CONNECTION_INFO
(доступен на macOS) кsocket
.bpo-47260: Исправление
os.closerange()
, потенциально не позволяющего работать в песочнице Linux seccomp.bpo-47087: Разрешить параметры с именами
typing.Required
иtyping.NotRequired
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47061: Утратить cgi и cgitb.
bpo-47061: Deprecate audioop.
bpo-47000: Разрешить параметры с именами
locale.getencoding()
иlocale.getpreferredencoding(False)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42012: Добавьте
wsgiref.types
, содержащий специфические для WSGI типы для статической проверки типов.bpo-47227: Подавление цепочки выражений для большего числа ошибок разбора
re
.bpo-47211: Разрешить параметры с именами
re.template()
иre.TEMPLATE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47135:
decimal.localcontext()
теперь принимает атрибуты контекста через аргументы ключевых словbpo-43323: Исправление ошибок в модуле
email
, если сама кодовая сетка содержит недекодируемые/некодируемые символы.bpo-46841: Разборка ускоренного кода.
bpo-46681: Передайте уровень сжатия gzip.compress() в zlib.
bpo-45100: Разрешить параметры с именами
typing.get_overloads()
иtyping.clear_overloads()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44807: Разрешить параметры с именами
typing.Protocol
и__init__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46787: Исправьте утечку памяти исключения
concurrent.futures.ProcessPoolExecutor
.bpo-46720: Добавьте поддержку объектов, похожих на пути, в
multiprocessing.set_executable()
, чтобы Windows была на одном уровне с Unix-подобными системами. Исправление от Géry Ogam.bpo-46696: Разрешить параметры с именами
SO_INCOMING_CPU
иsocket
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46053: Исправление поддержки звука OSS в NetBSD.
bpo-45639: Разрешить параметры с именами
image/avif
иimage/webp
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46285: Разрешить параметры с именами
-p
и--protocol
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44791: Примите многоточие в качестве последнего аргумента
typing.Concatenate
.bpo-46547: Удалите переменные, просачивающиеся в пространство имен класса
pydoc.Helper
.bpo-46415: Исправьте ipaddress.ip_{address,interface,network}, вызывающий TypeError вместо ValueError, если в качестве параметра адреса передан некорректный кортеж.
bpo-46075: Разрешить параметры с именами
CookieJar
иDefaultCookiePolicy
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45995: Добавьте опцию «z» в спецификацию форматирования строк, которая приводит отрицательные нулевые значения с плавающей точкой к положительным нулям после округления до точности формата. Внесено Джоном Белмонте.
bpo-26175: Разрешить параметры с именами
io.BufferedIOBase
иio.TextIOBase
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45138: Разрешить параметры с именами
sqlite3
и bpo-40318 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44863: Разрешить параметры с именами
TypedDict
иGeneric
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44587: Исправьте BooleanOptionalAction, чтобы он не добавлял автоматически строку по умолчанию. Если строка по умолчанию необходима, используйте форматер для ее добавления.
bpo-43827: Разрешить параметры с именами
ABCMeta.__new__
и__init_subclass__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43218: Предотвращает создание venv, путь которого содержит разделитель PATH. Это может повлиять на использование скрипта activate. Исправление Дастина Родригеса.
bpo-38435: Разрешить параметры с именами
process_group
иsubprocess.Popen
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42066: Разрешить параметры с именами
CookieJar.__iter__()
иCookieJar
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40617: Разрешить параметры с именами
create_window_function()
иsqlite3.Connection
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40676: Разрешить параметры с именами
csv
иcsv.field_size_limit()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39716: Разрешить параметры с именами
ArgumentError
иargparse.ArgumentParser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36073: Разрешить параметры с именами
ProgrammingError
иsqlite3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34975: Разрешить параметры с именами
start_tls()
иStreamWriter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22276: Разрешить параметры с именами
Path
иglob()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24905: Разрешить параметры с именами
blobopen()
иsqlite3.Connection
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
gh-91888: Добавьте в документацию новую роль
gh
для ссылки на проблемы GitHub.gh-91783: Документируйте вопросы безопасности, связанные с использованием функции
shutil.unpack_archive()
gh-91547: Удалите страницу «Недокументированные модули».
gh-91298: В
importlib.resources.abc
доработана документация по протоколу Traversable, применены изменения из importlib_resources 5.7.1.bpo-44347: Уточните значение dirs_exist_ok, kwarg из
shutil.copytree()
.bpo-36329: Удалите „make -C Doc serve“ в пользу „make -C Doc htmlview“.
bpo-47189: Добавьте запись «Что нового в Python 3.11» для проекта Faster CPython. Документация от Кена Джина и Кумара Адитьи.
bpo-38668: Разрешить параметры с именами
os.path
и PEP 383 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47115: В документации теперь указано, какие члены C-структур являются частью Limited API/Stable ABI.
bpo-46962: Разрешить параметры с именами
PyDoc_STR
и PEP 7’s Documentation Strings paragraph с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26792: Разрешить параметры с именами
runpy.run_module()
иrunpy.run_path()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Тесты¶
gh-92169: Используйте
warnings_helper.import_deprecated()
для равномерного импорта устаревших модулей в тестах. Исправление от Хьюго ван Кеменаде.gh-84461: Разрешить параметры с именами
sys.executable
и--python
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91904: Исправлена инициализация
PYTHONREGRTEST_UNICODE_GUARD
, которая не позволяла запускать регрессионные тесты на локали, отличной отUTF-8.gh-91752: Добавлена @requires_zlib в test.test_tools.test_freeze.TestFreeze.
gh-91607: Исправление
test_concurrent_futures
для проверки правильного контекста метода запуска многопроцессорной обработки в нескольких случаях, когда логика тестирования путала это.bpo-40280: Тесты на многопоточность теперь пропускаются на объектах WASM без поддержки pthread.
bpo-47109: Разрешить параметры с именами
ctypes.macholib.dyld
иctypes.macholib.dylib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29890: Разрешить параметры с именами
ipaddress.IPv4Interface
иipaddress.IPv6Interface
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
gh-89452: gdbm-compat теперь предпочтительнее, чем ndbm, если оба доступны в системе. Это позволяет обойтись без проблемного ndbm.h в macOS.
gh-91731: Разрешить параметры с именами
-std=c11
и-std=c99
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47152: Добавьте скрипт и сделайте цель для генерации
sre_constants.h
.bpo-47103: Сборки Windows
PGInstrument
теперь копируют необходимую DLL в выходной каталог, что упрощает запуск профильного этапа сборки PGO.
Windows¶
bpo-46907: Обновление программы установки Windows для использования SQLite 3.38.3.
bpo-47239: Исправлен вывод –list и –list-paths для Python Launcher для Windows при использовании в активной виртуальной среде.
bpo-46907: Обновление программы установки Windows для использования SQLite 3.38.2.
bpo-46785: Разрешить параметры с именами
os.stat()
иFindFirstFileW()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40859: Обновление сборки Windows для использования xz-5.2.5
macOS¶
bpo-46907: Обновите программу установки macOS до версии SQLite 3.38.4.
Инструменты/демоверсии¶
gh-91583: Исправление регрессии в коде, генерируемом Argument Clinic для функций с параметром
defining_class
.gh-91575: Разрешить параметры с именами
Tools/scripts/generate_re_casefix.py
иregen-re
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91551: Удалите древний редактор цветов Pynche. Он переехал на https://gitlab.com/warsaw/pynche.
C API¶
gh-88279: Разрешить параметры с именами
PySys_SetArgv()
иPySys_SetArgvEx()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92154: Разрешить параметры с именами
PyCode_GetCode()
иgetattr(code_object, 'co_code')
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-92173: Разрешить параметры с именами
closure
иPyEval_EvalCodeEx()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91320: Разрешить параметры с именами
g++ -Wold-style-cast
иreinterpret_cast<>
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-80527: Разрешить параметры с именами PEP 623 и
PyUnicode_AS_DATA()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91768: Разрешить параметры с именами
Py_REFCNT()
иPy_TYPE()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаgh-91020: Разрешить параметры с именами
PyBytes_Type.tp_alloc
иPyBytesObject.ob_shash
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40421: Разрешить параметры с именами
PyFrame_GetLasti
иf_lasti
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35134: Разрешить параметры с именами
Include/code.h
и<Python.h>
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47169:
PyOS_CheckStack()
теперь экспортируется в Stable ABI под Windows.bpo-47169:
PyThread_get_thread_native_id()
исключается из стабильного ABI на платформах, где он не существует (например, Solaris).bpo-46343: Разрешить параметры с именами
PyErr_GetHandledException()
иPyErr_SetHandledException()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаОни включены в стабильную версию ABI.
Python 3.11.0 alpha 7¶
Дата выхода: 2022-04-05
Ядро и встроенные модули¶
bpo-47212: Разрешить параметры с именами
IndentationError
иSyntaxError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47186: Разрешить параметры с именами
JUMP_IF_NOT_EG_MATCH
иCHECK_EG_MATCH
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47176: Сборки Emscripten не могут обрабатывать сигналы обычным способом из-за ограничений платформы. Теперь сигналы может обрабатывать Python. Для использования установите Module.Py_EmscriptenSignalBuffer в качестве однобайтового SharedArrayBuffer и установите Py_EMSCRIPTEN_SIGNAL_HANDLING в 1. Запись числа в SharedArrayBuffer приведет к тому, что соответствующий сигнал будет поднят в потоке Python.
bpo-47186: Разрешить параметры с именами
JUMP_IF_NOT_EXC_MATCH
иCHECK_EXC_MATCH
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47120: Разрешить параметры с именами
JUMP_NO_INTERRUPT
иJUMP_BACKWARD_NO_INTERRUPT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46841: Избегайте лишних выделений при сравнении объектов кода.
bpo-47182: Исправление сбоя при использовании именованного символа юникода типа
"\N{digit nine}"
после того, как основной интерпретатор был инициализирован во второй раз.bpo-47162: WebAssembly не может справиться с плохими приведениями указателей функций (разное количество или типы аргументов). Теперь Python может использовать батуты вызовов для смягчения этой проблемы. Определите
PY_CALL_TRAMPOLINE
, чтобы включить батуты вызовов.bpo-46775: Некоторые коды системных ошибок Windows (>= 10000) теперь отображаются в правильные errno и могут вызывать подкласс
OSError
. Исправление от Donghee Na.bpo-47129: Улучшение сообщений об ошибках при синтаксических ошибках f-строк, связанных с пустыми выражениями.
bpo-47117: Исправление сбоя при невозможности декодирования символов в интерактивном режиме, если буферы токенизатора неинициализированы. Исправление от Pablo Galindo.
bpo-47127: Ускорение вызовов функций c с аргументами в виде ключевых слов на 25% с помощью специализации. Исправление Кумара Адитьи.
bpo-47120: Разрешить параметры с именами
JUMP_ABSOLUTE
иJUMP_BACKWARD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42197: Разрешить параметры с именами
PyFrame_FastToLocalsWithError()
иPyFrame_LocalsToFast()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47070: Разрешить параметры с именами
array_inplace_repeat
иmemcpy
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47053: Уменьшите деоптимизацию в специализированном опкоде
BINARY_OP_INPLACE_ADD_UNICODE
.bpo-47045: Разрешить параметры с именами
f_state
иowner
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46968: Проверьте наличие заголовка «sys/auxv.h» в
faulthandler
, чтобы избежать проблем с компиляцией в системах, где этот заголовок не существует. Исправление от Pablo Galindobpo-46329: Разрешить параметры с именами
LOAD_GLOBAL
иNULL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46841: Quicken bytecode in-place, сохраняя его как часть соответствующего
PyCodeObject
.bpo-47012: Разрешить параметры с именами
bytes
иbytearray
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47009: Улучшена производительность
list.append()
и списков за счет оптимизации для общего случая, когда не требуется изменение размера. Исправление Денниса Суини.bpo-47005: Разрешить параметры с именами
bytearray_repeat
иbytearray_irepeat
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46829: Разрешить параметры с именами
asyncio.Future.cancel()
иasyncio.Task.cancel()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46993: Разрешить параметры с именами
bytearray
иlist
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39829: Разрешить параметры с именами
__len__()
иlist_extend
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46944: Ускорение выброса исключений в генераторе с соглашением о вызове
METH_FASTCALL
. Исправление Кумара Адитьи.bpo-46841: Модифицируйте
STORE_SUBSCR
, чтобы использовать запись в инлайн-кэше (а не ее oparg) в качестве адаптивного счетчика.bpo-46841: Разрешить параметры с именами
PRECALL
иCALL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46881: Статически выделите и инициализируйте символы latin1.
bpo-46838: Улучшение синтаксических ошибок для некорректных определений функций. Исправление от Пабло Галиндо
bpo-43721: Разрешить параметры с именами
getter
иsetter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43224: Внесите изменения в грамматику, необходимые для PEP 646.
Библиотека¶
bpo-47208: Разрешить продавцам переопределять
CTYPES_MAX_ARGCOUNT
.bpo-23689: Модуль
re
: исправлена утечка памяти при завершении матча по сигналу или сбое выделения памяти. Исправление от Ma Lin.bpo-47167: Разрешить переопределение будущей проверки соответствия в
asyncio.Task
.bpo-47151: Когда подпроцесс пытается использовать vfork, он теперь возвращается к fork, если vfork возвращает ошибку. Это позволяет использовать его в ситуациях, когда vfork не разрешен ядром ОС.
bpo-47152: Разрешить параметры с именами
re
иsre_compile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-4833: Добавить
ZipFile.mkdir()
bpo-27929: Разрешить параметры с именами
asyncio.loop.sock_connect()
иsocket.AF_INET
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-14265: Добавляет полное имя теста в вывод unittest
bpo-47061: Утратить модуль aifc.
bpo-39622: Обработка Ctrl+C в программах asyncio для прерывания основной задачи.
bpo-47101:
hashlib.algorithms_available
теперь перечисляет только алгоритмы, которые предоставляются активированными криптопровайдерами в OpenSSL 3.0. Устаревшие алгоритмы не перечисляются, если только устаревший провайдер не был загружен в контекст OSSL по умолчанию.bpo-47099: Разрешить параметры с именами
URLError
иurllib.request.URLopener
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47099: Разрешить параметры с именами
Exception.with_traceback()
иsys.exc_info()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47095: Разрешить параметры с именами
hashlib
и_blake2
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47098: Разрешить параметры с именами
hashlib
и_sha3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47088: Разрешить параметры с именами
typing.LiteralString
и PEP 675 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42885: Разрешить параметры с именами
re.search()
иre.split()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23691: Защищает итератор
re.finditer()
от повторного входа.bpo-47067: Разрешить параметры с именами
GenericAlias
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28080: Разрешить параметры с именами
zipfile.ZipFile
и--metadata-encoding
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47000: Сделать
io.text_encoding()
возвращающим «utf-8», если включен режим UTF-8.bpo-42369: Разрешить параметры с именами
zipfile._SharedFile.tell()
иZipFile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38256: Исправьте
binascii.crc32()
, когда она скомпилирована для использования zlib’c crc32, чтобы она корректно работала с входными данными длиной 4+GiB, а не возвращала неверный результат. До этого обходной путь заключался в том, чтобы всегда передавать функции данные с шагом меньше 4 Гб или просто вызывать функцию модуля zlib.binascii.crc32()
: Разрешить параметры с именамиzlib.crc32()
иhashlib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаЭто также повышает производительность на Windows, поскольку теперь используется реализация zlib crc32 для
binascii.crc32()
, что ускоряет работу в 2-3 раза.То, что в stdlib есть API crc32 в двух модулях, - известная историческая странность. Это приближает нас к единой реализации, стоящей за ними.
bpo-47066: Глобальные инлайн-флаги (например,
(?i)
) теперь можно использовать только в начале регулярных выражений. Использование их не в начале выражения было отменено начиная с Python 3.6.bpo-39394: Предупреждение о встроенных флагах не в начале регулярного выражения теперь содержит позицию флага.
bpo-433030: Разрешить параметры с именами
(?>...)
и*+
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47062: Внедрите контекстный менеджер
asyncio.Runner
.bpo-46382: Разрешить параметры с именами
dataclass()
иslots=True
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47057: Используйте соглашение FASTCALL для
FutureIter.throw()
bpo-47061: Утратить различные модули, перечисленные в PEP 594:
aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib
bpo-34790: Удалите передачу объектов coroutine в
asyncio.wait()
.bpo-47039: Нормализуйте
repr()
объектов asyncio future и task.bpo-2604: Исправлена ошибка, из-за которой доктесты, использующие глобалы, не выполнялись при многократном запуске.
bpo-45150: Добавьте помощник
hashlib.file_digest()
для эффективного хэширования файлового объекта.bpo-34861: Сделали cumtime ключом сортировки по умолчанию для cProfile
bpo-45997: Исправить
asyncio.Semaphore
повторное получение порядка FIFO.bpo-47022: Разрешить параметры с именами
asynchat
иasyncore
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43253: Исправление сбоя при закрытии транспортов, когда базовый хэндл сокета уже недействителен в цикле событий Proactor.
bpo-40280: Разрешить параметры с именами
select.select()
иNULL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47004: Применяются исправления из importlib_metadata 4.11.3, включая исправление для EntryPoint.extras, который возвращал объекты соответствия, а не строки extras.
bpo-46998: Разрешить подклассификацию
typing.Any
. Исправление от Shantanu Jain.bpo-46995: Исправьте отсутствие
asyncio.Task.set_name()
для сторонних реализаций задач, планируя сделать его обязательным в Python 3.13.bpo-46994: Разрешить параметры с именами
asyncio.create_task()
иasyncio.loop.create_task()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46981: Разрешить параметры с именами
typing.get_args(typing.Tuple[()])
и()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46968: Добавить
os.sysconf_names['SC_MINSIGSTKSZ']
.bpo-46985: Обновление колеса pip в комплекте с ensurepip (pip 22.0.4)
bpo-46968: Разрешить параметры с именами
faulthandler
иgetauxval(AT_MINSIGSTKSZ)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46917: Значение
math.nan
теперь всегда доступно. Исправление Виктора Стиннера.bpo-46955: Разрешить параметры с именами
asyncio.base_events.Server
иasyncio.Server
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23325: Разрешить параметры с именами
signal
иSIG_IGN
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46932: Обновление libexpat до версии 2.4.7
bpo-46933: Разрешить параметры с именами
pwd
иos.path.expanduser()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40059: Разрешить параметры с именами PEP 680 и
tomllib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-464471: Разрешить параметры с именами
asyncio.timeout()
иasyncio.timeout_at()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46805: Разрешить параметры с именами
sock_sendto()
иsock_recvfrom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46644: Разрешить параметры с именами
typing.Annotated
иtyping.ParamSpecArgs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46581: Разрешить параметры с именами
ParamSpec
иGenericAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45413: Разрешить параметры с именами sysconfig installation schemes и
venv
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43224: Реализуйте поддержку PEP 646 в typing.py.
bpo-43224: Разрешить распаковку объектов types.GenericAlias, например
*tuple[int, str]
.bpo-46557: Предупреждения, перехваченные модулем журнализации, теперь записываются в журнал без строки формата, чтобы системы, группирующие журналы по аргументу msg, не группировали перехваченные предупреждения вместе.
bpo-41370: Разрешить параметры с именами
typing.get_type_hints()
и PEP 585 generic aliases с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46607: Разрешить параметры с именами
DeprecationWarning
иLegacyInterpolation
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26120:
pydoc
теперь исключает импорт __future__ из элементов данных модуля.bpo-46480: Добавить
typing.assert_type()
. Исправление от Jelle Zijlstra.bpo-46421: Разрешить параметры с именами
python -m unittest
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46245: Добавьте необязательный параметр dir_fd в
shutil.rmtree()
.bpo-22859:
unittest.TestProgram.usageExit()
помечен как устаревший и будет удален в Python 3.13.bpo-46170: Улучшите сообщение об ошибке при попытке подклассифицировать экземпляр
typing.NewType
.bpo-20392: Исправление несоответствия с расширениями файлов в верхнем регистре в
MimeTypes.guess_type()
. Исправление от Kumar Aditya.bpo-46030: Разрешить параметры с именами
LOCAL_CREDS
иLOCAL_CREDS_PERSISTENT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44439: Разрешить параметры с именами
.write()
иZipFile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45171: Разрешить параметры с именами
stacklevel
иlogging
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24959: Исправлена ошибка, из-за которой в
unittest
иногда выпадали кадры из трассировки исключений, возникающих в тестах.bpo-44859: Разрешить параметры с именами PEP 249 и
sqlite3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаInterfaceError
: Разрешить параметры с именамиProgrammingError
иSQLITE_MISUSE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаНе перезаписывайте
BufferError
наValueError
при неудачном преобразовании в BLOB.ProgrammingError
: Разрешить параметры с именамиWarning
иexecute()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаВызывайте
ProgrammingError
вместоValueError
, если SQL-запрос содержит нулевые символы.
bpo-44493: Добавьте недостающий завершенный NUL в длину sockaddr_un
Это было потенциально наблюдаемо при использовании неабстрактных датаграммных сокетов AF_UNIX с процессами, написанными на другом языке программирования.
bpo-41930: Разрешить параметры с именами
serialize()
иdeserialize()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33178: Разрешить параметры с именами
ctypes.BigEndianUnion
иctypes.LittleEndianUnion
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43352: Добавьте объект Barrier в примитивы синхронизации либа asyncio, чтобы быть согласованным с Barrier из либов threading и multiprocessing.
bpo-35859: В модуле
re
исправлено несколько ошибок, связанных с группой захвата. В редких случаях группа захвата получала неверную строку. Исправление от Ma Lin.
Документация¶
bpo-47126: Обновите URL-адреса PEP до новой канонической формы PEP 676.
bpo-47040: Разрешить параметры с именами
binascii.crc32()
иzlib.adler32()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46033: Уточните выполнение утверждения
for
в его doc.bpo-45790: Разрешить параметры с именами Определение типов расширений: Учебник и
ob_base
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42340: Документируйте, что в некоторых обстоятельствах
KeyboardInterrupt
может привести к тому, что код перейдет в противоречивое состояние. Предоставлен пример обходного пути, чтобы избежать этого, если необходимо.bpo-41233: Разрешить параметры с именами
Doc/library/exceptions.rst
иDoc/library/errno.rst
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Тесты¶
bpo-47205: Разрешить параметры с именами
sched_getaffinity()
иsched_setaffinity()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46126: Восстановите «описания» при внутреннем запуске тестов.
bpo-47104: Разрешить параметры с именами
asyncio.to_thread()
иunittest.IsolatedAsyncioTestCase
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40280: Набор тестов теперь проходит на платформе Emscripten. Все тесты, основанные на вилках, сокетах и подпроцессах, пропущены.
bpo-47037: Пропустите проверку функции
strftime("%4Y")
в Windows. Это может привести к ошибке утверждения в отладочных сборках.bpo-46587: Пропускайте тесты, если платформа
strftime
не поддерживает непортируемые расширения glibc.bpo-47015: Разрешить параметры с именами
os.sendfile()
иasyncore
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-40280: Разрешить параметры с именами
--enable-wasm-dynamic-linking
иdlopen
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46023:
makesetup
теперь обнаруживает и пропускает все дублирующиеся определения модулей. Побеждает первая запись.bpo-40280: Разрешить параметры с именами
wasm32-emscripten
иwasm32-wasi
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47032: Обеспечивает корректное завершение сборок установки Windows с ненулевым кодом выхода, если часть сборки завершилась неудачно.
bpo-47024: Обновите OpenSSL до версии 1.1.1n для установщиков macOS и всех сборок Windows.
bpo-46996: Пакет
tkinter
теперь требует Tcl/Tk версии 8.5.12 или новее.bpo-46973: Разрешить параметры с именами
regen-configure
иquay.io/tiran/cpython_autoconf:269
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46917: Сборка Python теперь требует поддержки чисел с плавающей точкой IEEE 754. Исправление Виктора Стиннера.
bpo-45774: Разрешить параметры с именами
configure
иsqlite3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Windows¶
bpo-47194: Разрешить параметры с именами
zlib
и CVE-2018-25032 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47171: Разрешает установку
py.exe
пусковой установки на Windows ARM64.bpo-46566: Разрешить параметры с именами Python Launcher для Windows и
-V:company/tag
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-47086: Программа установки для Windows теперь включает документацию в виде свободных HTML-файлов, а не в виде одного скомпилированного
.chm
файла.bpo-46907: Обновление программы установки Windows для использования SQLite 3.38.1.
bpo-44549: Разрешить параметры с именами CVE-2016-3189 и CVE-2019-12900 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-46948: Предотвратите CVE-2022-26488, убедившись, что опция Add to PATH в программе установки Windows использует правильный путь при восстановлении.
macOS¶
Инструменты/демоверсии¶
bpo-40280: Замените ограниченную оболочку Emscripten на browser-ui REPL Кэти Белл из проекта python-wasm.
C API¶
bpo-40421: Разрешить параметры с именами
PyFrame_GetBuiltins
иPyFrame_GetGenerator
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46850: Разрешить параметры с именами
_PyFrameEvalFunction
и_PyInterpreterState_GetEvalFrameFunc()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46850: Разрешить параметры с именами
_PyEval_EvalFrameDefault()
и_PyInterpreterFrame
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46850: Разрешить параметры с именами
_PyEval_CallTracing()
иsys.call_tracing()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46850: Разрешить параметры с именами
_PyEval_GetCoroutineOriginTrackingDepth()
иsys.get_coroutine_origin_tracking_depth()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46850: Удалите следующие частные недокументированные функции из C API:
_PyEval_GetAsyncGenFirstiter()
_PyEval_GetAsyncGenFinalizer()
_PyEval_SetAsyncGenFirstiter()
_PyEval_SetAsyncGenFinalizer()
Вместо этого вызывайте публичные функции
sys.get_asyncgen_hooks()
иsys.set_asyncgen_hooks()
. Исправление Виктора Стиннера.bpo-46987: Разрешить параметры с именами
_PySys_GetObjectId()
и_PySys_SetObjectId()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46906: Разрешить параметры с именами
PyFloat_Pack2()
иPyFloat_Pack4()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.11.0 alpha 6¶
Дата выхода: 2022-03-07
Ядро и встроенные модули¶
bpo-46940: Избегайте переопределения информации метаданных
AttributeError
для вложенных вызовов доступа к атрибутам. Исправление от Pablo Galindo.bpo-46927: Включите имя типа в сообщение об ошибке при подстановке негенерических типов.
bpo-46921: Поддержка vectorcall для
super()
. Исправление от Кена Джина.bpo-46841: Исправлена некорректная обработка записей инлайн-кэша при специализации
BINARY_OP
.bpo-46841: Используйте oparg для упрощения построения полезных сообщений об ошибках в
GET_AWAITABLE
.bpo-46903: Убедитесь, что подклассы str могут быть использованы в качестве имен атрибутов для экземпляров с виртуальными словарями. Исправляет регрессию в 3.11alpha
bpo-46841: Разрешить параметры с именами
COMPARE_OP
иEXTENDED_ARG
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46891: Разрешить параметры с именами
types.ModuleType
и__slots__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46841: Разрешить параметры с именами
LOAD_ATTR
иLOAD_METHOD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46841: Используйте инлайн-кэш для
BINARY_SUBSCR
.bpo-46841: Используйте встроенное кэширование для
COMPARE_OP
.bpo-46864: Утратить
PyBytesObject.ob_shash
. Он будет удален в Python 3.13.bpo-46841: Используйте встроенное кэширование для
UNPACK_SEQUENCE
.bpo-46845: Уменьшает размер диктанта, удаляя хэш-значение из хэш-таблицы, если все вставленные ключи имеют юникод. Например,
sys.getsizeof(dict.fromkeys("abcdefg"))
становится 272 байтами с 352 байтами на 64-битной платформе.bpo-46841: Используйте инлайн-кэш для
LOAD_GLOBAL
.bpo-46852: Разрешить параметры с именами
float.__set_format__()
иfloat.__setformat__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46852: Разрешить параметры с именами
float.__set_format__()
иfloat.__setformat__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40116: Исправление ошибки, из-за которой dict.update(other) мог не соблюдать порядок итерации other, когда other является ключом, разделяющим dict.
bpo-46712: Совместное использование глобальных строковых идентификаторов в модулях глубокой заморозки.
bpo-46430: Исправление утечки памяти в интернированных строках модулей глубокой заморозки.
bpo-46841: Разрешить параметры с именами
BINARY_OP
иCACHE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45107: Специализируйте
LOAD_METHOD
для экземпляров с dict.bpo-44337: Разрешить параметры с именами
LOAD_ATTR
иSTORE_ATTR
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46729: Добавьте количество вложенных исключений в
BaseException.__str__()
.bpo-45885: Не снимайте адаптацию
COMPARE_OP
при сборе статистики специализации.bpo-46329: Исправьте сбор статистики специализации для инструкций
PRECALL
.bpo-46794: Повысьте версию libexpat до 2.4.6
bpo-46823: Реализуйте специализированный комбинированный опкод
LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE
. Исправление Денниса Суини.bpo-46820: Исправление разбора числового литерала сразу (без пробелов), за которым следуют ключевые слова «not in», как в
1not in x
. Теперь парсер выдает только предупреждение, а не синтаксическую ошибку.bpo-46329: Разрешить параметры с именами
KW_NAMES
иPRECALL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46808: Удалите макрос
NEXT_BLOCK
из compile.c и сделайте так, чтобы компилятор автоматически генерировал неявные блоки, когда они нужны.bpo-46329: Разрешить параметры с именами
PUSH_NULL
иPRECALL_FUNCTION
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаСемантика не меняется.
bpo-46762: Исправление ошибки утверждения в отладочных сборках, когда „<“, „>“ или „=“ является последним символом в f-строке, в которой отсутствует закрывающая правая скобка.
bpo-46730: Сообщение об ошибке AttributeError, вызванной получением, установкой или удалением свойства без соответствующей функции, теперь упоминает, что атрибут на самом деле является свойством, а также указывает тип класса, к которому он принадлежит.
bpo-46724: Разрешить параметры с именами
JUMP_ABSOLUTE
иJUMP_FORWARD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46732: Исправьте строку документации для метода
__bool__()
. Исправление от Jelle Zijlstra.bpo-46072: Добавьте более подробную статистику отказов специализации для
BINARY_OP
.bpo-46707: Избежать потенциального экспоненциального отката при возникновении некоторых синтаксических ошибок с большим количеством скобок. Исправление от Pablo Galindo.
bpo-46323:
ctypes
теперь выделяет память в стеке, а не в куче для передачи аргументов при вызове функции обратного вызова в Python. Исправление от Donghee Na.bpo-45923: Добавьте ускоренную форму
RESUME
, которая пропускает проверки ускорения.bpo-46702: Разрешить параметры с именами
UNPACK_SEQUENCE
иtuple
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46072: Разрешить параметры с именами
--enable-pystats
иDYNAMIC_EXECUTION_PROFILE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46675: Разрешить более 16 элементов в разделенной дикте перед ее объединением. Теперь ограничение составляет 254.
bpo-40479: Разрешить параметры с именами
va_end()
иModules/_hashopenssl.c
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46323: Используйте
PyObject_Vectorcall()
при вызове функции обратного вызова ctypes. Исправление от Donghee Na.bpo-46615: При итерации над множествами внутри
setobject.c
получайте сильные ссылки на результирующие элементы из множества. Это предотвращает сбои в угловых случаях различных операций над множествами, когда множество мутирует.bpo-45828: Компилятор байткода теперь пытается применить манипуляции со стеком во время компиляции (когда это возможно).
bpo-30496: Разрешить параметры с именами
PyLong_FromLong()
иPyLong_FromLongLong()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-25707: Исправлена утечка файлов в
xml.etree.ElementTree.iterparse()
, когда итератор не был исчерпан. Исправление от Джейкоба Уоллса.bpo-46877: Разрешить параметры с именами
unittest.doModuleCleanups()
иunittest
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46848: Разрешить параметры с именами
find()
иrfind()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46736:
SimpleHTTPRequestHandler
теперь использует грамматику HTML5. Исправление от Donghee Na.bpo-44886: Унаследовать asyncio proactor datagram transport от
asyncio.DatagramTransport
.bpo-46827: Поддержка UDP-сокета в
asyncio.loop.sock_connect()
для циклов событий на основе селектора. Исправление Томаса Грейнджера.bpo-46811: Сделайте набор тестов поддерживающим Expat >=2.4.5
bpo-46252: Разрешить параметры с именами
TypeError
иssl.SSLSocket
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46784: Исправление коллизий символов libexpat с пользовательскими динамически загруженными или статически слинкованными libexpat во встроенном Python.
bpo-46786: Разрешить параметры с именами
embed
иsource
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39327:
shutil.rmtree()
теперь может работать с общими папками VirtualBox при запуске из гостевой операционной системы.bpo-45390: Передача сообщения
asyncio.CancelledError
от внутренней задачи внешнему ожидателю.bpo-46756: Разрешить параметры с именами
urllib.request.HTTPPasswordMgr.find_user_password()
иurllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46737: Разрешить параметры с именами
random.gauss()
иrandom.normalvariate()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46752: Добавляет группы задач в asyncio (структурированный параллелизм, вдохновленный питомниками Trio). Это также вносит изменения в отмену задач, когда отмененная задача не может быть отменена снова, пока не вызовет .uncancel().
bpo-46724: Исправьте поведение
dis
при отрицательных смещениях перехода.bpo-46333: Разрешить параметры с именами
__repr__()
иtyping.ForwardRef
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46643: Разрешить параметры с именами
typing.get_type_hints()
иParamSpecArgs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45863: Когда модуль
tarfile
создает архив в формате pax, он помещает целочисленное представление временных меток в заголовок ustar (если это возможно) для удобства старых разархиваторов, в дополнение к существующим временным меткам полной точности в расширенном заголовке pax.bpo-46066: Откажитесь от синтаксиса, основанного на kwargs, для определений
typing.TypedDict
. Он имел запутанную семантику при указании совокупности и в значительной степени не использовался. Исправление от Jingchen Ye.bpo-46676: Сделать
typing.ParamSpec
args и kwargs равными самим себе. Исправление от Gregory Beauregard.bpo-46323: Разрешить параметры с именами
ctypes.CFUNCTYPE()
иctypes.WINFUNCTYPE()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46672: Разрешить параметры с именами
NameError
иasyncio.gather()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46659: Разрешить параметры с именами
calendar.LocaleTextCalendar
иcalendar.LocaleHTMLCalendar
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46659: Разрешить параметры с именами
locale.getdefaultlocale()
иlocale.setlocale()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46655: Разрешить параметры с именами
typing.get_type_hints()
иTypeAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45948: Разрешить параметры с именами
xml.etree.ElementTree
иxml.etree.ElementTree.XMLParser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46626: Разрешить параметры с именами
IP_BIND_ADDRESS_NO_PORT
иsocket
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46521: Исправлена ошибка в модуле
codeop
, из-за которой некорректный код, содержащий строковые кавычки, неправильно идентифицировался как корректный.bpo-46571: Улучшить
typing.no_type_check()
.Теперь он не изменяет внешние классы и функции. Также теперь мы корректно помечаем методы класса как не подлежащие проверке типа.
bpo-46400: expat: Обновление libexpat с 2.4.1 до 2.4.4
bpo-46556: Откажитесь от недокументированной поддержки использования объекта
pathlib.Path
в качестве менеджера контекста.bpo-46534: Разрешить параметры с именами PEP 673 и
typing.Self
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46522: Сделайте различные модули
__getattr__
Ошибки атрибутов более точно соответствуют типичным ошибкам атрибутовbpo-46475: Разрешить параметры с именами
typing.Never
иtyping.assert_never()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46333: Разрешить параметры с именами
__eq__()
и__hash__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46246: Разрешить параметры с именами
__slots__
иimportlib.metadata.DeprecatedList
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46232: Модуль
ssl
теперь корректно обрабатывает сертификаты с битовыми строками в DN.bpo-46195: Разрешить параметры с именами
typing.get_type_hints()
иOptional
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31369: Разрешить параметры с именами
RegexFlag
иre.__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45898: Разрешить параметры с именами
ctypes
иffi_type_*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44953: Разрешить параметры с именами
operator.itemgetter
иoperator.attrgetter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44289: Разрешить параметры с именами
is_tarfile()
иtarfile.TarFile.open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44011: Реализуйте поддержку SSL/TLS в asyncio, позаимствовав реализацию из библиотеки uvloop.
bpo-41086: Разрешить параметры с именами
configparser.ConfigParser
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29418: Разрешить параметры с именами
inspect.ismethodwrapper()
иinspect.isroutine()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-14156: argparse.FileType теперь поддерживает аргумент „-“ в бинарном режиме, возвращая атрибут .buffer из sys.stdin/sys.stdout в зависимости от ситуации. Режимы, включающие „x“ и „a“, обрабатываются эквивалентно „w“, когда аргументом является „-“. Исправление предоставлено Джошем Розенбергом
Документация¶
bpo-42238: Разрешить параметры с именами
Doc/tools/rstlint.py
иsphinx-lint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Тесты¶
bpo-46913: Исправьте test_faulthandler.test_sigfpe(), если Python собран с санитаром неопределенного поведения (UBSAN): отключите UBSAN на функции faulthandler_sigfpe(). Исправление от Виктора Стиннера.
bpo-46760: Удаление смещений байткода от ожидаемых значений в модуле test.test_dis. Уменьшает препятствия для модификации виртуальной машины или компилятора.
bpo-46708: Предотвращение предупреждения об изменении политики циклов событий asyncio по умолчанию после выполнения
test_asyncio
.bpo-46678: Разрешить параметры с именами
make_legacy_pyc
иLib/test/support/import_helper.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46623: Пропустите test_pair() и test_speech128() из test_zlib на s390x, поскольку они не работают, если zlib использует аппаратный ускоритель s390x. Исправление Виктора Стиннера.
Построить¶
bpo-46860: Уважайте
--with-suffix
при сборке на файловых системах, не чувствительных к регистру.bpo-46656: Для сборки Python теперь требуется компилятор C11. Дополнительные функции C11 не требуются. Исправление Виктора Стиннера.
bpo-46656: Сборка Python теперь требует поддержки Not-a-Number (NaN) с плавающей точкой: удалите макрос
Py_NO_NAN
. Исправление Виктора Стиннера.bpo-46640: Разрешить параметры с именами
<math.h>
иNAN
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46608: Разрешить параметры с именами
is_package
и_frozen
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40280: Исправление сбоев в тесте wasm32-emscripten и проблем с платформой. - Отключите системные вызовы, которые не поддерживаются или не работают, например wait, getrusage, prlimit, mkfifo, mknod, setres[gu]id, setgroups. - Используйте fd_count для подсчета открытых fds. - Добавьте больше проверок для подпроцессов и форков. - Добавлены обходные пути для отсутствующего _multiprocessing и неработающего socket.accept(). - Включить bzip2. - Отключить поддержку больших файлов. - Отключите signal.alarm.
bpo-46430: Внутренние строки в глубоко замороженных модулях. Исправление от Kumar Aditya.
Windows¶
bpo-46744: Разрешить параметры с именами
Program Files
иProgram Files (Arm)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46567: Добавляет поддержку Tcl и Tk для Windows ARM64. Это также добавляет IDLE к установке.
bpo-46638: Обеспечивает постоянное отключение виртуализации реестра. В версии 3.10 и более ранних она остается включенной (некоторые записи в реестре защищены), а в версии 3.11 и более поздних она отключена (изменения в реестре затрагивают все приложения).
IDLE¶
C API¶
bpo-46748: Разрешить параметры с именами
<stdbool.h>
иbool
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46836: Разрешить параметры с именами
PyFrameObject
иstruct _frame
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45459: Разрешить параметры с именами
Include/buffer.h
иInclude/pybuffer.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45412: Удалите макрос
HAVE_PY_SET_53BIT_PRECISION
(перенесен во внутренний C API). Исправление Виктора Стиннера.bpo-46613: Добавлена функция
PyType_GetModuleByDef()
, которая позволяет получить доступ к состоянию модуля, когда определяющий класс метода недоступен.
Python 3.11.0 alpha 5¶
Дата выхода: 2022-02-03
Ядро и встроенные модули¶
bpo-45773: Удалите из компилятора байткода две недопустимые оптимизации «на глазок».
bpo-46564: Не создавайте фреймовые объекты при создании объекта
super
. Исправление Кумара Адитьи.bpo-45885: Добавлена более подробная статистика отказов специализации для байткода
COMPARE_OP
.bpo-44977: Разрешить параметры с именами
int()
и__trunc__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46458: Разрешить параметры с именами
try
иexcept
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46527: Разрешить параметры с именами
iterable
иenumerate()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46528: Разрешить параметры с именами
DUP_TOP
иDUP_TOP_TWO
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46329: Используйте два или три байткода для реализации большинства вызовов.
PRECALL; CALL
: Разрешить параметры с именамиPRECALL; KW_NAMES; CALL
иPRECALL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаТакое разделение на предварительный звонок и звонок позволяет улучшить специализацию, а значит, и производительность в конечном итоге.
Семантика не меняется.
bpo-46503: Исправление ошибки при разборе некоторых недопустимых N-эскейп-последовательностей в f-строках.
bpo-46431: Улучшите сообщение об ошибке при недопустимых вызовах
BaseExceptionGroup.__new__()
.bpo-46476: Исправление утечки памяти в объектах кода, генерируемых deepfreeze. Исправление от Kumar Aditya.
bpo-46481: Разрешить параметры с именами
weakref.ref.__call__()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46417: Разрешить параметры с именами
__bases__
иadd_subclass()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46417:
python -X showrefcount
теперь показывает общее количество ссылок после очистки и уничтожения основного интерпретатора Python. Ранее оно показывалось до этого. Исправление Виктора Стиннера.bpo-43683: Добавьте опкод ASYNC_GEN_WRAP для обертывания значения, которое должно быть выдано в асинхронных генераторах. Устраняет необходимость в специальном регистре асинхронных генераторов в инструкции
YIELD_VALUE
.bpo-46407: Оптимизация некоторых операций по модулю в
Objects/longobject.c
. Исправление от Jeremiah Vivian.bpo-46409: Добавьте новый байткод
RETURN_GENERATOR
для создания генераторов. Упрощает вызов функций Python в VM, так как больше нет необходимости в специальном регистре функций генераторов.Также добавьте байткод
JUMP_NO_INTERRUPT
, который действует какJUMP_ABSOLUTE
, но не проверяет наличие прерываний.bpo-46406: Разрешить параметры с именами
//
и2**30
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46383: Разрешить параметры с именами
_zoneinfo
иmodule_free
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46361: Разрешить параметры с именами
int.from_bytes()
иdecimal.Decimal
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46161: Исправлена ошибка построения класса, когда аргументы являются константами и используется CALL_FUNCTION_EX.
bpo-46028: Исправлено вычисление
sys._base_executable
при нахождении в виртуальной среде, использующей симлинки с двоичными именами, отличными от тех, что предоставляет базовая среда.bpo-46091: Корректно вычисляет уровни отступов для строк с пробельными символами, которые завершаются символами продолжения строки. Исправление от Pablo Galindo
bpo-30512: Добавьте поддержку CAN Socket для NetBSD.
bpo-46045: Не используйте семафоры POSIX в NetBSD
bpo-44024: Разрешить параметры с именами
TypeError
иgetattr()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-46624: Разрешить параметры с именами
random.randrange()
иrandom.randint()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46591: Сделайте URL IDLE doc в диалоге «О IDLE» кликабельным.
bpo-46565: Удалите переменные цикла, которые просачиваются в пространства имен модулей.
bpo-46553: Разрешить параметры с именами
typing.get_type_hints()
иClassVar
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46544: Разрешить параметры с именами
x
иuspace
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46487: Разрешить параметры с именами
get_write_buffer_limits
иasyncio.transports.WriteTransport
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45173: Обратите внимание на то, что в Python 3.12 будут удалены устаревшие настройки configparser.
bpo-45162: Устаревшие
unittest
API, удаленные в 3.11a1, были временно восстановлены, чтобы быть удаленными в 3.12, пока идет очистка во внешних проектах.bpo-46539: Разрешить параметры с именами
typing.get_type_hints()
иClassVar
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46510: Разрешить параметры с именами
types.TracebackType
иtypes.FrameType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46491: Разрешить параметры с именами
typing.Annotated
иtyping.Final
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46483: Разрешить параметры с именами
__class_getitem__()
иpathlib.PurePath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46436: Разрешить параметры с именами
-d
и--directory
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41403: Разрешить параметры с именами
mock.patch()
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46474: В
importlib.metadata.EntryPoint.pattern
избегайте потенциальных REDoS, ограничивая двусмысленность в последовательных пробельных символах.bpo-46474: Удален приватный метод из
importlib.metadata.Path
. Синхронизация с importlib_metadata 4.10.0.bpo-46470: Удалите неиспользуемую ветвь из
typing._remove_dups_flatten
bpo-46469: Разрешить параметры с именами
asyncio
иtypes.GenericAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41906: Разрешить параметры с именами
filters
иhandlers
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46422: Разрешить параметры с именами
dis.Positions
иdis.Instruction
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46434: Разрешить параметры с именами
pdb
иhelp
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43869: Python использует одну и ту же временную эпоху на всех платформах. Добавьте явный юнит-тест, чтобы убедиться, что это так. Исправление Виктора Стиннера.
bpo-46414: Добавить
typing.reveal_type()
. Исправление от Jelle Zijlstra.bpo-40280: Разрешить параметры с именами
subprocess
иmsvcrt
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40066: Разрешить параметры с именами
IntEnum
иIntFlag
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46316: Оптимизируйте
pathlib.Path.iterdir()
, удалив ненужную проверку на наличие специальных записей.bpo-29688: Документ
pathlib.Path.absolute()
(который существовал всегда).bpo-43012: Устаревший и внутренний класс
_Accessor
модуля pathlib был удален, чтобы подготовить местность к предстоящим улучшениям модуля.bpo-46258: Ускорьте
math.isqrt()
для небольших положительных целых чисел, заменив два шага деления таблицей поиска.bpo-46242: Разрешить параметры с именами
enum.Enum
иEnum
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43118: Разрешить параметры с именами
inspect.signature()
и__text_signature__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26552: Исправлена ситуация, когда при отказе
asyncio.ensure_future()
не закрывался корутин. Исправление Кумара Адитьи.bpo-21987: Исправление проблемы, когда
tarfile.TarFile.getmember()
получал имя каталога с косой чертой.bpo-46124: Обновите
zoneinfo
, чтобы полагаться на обходной API importlib.resources.bpo-46103: Разрешить параметры с именами
inspect.getmembers()
и__bases__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46080: Разрешить параметры с именами
argparse.BooleanOptionalAction
иargparse.SUPPRESS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44791: Разрешить параметры с именами
ParamSpec
иConcatenate
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-46463: Исправления
escape4chm.py
скрипта, используемого при сборке файла документации CHM
Тесты¶
bpo-43478: Моки больше не могут быть предоставлены в качестве спецификаций для других моков. В результате уже созданный объект не может быть передан в
mock.Mock()
. Это может выявить ошибки в тестах, так как эти Mock-производные всегда будут проходить определенные тесты (например, isinstance), а встроенные функции assert (например, assert_called_once_with) будут проходить безоговорочно.bpo-46616: Обеспечивает
test_importlib.test_windows
очистку ключей реестра после завершения.bpo-44359: test_ftplib теперь молча игнорирует ошибки сокетов, чтобы предотвратить регистрацию необработанных потоковых исключений. Исправление Виктора Стиннера.
bpo-46600: Исправьте test_gdb.test_pycfunction() для Python, собранного с
clang -Og
. Разрешить встраивание функций в обратную связь gdb. Исправление Виктора Стиннера.bpo-46542: Исправление падения Python в test_lib2to3 при использовании Python, собранного в режиме отладки: ограничение лимита рекурсии. Исправление от Виктора Стиннера.
bpo-46576: test_peg_generator теперь отключает оптимизацию компилятора при тестировании компиляции своих собственных расширений на C, что значительно ускоряет тестирование на не отладочных сборках CPython.
bpo-46542: Разрешить параметры с именами
test_json
иRecursionError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-13886: Пропускать тесты test_builtin PTY на не-ASCII символы, если загружен модуль readline. Модуль readline изменяет поведение input(), но test_builtin не предназначен для проверки модуля readline. Исправление Виктора Стиннера.
bpo-40280: Разрешить параметры с именами
test.support.requires_fork()
иos.fork()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40280: Разрешить параметры с именами
test.support.requires_subprocess()
иsubprocess
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46126: Отключите «описания» при внутреннем выполнении тестов.
Построить¶
bpo-46602: Настроил configure.ac так, чтобы файл conftest.c обрезался, а не добавлялся. Это помогает в случае, когда „rm“ conftest.c не происходит между тестами. В результате могут возникнуть такие проблемы, как сбитый SOABI.
bpo-46600: Разрешить параметры с именами
-Og
и./configure
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38472: Исправлено обнаружение GCC в setup.py при кросс-компиляции. Компилятор C теперь запускается с LC_ALL=C. Ранее обнаружение немецкой локали было неудачным.
bpo-46513: Разрешить параметры с именами configure и
AC_C_CHAR_UNSIGNED
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46471: Используйте глобальные синглтоны для однобайтовых объектов в deepfreeze.
bpo-46443: Deepfreeze теперь использует кэшированные маленькие целые числа, так как это экономит место для обычных маленьких целых чисел.
bpo-46429: Объединяет все глубоко замороженные файлы в один для экономии места. Исправление от Kumar Aditya.
bpo-45569: Разрешить параметры с именами
--enable-big-digits=15
иconfigure
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45925: Обновление программы установки Windows для использования SQLite 3.37.2.
bpo-43112: Определите musl libc как отдельный SOABI (помеченный как
linux-musl
).
Windows¶
bpo-33125: Традиционный установщик на основе EXE/MSI для Windows теперь доступен для ARM64
bpo-46362: os.path.abspath(«C:CON») теперь исправлен так, что возвращает «\.CON», а не тот же путь. Регрессия была справедлива для всех устаревших устройств DOS, таких как COM1, LPT1 или NUL.
bpo-44934: Программа установки теперь предлагает опцию командной строки, позволяющую добавить каталог установки в конец
PATH
, а не в начало.
macOS¶
bpo-45925: Обновление программы установки macOS до версии SQLite 3.37.2.
IDLE¶
bpo-45296: Уточнение закрытия, выхода и завершения работы в IDLE. В меню File, „Close“ и „Exit“ теперь означают „Close Window“ (закрыть текущее окно), а „Exit“ теперь означает „Exit IDLE“ (закрыть все окна). В Shell слова „quit()“ и „exit()“ означают «закрыть Shell». Если других окон нет, это также означает выход из IDLE.
C API¶
bpo-40170: Разрешить параметры с именами
PyHeapType_GET_MEMBERS()
иPyTypeObject.tp_members
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Переместите частные функции _Py_GetAllocatedBlocks() и _PyObject_DebugMallocStats() во внутренний C API. Исправление Виктора Стиннера.
bpo-46433: Внутренняя функция _PyType_GetModuleByDef теперь корректно обрабатывает паттерны наследования, включающие статические типы.
bpo-45459: Разрешить параметры с именами
Py_buffer
иPy_buffer
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-14916: Исправлена ошибка в токенизаторе, из-за которой
PyRun_InteractiveOne
не разбирался из предоставленного FD.
Python 3.11.0 alpha 4¶
Дата выхода: 2022-01-13
Ядро и встроенные модули¶
bpo-46070: Разрешить параметры с именами
Py_EndInterpreter()
иPyObject_GC_UnTrack()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46347: Исправьте утечку памяти в PyEval_EvalCodeEx.
bpo-46339: Исправление сбоя в парсере при получении текста ошибки для многострочных f-строчных выражений, которые начинаются не с первой строки строки. Исправление от Pablo Galindo
bpo-46331: Не задавать номер строки инструкции, хранящей doc-строку. Исправляет регрессию, появившуюся в альфа-версии 3.11.
bpo-46314: Устранение ложного события «call» при создании лямбда-функции, которое было случайно введено в 3.11a4.
bpo-46289: Разрешить параметры с именами
FormattedValue
иconversion
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46297: Исправлено падение интерпретатора при загрузке с несколькими PythonPaths, заданными в реестре Windows. Исправление от Derzsi Dániel.
bpo-46237: Исправление количества строк с ошибками токенизатора внутри f-строк. Исправление от Пабло Галиндо.
bpo-46263: Мы всегда ожидаем, что конфигурация «use_frozen_modules» будет установлена, теперь, когда getpath.c был переписан на чистом Python и логика улучшена.
bpo-46006: Разрешить параметры с именами
__init__()
и_PyUnicode_EqualToASCIIId()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45923: Добавьте опкод RESUME. Это логический запрет. Он выдается компилятором в любом месте, где может быть введена функция Python. Он используется интерпретатором для трассировки и проверки оптимизатора.
bpo-46208: Исправление регрессии, когда os.path.normpath(«A/../../B») возвращал не ожидаемое «../B», а «B».
bpo-46240: Исправление сообщения об ошибке для незакрытых круглых скобок, когда токенизатор не достигает конца источника при сообщении об ошибке. Исправление от Pablo Galindo
bpo-46009: Удалите опкод
GEN_START
.bpo-46235: Некоторые операции умножения последовательностей, например
[0] * 1_000
, теперь выполняются быстрее благодаря оптимизации подсчета ссылок. Исправление Денниса Суини.bpo-46221: Разрешить параметры с именами
PREP_RERAISE_STAR
иlasti
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46202: Удалите
POP_EXCEPT_AND_RERAISE
и замените его эквивалентной последовательностью других опкодов.bpo-46085: Исправьте механизм кэширования итераторов
OrderedDict
.bpo-46055: Ускорение операций сдвига с целыми числами меньше
PyLong_BASE
. Исправлено Синьханом Сюй.bpo-46110: Добавьте проверку максимальной рекурсии в парсер PEG, чтобы избежать переполнения стека. Исправление от Пабло Галиндо
bpo-46107: Разрешить параметры с именами
ExceptionGroup.split()
иExceptionGroup.subgroup()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45711: Разрешить параметры с именами
exc_value
иexc_type
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44525: Замените четыре инструкции байткода call одной инструкцией pre-call и двумя инструкциями call.
CALL_FUNCTION
: Разрешить параметры с именамиCALL_FUNCTION_KW
иCALL_METHOD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаCALL_NO_KW
: Разрешить параметры с именамиCALL_KW
иPRECALL_METHOD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46039: Разрешить параметры с именами
YIELD_FROM
иSEND
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45635: Код, вызываемый из
_PyErr_Display()
, был рефакторингован для улучшения обработки ошибок. Теперь он немедленно завершается при возникновении неустранимой ошибки.bpo-46054: Исправление ошибки парсера при разборе не-utf8 символов в исходных файлах. Исправление от Пабло Галиндо.
bpo-46042: Улучшение расположения каретки в исключениях
SyntaxError
, выдаваемых таблицей символов. Исправление от Пабло Галиндо.bpo-46049: Убедитесь, что файлы
._pth
работают как положено на платформах, отличных от Windows.bpo-46048: Исправлен разбор файлов
._pth
при запуске, чтобы пути с одним символом читались правильно.bpo-37971: Исправлена ошибка, из-за которой номера строк, указанные в трассировке, когда приложение-декоратор вызывало исключение, были неверными.
bpo-46031: Разрешить параметры с именами
POP_JUMP_IF_NOT_NONE
иPOP_JUMP_IF_NONE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46025: Исправление сбоя в модуле
atexit
, связанного с функциями, которые снимают себя с регистрации перед тем, как вызвать исключения. Исправление от Пабло Галиндо.bpo-46000: Улучшение совместимости модуля
curses
с NetBSD curses.bpo-44525: Разрешить параметры с именами
range(x)
иlist(x)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42918: Разрешить параметры с именами
compile()
иSyntaxError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45953: Главный интерпретатор в _PyRuntimeState.interpreters теперь выделяется статически (как часть _PyRuntime). Аналогично и для начального состояния потока каждого интерпретатора. Это означает меньшее выделение во время инициализации времени выполнения, а также лучшую локальность памяти для этих ключевых объектов состояния.
bpo-45292: Разрешить параметры с именами PEP 654 и
except*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43413: Разрешить параметры с именами
set.__init__
иset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43931: Разрешить параметры с именами
Py_Version
иPY_VERSION_HEX
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-46342: Разрешить параметры с именами
@typing.final
и__final__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46328: Добавлен метод
sys.exception()
, который возвращает активный экземпляр исключения.bpo-46307: Разрешить параметры с именами
string.Template.is_valid()
иstring.Template.get_identifiers()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46306: Разрешить параметры с именами
types.CodeType
иtypes.CodeType.co_firstlineno
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40479: Исправьте
hashlib
usedforsecurity для корректной работы с OpenSSL 3.0.0 в режиме FIPS.bpo-46070: Исправление возможного segfault при параллельном импорте модуля
asyncio
из разных суб-интерпретаторов. Исправление Эрленда Э. Аасланда.bpo-46244: Разрешить параметры с именами
__slots__
иtyping.ParamSpec
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46278: Разрешить параметры с именами
context
иAbstractEventLoop.call_*()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46269: Разрешить параметры с именами
__new__
иenum.Enum.__dir__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46266: Улучшите константы дня в
calendar
.MONDAY
: Разрешить параметры с именамиSUNDAY
и__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46257: Оптимизированы функции mean, variance и stdev в модуле статистики. Если на вход подается итератор, то он потребляется за один проход, а не съедает память при преобразовании в список. Алгоритм с одним проходом работает примерно в два раза быстрее, чем предыдущий код с двумя проходами.
bpo-41011: Добавлены две новые переменные в pyvenv.cfg, который генерируется модулем
venv
: executable для исполняемого файла и command для командной строки, используемой для создания окружения.bpo-46239: Улучшено сообщение об ошибке при импорте
asyncio.windows_events
на не-Windows.bpo-46238: Разрешить параметры с именами
_winapi
иasyncio.windows_events
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46222: Добавление константы
SF_NOCACHE
sendfile для FreeBSD для posixmodule.bpo-37295: Разрешить параметры с именами
0 <= k <= n <= 67
иmath.comb()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46176: Добавление константы
MAP_STACK
для модуля mmap.bpo-43424: Разрешить параметры с именами
webbrowser.MacOSXOSAScript._name
иname
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45321: Добавлены отсутствующие коды ошибок в модуль
xml.parsers.expat.errors
.bpo-46125: Рефакторинг тестов для прямого тестирования traversable API. Включает изменения из importlib 5.4.0.
bpo-46118: Переместили importlib.resources и связанную с ним функциональность в пакет.
bpo-37578: Разрешить параметры с именами
glob()
иiglob()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20369:
concurrent.futures.wait()
больше не блокируется навсегда, когда ему даются дублирующие фьючерсы. Исправление Кумара Адитьи.bpo-46105: Соблюдайте спецификацию при генерации спецификаций требований с урлами и дополнениями (importlib_metadata 4.8.3).
bpo-44893: Объекты EntryPoint больше не являются кортежами. Рекомендуемый способ доступа - по атрибуту („.name“, „.group“) или аксессору („.load()“). Доступ по индексу устарел и вызовет предупреждение об устаревании.
bpo-22815: Выведите неожиданные успехи вместе с неудачами и ошибками в резюме в
unittest.TextTestResult
.bpo-22047: Разрешить параметры с именами
add_argument_group()
иadd_argument_group()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаЭти функции никогда не поддерживались и не всегда работают корректно. Эти функции существуют в API случайно, благодаря наследованию, и будут удалены в будущем.
bpo-26952: Разрешить параметры с именами
argparse
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45615: Разрешить параметры с именами
traceback
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-16594: Добавьте флаг allow_reuse_port в сокетсервер.
bpo-27718: Разрешить параметры с именами
signal
иsignal()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46032: Разрешить параметры с именами
registry()
иfunctools.singledispatch()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46014: Разрешить параметры с именами
typing.Union
иtypes.UnionType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27062: Разрешить параметры с именами
__all__
иinspect
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46018: Убедитесь, что
math.expm1()
не поднимается при недополнении.bpo-46016: Разрешить параметры с именами
F_DUP2FD
иF_DUP2FD_CLOEXEC
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45755: Разрешить параметры с именами
typing
иdir()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45874: Пустая строка запроса, не содержащая аргументов запроса, теперь корректно обрабатывается в
urllib.parse.parse_qsl
. Раньше это вызывало проблемы, когда был включен строгий разбор.bpo-44674: Изменение того, как классы данных запрещают изменять значения по умолчанию. Раньше использовался список известных типов (list, dict, set). Теперь он запрещает нехешируемым объектам быть значениями по умолчанию. Он использует нехешируемость как прокси для мутабельности. Исправление Эрика В. Смита, идея Раймонда Хеттингера.
bpo-23882: Удалите поддержку пакетов пространств имен (PEP 420) из unittest discovery. Она была введена в Python 3.4, но была нарушена с Python 3.7.
bpo-25066: Разрешить параметры с именами
__repr__()
иmultiprocessing.Event
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45643: Добавлено
signal.SIGSTKFLT
на платформах, где этот сигнал определен.bpo-44092: Fetch across rollback больше не вызывает
InterfaceError
. Вместо этого мы предоставляем библиотеке SQLite самой решать эти проблемы. Исправление Эрленда Э. Аасланда.bpo-42413: Разрешить параметры с именами
concurrent.futures.TimeoutError
иasyncio.TimeoutError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-46196: Метод документа
cmd.Cmd.columnize()
.bpo-46120: Разрешить параметры с именами
|
иUnion
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46109: Разрешить параметры с именами
importlib.resources
иimportlib.resources.abc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Тесты¶
bpo-46296: Разрешить параметры с именами
enum
и_use_args_ == True
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46205: Исправление зависания в runtest_mp из-за состояния гонки
bpo-46263: Исправление test_capi на FreeBSD 14-dev: указание jemalloc не заполнять освобожденную память нежелательными байтами.
bpo-46262: Разрешить параметры с именами
ValueError
иenum.Flag._missing_()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46150: Разрешить параметры с именами
fakename
иtest_pathlib.PosixPathTest.test_expanduser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46129: Разрешить параметры с именами
asyncio.locks
иunittest.IsolatedAsyncioTestCase
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23819: Исправлены тесты
asyncio
в оптимизированном для python режиме. Исправление от Kumar Aditya.bpo-46114: Исправьте тестовый пример для версии OpenSSL 3.0.1. В OpenSSL 3.0 используется
0xMNN00PP0L
.
Построить¶
bpo-44133: Если для Python установлено значение
--without-static-libpython
, статическая библиотека Python (libpython.a) больше не собирается. Исправление Виктора Стиннера.bpo-44133: Разрешить параметры с именами
--enable-shared
иpython
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40280: Разрешить параметры с именами
configure
и--with-emscripten-target
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46315: Добавлены и исправлены проверки
#ifdef HAVE_FEATURE
для функциональности, недоступной на платформе WASI.bpo-45723: Разрешить параметры с именами
configure
иselect.epoll()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46263: Разрешить параметры с именами
configure
иMULTIARCH
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46106: Обновление OpenSSL до версии 1.1.1m в сборках Windows, сборках установщика macOS и CI. Исправление от Кумара Адитьи.
bpo-46088: Автоматическое обнаружение или установка среды выполнения bootstrap Python при сборке из Visual Studio.
bpo-46072: Добавьте опцию конфигурации –with-pystats для включения сбора внутренней статистики.
bpo-40280: Разрешить параметры с именами
Tools/wasm
иconfig.site
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46023: Разрешить параметры с именами makesetup и
Modules/Setup.local
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45949: Разрешить параметры с именами
freeze_module
и--with-freeze-module
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Windows¶
bpo-46217: Удален параметр, который не поддерживался в Windows 8.1 и ранних версиях Windows 10 и мог вызывать сбои в сборке или во время выполнения.
macOS¶
bpo-40477: Приложение Python Launcher для macOS теперь корректно запускает скрипты и, при необходимости, приложение Terminal при запуске на последних версиях macOS.
C API¶
bpo-46236: Разрешить параметры с именами
PyFunction_GetAnnotations()
иtuple
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46140: Разрешить параметры с именами
PyBuffer_GetPointer()
иPyBuffer_FromContiguous()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45855: Документируйте, что аргумент no_block в
PyCapsule_Import()
теперь не имеет значения.bpo-45855: Разрешить параметры с именами
PyImport_ImportModuleNoBlock()
иPyImport_ImportModule()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46007: Макрос
PyUnicode_CHECK_INTERNED()
был исключен из ограниченного C API. Он никогда не был пригоден для использования, поскольку использовал внутренние структуры, недоступные в ограниченном C API. Исправление Виктора Стиннера.
Python 3.11.0 alpha 3¶
Дата выхода: 2021-12-08
Ядро и встроенные модули¶
bpo-46009: Разрешить параметры с именами
gen_func().send(0)
иgen_func().throw(TypeError(...)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-46004: Исправьте расположение
SyntaxError
для ошибок, связанных с циклами for с недопустимыми целями. Исправление от Pablo Galindobpo-45711: Разрешить параметры с именами
_PyErr_ChainStackItem()
иexc_info
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45607: Разрешить параметры с именами
__note__
иBaseException
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45947: Помещаем указатели на dict и значения непосредственно перед заголовком GC. Это уменьшает количество зависимых загрузок памяти для доступа к dict или значениям с 3 до 1.
bpo-45915: Разрешить параметры с именами
is_valid_fd
иfcntl(fd, F_GETFD)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44530: Разрешить параметры с именами
code.__new__
и audit event с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42268: Не выполнять шаг конфигурирования, если выбранный компилятор не поддерживает функцию очистки памяти. Исправление от Пабло Галиндо
bpo-45711: Разрешить параметры с именами
exc_info
иtype
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45727: Доработайте пользовательскую синтаксическую ошибку, предполагающую, что запятая может отсутствовать, чтобы она срабатывала только при обнаружении выражений между скобками или круглыми скобками. Исправление от Пабло Галиндо
bpo-45885: Специализация опкода
COMPARE_OP
с использованием механизма PEP 659.bpo-45786: Выделяет место для фрейма интерпретатора в объекте фрейма, чтобы избежать дополнительного выделения, когда объект фрейма переживет активацию фрейма.
bpo-45614: Исправьте отображение
traceback
для исключений с недопустимым именем модуля.bpo-45813: Исправление сбоя при вызове coro.cr_frame.clear() после того, как coroutine была освобождена.
bpo-45811: Улучшение ошибок токенизатора при встрече с невидимыми управляющими символами в парсере. Исправление от Pablo Galindo
bpo-45848: Позволяет парсеру получать строки ошибок непосредственно из закодированных файлов. Исправление от Пабло Галиндо
bpo-45709: Восстановление поведения из 3.10 при трассировке исключения, вызванного внутри оператора with.
bpo-44525: Добавляет новый опкод
COPY_FREE_VARS
, чтобы сделать копирование свободных переменных из функции во фрейм явным. Помогает оптимизировать вызовы функций Python.bpo-45829: Разрешить параметры с именами
BINARY_SUBSCR
и__getitem__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45826: Разрешить параметры с именами
.with_traceback(None)
иNameError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45822: Исправлена ошибка в парсере, из-за которой он не соблюдал кодировку cookies PEP 263, когда флаги не были указаны. Исправление от Пабло Галиндо
bpo-45820: Исправление segfault, когда парсер завершал работу, не прочитав никаких входных данных. Исправление от Pablo Galindo
bpo-45636: Упростите реализацию
BINARY_OP
за счет индексации в массив указателей функций (а не переключения на oparg).bpo-42540: Исправление сбоя при вызове
os.fork()
с активным не дефолтным аллокатором памяти.bpo-45738: Исправлено вычисление места ошибки для недопустимых символов продолжения в парсере. Исправление от Pablo Galindo.
bpo-45636: Удалите существующий «быстрый путь» для старого стиля форматирования строк, поскольку он больше не оказывает заметного влияния.
bpo-45753: Сделайте проверку рекурсии немного более эффективной, отслеживая количество вызовов, оставшихся до переполнения.
bpo-45773: Исправление зависания компилятора при попытке оптимизировать определенные шаблоны переходов.
bpo-45764: Разрешить параметры с именами
(
иdef
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда>>> def f: File "<stdin>", line 1 def f: ^ SyntaxError: expected '('
bpo-45609: Специализация опкода
STORE_SUBSCR
с использованием механизма PEP 659.bpo-45636: Разрешить параметры с именами
BINARY_*
иINPLACE_*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45582: Разрешить параметры с именами
getpath
иsys
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45450: Улучшено сообщение о синтаксической ошибке для аргументов с круглыми скобками. Исправление от Пабло Галиндо.
Библиотека¶
bpo-27946: Разрешить параметры с именами
xml.etree.ElementTree.Element
иattrib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45711: Разрешить параметры с именами
asyncio
иPyErr_Fetch()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23819: Заменены утверждения на исключения в asyncio, исправление Кумара Адитьи.
bpo-13236: Разрешить параметры с именами
unittest.TextTestResult
иunittest.TextTestRunner
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45917: Добавлена функция
math.exp2()
, которая возвращает 2, возведенное в степень x.bpo-37658: Исправление проблемы, когда при определенных условиях
asyncio.wait_for()
может позволить корутине успешно завершиться, но не вернуть результат, что может привести к утечке памяти или другим проблемам.bpo-45876: Повышение точности функций stdev() и pstdev() в модуле статистики. Если в качестве входных данных используются плавающие числа или дроби, то на выходе получаются правильно округленные плавающие числа
bpo-44649: Обработка dataclass(slots=True) с полем, которое имеет значение по умолчанию, но для которого init=False.
bpo-45803: Добавлен недостающий параметр kw_only в dataclasses.make_dataclass().
bpo-45837:
turtle.RawTurtle.settiltangle()
устарел с Python 3.1, теперь он выдает предупреждение об устаревании и будет удален в Python 3.13.Вместо этого используйте
turtle.RawTurtle.tiltangle()
.turtle.RawTurtle.tiltangle()
ранее был ошибочно помечен как устаревший, его docstring была исправлена.Патч от Хьюго ван Кеменаде.
bpo-45831:
faulthandler
теперь могут записывать строки только ASCII (например, имена файлов и названия функций) одним вызовом write() при дампе трассировки. Это снижает риск получения нечитаемого дампа, когда два потока или два процесса одновременно сбрасывают traceback в один и тот же файл (например, stderr). Исправление Виктора Стиннера.bpo-45828:
sqlite
Обратные вызовы C теперь используют невыводимые исключения, если включено отслеживание обратных вызовов. Исправление Эрленда Э. Аасланда.bpo-41735: Разрешить параметры с именами
zlib.Decompress.flush()
иPyObject_GetBuffer
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45235: Исправлена ошибка argparse, которая приводила к регрессии в обработке аргументов по умолчанию для субпарсеров. Это не позволяло аргументам уровня листа иметь приоритет над аргументами уровня корня.
bpo-45754: Разрешить параметры с именами
sqlite3
иSQLITE_LIMIT_LENGTH
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45766: Добавлена опция пропорциональный в
statistics.linear_regression()
.bpo-45765: В importlib.metadata исправлено обнаружение дистрибутива при пустом пути.
bpo-45757: Разрешить параметры с именами
dis
иEXTENDED_ARG
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45644: Форматирование JSON-файла на месте с помощью
python3 -m json.tool infile infile
теперь работает корректно, раньше файл оставался пустым. Исправление Криса Весселинга.bpo-45703: Разрешить параметры с именами
sys.path
иimportlib.invalidate_caches()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45535: Улучшите вывод
dir()
с помощью Enums.bpo-45664: Разрешить параметры с именами
types.resolve_bases()
иtypes.new_class()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45663: Разрешить параметры с именами
dataclasses.is_dataclass()
иtypes.GenericAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45662: Разрешить параметры с именами
dataclasses.InitVar
иInitVar[list[int]]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43137: Запуск веб-браузеров GNOME с помощью инструмента gio вместо устаревшего gvfs-open
bpo-45429: В Windows
time.sleep()
теперь использует таймер с ожиданием, который поддерживает таймеры высокого разрешения. Исправление от Donghee Na и Eryk Sun.bpo-37295: Разрешить параметры с именами
math.comb()
иmath.perm()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45514: Утратившие актуальность функции в
importlib.resources
.bpo-45507: Добавьте тесты на усеченные/пропущенные трейлеры в реализацию gzip.decompress.
bpo-45359: Разрешить параметры с именами PEP 585 и
graphlib.TopologicalSorter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44733: Разрешить параметры с именами
max_tasks_per_child
иconcurrent.futures.ProcessPoolExecutor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28806: Улучшена библиотека netrc. Файл netrc больше не должен содержать все токены. А если имя пользователя анонимное, то проверка безопасности больше не нужна.
bpo-43498: Избегайте возможной «RuntimeError: dictionary changed size during iteration » при настройке количества процессов в
ProcessPoolExecutor
.bpo-42158: Добавить MIME-типы для N-квадратов, N-триплетов, Notation3 и TriG в
mimetypes
.bpo-30533: Добавить
inspect.getmembers_static()
, он возвращает все члены, не вызывая динамического поиска по протоколу дескриптора. Исправление от Weipeng Hong.
Документация¶
bpo-42238: Разрешить параметры с именами
make -C Doc suspicious
иmake -C Doc check
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45840: Улучшение перекрестных ссылок в документации по модели данных.
bpo-45640: Правильно размеченные грамматические лексемы в документации теперь кликабельны и ведут к определению данного элемента грамматики. Исправление Артура Мильхиора.
bpo-45788: Свяжите документ по sys.prefix с документом по sysconfig о путях установки.
bpo-45772:
socket.socket
документация исправлена на класс из функции.bpo-45392: Обновите docstring встроенного
type
, чтобы удалить лишнюю строку и упомянуть аргументы ключевого слова для конструктора.bpo-45250: Обновите документацию, чтобы отметить, что CPython не требует, чтобы итераторы последовательно определяли
__iter__
.bpo-25381: В главе «Расширение» документации по расширению обновите параграф о глобальных переменных, содержащих информацию об исключениях.
bpo-43905: Разрешить параметры с именами
astuple()
иasdict()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Тесты¶
bpo-45695: Сборки вне дерева с каталогом исходных текстов, доступным только для чтения, теперь проверяются CI.
bpo-19460: Добавить новый тест для
Lib/email/mime/nonmultipart.py::MIMENonMultipart
.bpo-45835: Исправление состояния гонки в тестах test_queue с несколькими «питающими» потоками.
bpo-45783: Тест для инструмента замораживания теперь обрабатывает перемещение и удаление файлов.
bpo-45745: Разрешить параметры с именами
--findleaks
и--fail-env-changed
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45701: Разрешить параметры с именами
tuple
иfunctools.lru_cache()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-44035: CI теперь проверяет, что файлы autoconf были перегенерированы с помощью текущего и непропатченного пакета autoconf.
bpo-45950: Разрешить параметры с именами _bootstrap_python и _bootstrap_python с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-45881: Разрешить параметры с именами configure и
--with-build-python
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40280: Платформа Emscripten теперь использует суффикс
.wasm
по умолчанию.bpo-40280: Отключение непригодных модулей расширения ядра в целях WASM/Emscripten.
bpo-40280: Разрешить параметры с именами
configure
иshutdown
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40280: Разрешить параметры с именами
configure
иfork1, getegid, geteuid, getgid, getppid, getuid, opendir, pipe, system, wait, ttyname
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33393: Разрешить параметры с именами
config.guess
иconfig.sub
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45866:
make regen-all
теперь выдает тот же результат при запуске из каталога, отличного от дерева исходных текстов: при сборке Python из дерева исходных текстов. pegen теперь удаляет из каталога заголовок «generated by pygen from <FILENAME>» Исправление Виктора Стиннера.bpo-40280: Разрешить параметры с именами
configure
иwasm32
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41498: Разрешить параметры с именами
sigset_t
иsignal
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаОсновано на патче Романа Юрчака для пиодида.
bpo-45881: Разрешить параметры с именами
setup.py
иCC
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45886: Разрешить параметры с именами
_freeze_module
иmake FREEZE_MODULE=../x86_64/Program/_freeze_module
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45873: Разрешить параметры с именами
_bootstrap_python
и$(PYTHON_FOR_REGEN)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45847: Разрешить параметры с именами
PY_STDLIB_MOD
иaddext()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45723: Добавьте помощники
autoconf
для сохранения и восстановления переменных окружения:SAVE_ENV
: Разрешить параметры с именами$CFLAGS
и$LDFLAGS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаRESTORE_ENV
: Разрешить параметры с именами$CFLAGS
и$LDFLAGS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаWITH_SAVE_ENV([SCRIPT])
: Разрешить параметры с именамиSCRIPT
иSAVE_ENV
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Патч Эрленда Э. Аасланда.
bpo-45573: Обязательные модули ядра, необходимые для загрузки Python, теперь находятся в
Modules/Setup.bootstrap
.bpo-45573: Разрешить параметры с именами
configure
иModules/Setup.stdlib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45573: Разрешить параметры с именами
configure
иPY_STDLIB_MOD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45816: Python теперь поддерживает сборку с Visual Studio 2022 (MSVC v143, VS Version 17.0). Исправление от Jeremiah Vivian.
bpo-45800: Разрешить параметры с именами
pyexpat
иconfigure
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45798: Разрешить параметры с именами
decimal
иconfigure
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45723: Разрешить параметры с именами configure и
--with-pkg-config
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45774: Разрешить параметры с именами
sqlite3
иconfigure
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45763: Разрешить параметры с именами
zlib
иbz2
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45747: зависимости сборки gdbm и dbm теперь обнаруживаются
configure
.bpo-45743: На macOS система сборки больше не передает
search_paths_first
компоновщику. Этот флаг используется по умолчанию со времен Xcode 4 / macOS 10.6.bpo-45723: Разрешить параметры с именами
configure.ac
иSTDC_HEADERS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45723:
configure
теперь выводит предупреждение при отсутствии pkg-config.bpo-45731: Разрешить параметры с именами
configure --enable-loadable-sqlite-extensions
иPY_SQLITE_ENABLE_LOAD_EXTENSION
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45723: configure.ac теперь использует пользовательские макросы-помощники и
AC_CACHE_CHECK
для упрощения и ускорения работы configure.bpo-45696: Пропускает шаг маршала для замороженных модулей, генерируя код на C, который создает набор готовых к использованию объектов кода. Это ускоряет время запуска еще на 10 % или более.
bpo-45561: Запустите инструмент smelly.py из $(srcdir).
Windows¶
bpo-46105: Исправлено вычисление
sys.path
в venv на Windows.bpo-45901: Разрешить параметры с именами
*.py
иscript.py args
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45616: Исправление способности Python Launcher различать версии 3.1 и 3.10 при явном запросе одной из них. Ранее 3.1 использовалась, если 3.10 была запрошена, но не установлена, а 3.10 использовалась, если 3.1 была запрошена, но 3.10 была установлена.
bpo-45850: Внесите изменения для сборки с глубоко замороженными модулями на Windows. Обратите внимание, что теперь нам требуется Python 3.10 в качестве «загрузочного» или «хостового» Python.
bpo-45732: Обновление поставляемого Tcl/Tk до версии 8.6.12.
bpo-45720: Внутренняя ссылка на
shlwapi.dll
была удалена, чтобы улучшить время запуска. Эта DLL больше не будет загружаться при запуске каждого процесса Python.
macOS¶
bpo-45732: Обновите установщик python.org macOS для использования Tcl/Tk 8.6.12.
C API¶
bpo-39026: Исправьте Python.h для сборки расширений C с помощью Xcode: удалите относительный include из
Include/cpython/pystate.h
.
Python 3.11.0 alpha 2¶
Дата выхода: 2021-11-05
Ядро и встроенные модули¶
bpo-45716: Разрешить параметры с именами
SyntaxError
иTrue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45688: Разрешить параметры с именами
sys.stdlib_module_names
и_scproxy
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45379: Уточните сообщение
ImportError
, когда мы пытаемся явно импортировать замороженный модуль, но замороженные модули отключены.bpo-44525: Специализация простых вызовов функций Python (без starargs, ключевого слова dict или закрытия)
bpo-45530: Случаи сортировки с использованием кортежей в качестве ключей теперь могут быть значительно быстрее в некоторых случаях. Исправление Тима Питерса.
Порядок результатов может отличаться от предыдущих версий, если элементы кортежа не определяют общее упорядочивание (см. Сравнение ценностей для получения информации об общем упорядочивании). В целом верно, что результат сортировки просто не может быть хорошо определен в отсутствие общего упорядочивания элементов списка.
bpo-45526: В obmalloc установите ADDRESS_BITS так, чтобы не игнорировать ни одного бита (раньше игнорировалось 16). Это безопаснее в том случае, если ядро предоставляет виртуальные адреса пользовательского пространства, диапазон которых превышает 48 бит.
bpo-30570: Разрешить параметры с именами
issubclass()
и__bases__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45521: Исправление ошибки в коде радиксного дерева obmalloc. На 64-битных машинах эта ошибка приводит к тому, что дерево хранит 46 бит виртуальных адресов, а не 48 бит, как предполагалось.
bpo-45494: Исправление падения парсера при сообщении об ошибках, связанных с недопустимыми символами продолжения. Исправление от Pablo Galindo.
bpo-45445: Python теперь не инициализируется, если находит недопустимую опцию
-X
в командной строке. Исправление от Пабло Галиндо.bpo-45340: Атрибуты объекта хранятся в массиве, а не в словаре. Словарь объекта создается лениво, только когда это необходимо. Снижает потребление памяти типичным объектом Python примерно на 30 %. Исправление Марка Шеннона.
bpo-45408: Исправление сбоя в парсере при сообщении об ошибках токенизатора, возникающих одновременно с обнаружением незакрытых круглых скобок. Исправление от Пабло Галиндо.
bpo-29410: Добавьте SipHash13 для алгоритма хэширования строк и используйте его по умолчанию.
bpo-45385: Исправление утечки ссылок из descr_check. Исправление от Donghee Na.
bpo-45367: Разрешить параметры с именами
BINARY_MULTIPLY
иBINARY_MULTIPLY_INT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21736: Разрешить параметры с именами
__file__
и__path__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45020: Разрешить параметры с именами
module.__spec__.loader_state.origname
иmodule.__spec__.name
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45324: В FrozenImporter.find_spec() мы теперь сохраняем информацию, необходимую в exec_module() для загрузки модуля. Это изменение в основном затрагивает внутренние детали, а не меняет поведение импортера.
bpo-45292: Разрешить параметры с именами PEP 654 и
ExceptionGroup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40116: Изменение в реализации разделенных словарей. Классы, экземпляры которых отличаются либо точным набором атрибутов, либо порядком, в котором эти атрибуты заданы, по-прежнему могут иметь общие ключи. Это не должно оказать заметного влияния на пользователей Python или C-API. Исправление Марка Шеннона.
bpo-44050: Расширения, указывающие, что они используют глобальное состояние (путем установки
m_size
в -1), снова могут использоваться в нескольких интерпретаторах. Это возвращает к поведению Python 3.8.bpo-44525: Установите инфраструктуру начальной специализации для опкода
CALL_FUNCTION
. Реализованы начальные специализации для вызовов функций C:CALL_FUNCTION_BUILTIN_O
для флагаMETH_O
.CALL_FUNCTION_BUILTIN_FAST
для флагаMETH_FASTCALL
без ключевых слов.CALL_FUNCTION_LEN
дляlen(o)
.CALL_FUNCTION_ISINSTANCE
дляisinstance(o, t)
.
bpo-44511: Улучшение генерируемого байткода для классов и шаблонов отображения.
bpo-43706: Разрешить параметры с именами
enumerate()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-45679: Разрешить параметры с именами
typing.Literal
иLiteral[True, 2]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42064: Преобразование
sqlite3
в многофазную инициализацию (PEP 489). Патчи Эрленда Э. Аасланда.bpo-45438: Исправьте строковое представление typing.Signature для общих встроенных типов.
bpo-45613: Разрешить параметры с именами
sqlite3
иsqlite3.threadsafety
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45574: Исправьте предупреждение о том, что
print_escape
не используется.bpo-45581: Разрешить параметры с именами
sqlite3.connect()
иMemoryError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45557: Разрешить параметры с именами
pprint.pprint()
иFalse
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44019: Разрешить параметры с именами
operator.call()
иoperator.__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42174:
shutil.get_terminal_size()
теперь возвращается к нормальным значениям, если количество столбцов или строк равно 0.bpo-35673: Разрешить параметры с именами
__loader__
иimportlib.machinery.NamespaceLoader
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45515: Разрешить параметры с именами
zoneinfo
иdatetime
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45475: Разрешить параметры с именами
gzip.GzipFile
иbz2.BZ2File
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45489: Разрешить параметры с именами
ForwardRef
и|
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42222: Удалена устаревшая поддержка аргументов с плавающей запятой в randrange().
bpo-45428: Исправление регрессии в py_compile при чтении имен файлов со стандартного ввода.
bpo-45467: Исправление инкрементного декодера и считывателя потока в кодеке «raw-unicode-escape». Ранее они не срабатывали, если управляющая последовательность была разделена.
bpo-45461: Исправление инкрементного декодера и считывателя потока в кодеке «unicode-escape». Ранее они не срабатывали, если кодовая последовательность была разделена.
bpo-45239: Разрешить параметры с именами
email.utils.parsedate_tz()
иUnboundLocalError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45417: Исправление квадратичного поведения в модуле enum: Создание классов перечислений с большим количеством записей было квадратичным.
bpo-45249: Разрешить параметры с именами
traceback.print_exc()
иend_offset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45416: Разрешить параметры с именами
asyncio.Condition
иasyncio.Lock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20028: Пустой escapechar/quotechar не допускается при инициализации
csv.Dialect
. Исправление от Ваджраски Кока и Донгхи На.bpo-44904: Разрешить параметры с именами
doctest
иclassmethod
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45406: Разрешить параметры с именами
inspect.getmodule()
иFileNotFoundError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45411: Добавьте расширения для файлов с субтитрами - .srt и .vtt - в модуль mimetypes.py.
bpo-10716: Перевели pydoc на HTML5 (без изменения внешнего вида). Побочным эффектом является обновление
ServerHTMLDoc
xmlrpc, который теперь тоже использует CSS. cgitb теперь меньше полагается на pydoc (так как не может использовать CSS-файл).bpo-45262: Предотвращение use-after-free в asyncio. Убедитесь, что кэшированный держатель запущенного цикла очищается при деаллоке, чтобы предотвратить использование после освобождения в get_running_loop
bpo-45386: Разрешить параметры с именами
xmlrpc.client
иstrftime
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20028: Улучшено сообщение об ошибке при инициализации
csv.Dialect
. Исправления от Ваджраски Кока и Донгхи На.bpo-45343: Обновление поставляемых pip до версии 21.2.4 и setuptools до версии 58.1.0
bpo-45328: Разрешить параметры с именами
http.client.HTTPConnection
иTCP_NODELAY
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45243: Разрешить параметры с именами
setlimit()
иgetlimit()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45320: Удалено из модуля
inspect
:- функция
getargspec
, устаревшая с Python 3.0; используйте вместо этого
inspect.signature()
илиinspect.getfullargspec()
.
- функция
formatargspec
: Разрешить параметры с именамиinspect.signature()
иSignature
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаSignature.from_builtin
: Разрешить параметры с именамиSignature.from_function
иSignature.from_callable()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Патч от Хьюго ван Кеменаде.
bpo-45192: Разрешить параметры с именами
tempfile._infer_return_type
иdir
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПатч от Кьюнгмина Ли.
bpo-45160: При отслеживании переменной tkinter, используемой в ttk OptionMenu, обратные вызовы больше не выполняются дважды.
bpo-25625: Разрешить параметры с именами
chdir()
иchdir()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24139: Добавьте поддержку расширенных кодов результатов SQLite в
sqlite3.Error
. Исправление Эрленда Э. Аасланда.bpo-24444: Исправлена ошибка, возникавшая при отображении справки
argparse
, когда в справке для опции было установлено 1+ пробелов или когда аргумент choices являлся пустым контейнером.bpo-44547: Разрешить параметры с именами
Fraction.__int__
иfractions.Fraction
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40321: Разрешить параметры с именами
urllib
и RFC 7538 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41374: Убедитесь, что константы
socket.TCP_*
открыты в Cygwin 3.1.6 и выше.bpo-35970: Добавляет флаг помощи в интерфейс командной строки модуля base64. Патч внесен Робертом Куской.
Документация¶
bpo-45726: Разрешить параметры с именами
functools.singledispatch()
иfunctools.singledispatchmethod
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45680: Разрешить параметры с именами
GenericAlias
и__class_getitem__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45618: Обновите версию Sphinx, использованную для создания документации, до 4.2.0. Исправление от Maciej Olko.
bpo-45655: Добавьте новый раздел «соответствующие PEP» в верхнюю часть документации для модуля
typing
. Исправление Алекса Уэйгуда.bpo-45604: Разрешить параметры с именами
level
иmultiprocessing.log_to_stderr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45516: Добавьте описание протокола в документацию
importlib.abc.TraversableResources
.bpo-45464: Упоминание в документации Built-in Exceptions о том, что наследование от нескольких типов исключений в одном подклассе не рекомендуется из-за возможной несовместимости расположения памяти.
bpo-45449: Разрешить параметры с именами PEP 585 и
collections.abc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45516: Добавьте описание протокола в документацию
importlib.abc.Traversable
.bpo-20692: Добавьте запись в FAQ по программированию, объясняющую, что для доступа к атрибуту литерала int требуется либо пробел после литерала, либо круглые скобки вокруг него.
Тесты¶
bpo-45678: Добавьте тесты для сценариев, в которых
functools.singledispatchmethod
укладывается поверх метода, который уже обернут двумя другими декораторами. Исправление Алекса Уэйгуда.bpo-45578: Добавьте тесты для
dis.distb()
bpo-45678: Добавьте тесты, чтобы убедиться, что
functools.singledispatchmethod
правильно обертывает атрибуты целевой функции.bpo-45668: Тесты PGO теперь проходят, когда Python собран без модулей расширения тестов.
bpo-45577: Разрешить параметры с именами
pickle
иtest_zoneinfo
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45566: Разрешить параметры с именами
test_frozen_pickle
иtest_dataclasses
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43592:
test.libregrtest
теперь повышает мягкий лимит ресурсов для максимального количества дескрипторов файлов, когда значение по умолчанию слишком мало для нашего тестового набора, как это часто случалось на macOS.bpo-39679: Разрешить параметры с именами
@functools.singledispatchmethod
и@classmethod
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45410: Когда libregrtest порождает рабочий процесс, stderr теперь записывается в stdout, чтобы сохранить порядок сообщений. Используйте одну трубу для stdout и stderr, а не две. Раньше сообщения выводились не по порядку, что затрудняло анализ логов buildbot Исправлено Виктором Стиннером.
bpo-45402: Исправьте test_tools.test_sundry(), когда Python собирается из дерева: исправьте, как инструмент freeze_modules.py находит программу _freeze_module. Исправление Виктора Стиннера.
bpo-45403: Исправьте test_sys.test_stdlib_dir(), когда Python собран вне дерева исходных текстов: сравнивайте нормализованные пути. Исправление Виктора Стиннера.
bpo-45400: Исправьте test_name_error_suggestions_do_not_trigger_for_too_many_locals() из test_exceptions, если имя каталога содержит «a1» (например, «Python-3.11.0a1»): используйте более строгое регулярное выражение. Исправление Виктора Стиннера.
bpo-10572: Разрешить параметры с именами
sqlite3
иtest_sqlite
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-43158: Разрешить параметры с именами
setup.py
и_uuid
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45666: Разрешить параметры с именами
swprintf
и%s
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45548: Разрешить параметры с именами
Modules/Setup
иModules/makesetup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45548: Разрешить параметры с именами
math
иcmath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45595: Разрешить параметры с именами
setup.py
иmakesetup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45571: Разрешить параметры с именами
Modules/Setup
иPY_CFLAGS_NODIST
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45570: Разрешить параметры с именами
pyexpat
и_elementtree
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43974: Разрешить параметры с именами
setup.py
иPy_BUILD_CORE_MODULE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45548: Заполните недостающие записи в Modules/Setup.
bpo-45532: Разрешить параметры с именами
sys.version
иmain
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45536: Скрипт
configure
теперь проверяет, предоставляют ли заголовки и библиотеки OpenSSL необходимые API. Проверяется большинство распространенных API. Проверка обнаруживает устаревший или отсутствующий OpenSSL. Сбои не приводят к остановке конфигурации.bpo-45221: Разрешить параметры с именами
LDFLAGS
иCPPFLAGS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45440: Разрешить параметры с именами
<math.h>
иcopysign()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45405: Разрешить параметры с именами
internal configure error
иconfigure
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45433: Избегайте связывания libpython с libcrypt.
Windows¶
bpo-43652: Обновление Tcl/Tk до версии 8.6.11, на этот раз действительно. Предыдущее обновление ошибочно включало 8.6.10.
bpo-45337: venv теперь предупреждает, когда к созданной среде может потребоваться доступ по другому пути из-за перенаправлений, ссылок или перекрестков. Также теперь он корректно устанавливает или обновляет компоненты, если требуется альтернативный путь.
bpo-43851: Сборка SQLite
SQLITE_OMIT_AUTOINIT
под Windows. Исправление от Эрленда Э. Аасланда.
macOS¶
bpo-44828: Избегайте сбоя в диалоговом окне файла tkinter на macOS 12 Monterey при использовании Tk 8.6.11, предоставляемого установщиками python.org macOS. Исправление внесено Марком Каллером из проекта Tk.
IDLE¶
bpo-45495: Добавьте контекстные ключевые слова „case“ и „match“ в список завершений.
C API¶
bpo-29103:
PyType_FromSpec*
теперь копирует имя класса из спецификации в буфер, принадлежащий классу, так что оригинал может быть безопасно деаллоцирован. Исправление Петра Викторина.bpo-45522: Внутренние фрилисты для объектов frame, float, list, dict, async-генераторов и контекста теперь могут быть отключены.
bpo-35134: Разрешить параметры с именами
PyWeakref_GET_OBJECT()
иPyWeakReference
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35081: Разрешить параметры с именами
interpreteridobject.h
иInclude/
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35134: Разрешить параметры с именами
cellobject.h
иclassobject.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45474: Следующие элементы больше не доступны, когда определена
Py_LIMITED_API
:макрос
Py_MARSHAL_VERSION
Они не являются частью limited API.
Патч Виктора Стиннера.
bpo-45434: Разрешить параметры с именами
pystrhex.h
и<Python.h>
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45440: Разрешить параметры с именами
Py_FORCE_DOUBLE()
иPy_IS_INFINITY()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45434: Разрешить параметры с именами
<Python.h>
и<stdlib.h>
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41123: Разрешить параметры с именами
Py_UNICODE_COPY()
иPy_UNICODE_FILL()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45412: Удалите следующие математические макросы, использующие переменную
errno
:Py_ADJUST_ERANGE1()
Py_ADJUST_ERANGE2()
Py_OVERFLOWED()
Py_SET_ERANGE_IF_OVERFLOW()
Py_SET_ERRNO_ON_MATH_ERROR()
Патч Виктора Стиннера.
bpo-45395: Пользовательские замороженные модули (массив, установленный в
PyImport_FrozenModules
) теперь рассматриваются как дополнения, а не заменяют все замороженные модули по умолчанию. Замороженные модули stdlib по-прежнему можно отключить, установив поле «code» записи пользовательского массива в NULL.bpo-43760: Разрешить параметры с именами
PyThreadState_EnterTracing()
иPyThreadState_LeaveTracing()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44220:
PyStructSequence_UnnamedField
добавлено в стабильный ABI.
Python 3.11.0 alpha 1¶
Дата выхода: 2021-10-05
Безопасность¶
bpo-42278: Разрешить параметры с именами
tempfile.mktemp()
иTemporaryDirectory
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44600: Исправление неправильных номеров строк при трассировке некоторых неудачных шаблонов в операторах match. Исправление от Чарльза Беркланда.
bpo-41180: Разрешить параметры с именами
marshal
иcode.__init__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44394: Обновите вендовую копию libexpat до версии 2.4.1 (с 2.2.8), чтобы получить исправление для CVE-2013-0340 уязвимости «Billion Laughs». Эта копия чаще всего используется в Windows и macOS.
bpo-43124: Разрешить параметры с именами
putcmd
иsmtplib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44022: Разрешить параметры с именами
http.client
и100 Continue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-43760: Количество аппаратных ветвлений на одну диспетчерскую инструкцию уменьшено с двух до одного за счет добавления специальной инструкции для трассировки. Исправление Марка Шеннона.
bpo-45061: Добавьте деаллокатор к типу bool, чтобы обнаружить ошибки рефкаунта в расширениях на C, которые по ошибке вызывают Py_DECREF(Py_True) или Py_DECREF(Py_False). Также выявляются ошибки пересчета при ошибочном уничтожении синглтона пустого кортежа или синглтона пустой строки Unicode. Исправление Виктора Стиннера.
bpo-24076: sum() была дополнительно оптимизирована для суммирования одноразрядных целых чисел.
bpo-45190: Обновление баз данных Юникода до версии Юникод 14.0.0.
bpo-45167: Исправьте глубокое копирование объектов
types.GenericAlias
.bpo-45155: Разрешить параметры с именами
int.to_bytes()
иint.from_bytes()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44219: Разрешить параметры с именами
isatty
иos.isatty()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44959: Добавлена обратная реакция на модули расширения с суффиксом „.sl“ на HP-UX
bpo-45121: Разрешить параметры с именами
Protocol.__init__
иRecursionError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44348: Разрешить параметры с именами
BaseException
иRecursionError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45123: Исправьте PyAiter_Check, чтобы он проверял только наличие __anext__ (не __aiter__). Переименуйте PyAiter_Check в PyAIter_Check, PyObject_GetAiter -> PyObject_GetAIter.
bpo-1514420: Интерпретатор больше не пытается открыть файлы с именами в угловых скобках (например, «<string>» или «<stdin>») при форматировании исключения.
bpo-41031: Совпадение форматирования непечатаемых исключений и исключений в модуле
__main__
в коде C и Python.bpo-37330: Разрешить параметры с именами
open()
иio.open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45083: Когда интерпретатор выводит исключение, его имя теперь содержит полное имя класса. Ранее к имени модуля присоединялось только имя класса, что иногда приводило к некорректному отображению полного имени.
(Эта проблема повлияла только на рендеринг исключений в коде C, модуль
traceback
уже использовал qualname).bpo-34561: Разрешить параметры с именами
powersort()
иlist.sort()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45056: Компилятор теперь удаляет неиспользуемые константы из co_consts.
bpo-45020: Добавьте новый параметр командной строки, «-X frozen_modules=[on|off]», чтобы отказаться от использования (или включить) необязательных замороженных модулей. По умолчанию установлено значение «on» (или «off», если он выполняется из дерева исходных текстов).
bpo-45012: Разрешить параметры с именами
posix
иstat()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45018: Исправлено замазывание итераторов диапазонов, которые выполняли итерацию более
2**32
раз.bpo-45000: Разрешить параметры с именами
SyntaxError
и__debug__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44963: Разрешить параметры с именами
send()
иthrow()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44962: Исправление гонки в WeakKeyDictionary, WeakValueDictionary и WeakSet, когда два потока пытаются зафиксировать последнее ожидающее удаление. Это исправляет asyncio.create_task и устраняет потерю данных в asyncio.run, когда не выполняется shutdown_asyncgens
bpo-24234: Разрешить параметры с именами
__bytes__()
иbytes
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24234: Разрешить параметры с именами
__complex__()
иcomplex
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44954: Исправлена ошибка, при которой результат
float.fromhex('0x.8p-1074')
округлялся не в ту сторону.bpo-44947: Уточнение синтаксической ошибки для запятых в конце операторов импорта. Исправление от Пабло Галиндо.
bpo-44945: Специализация инструкции BINARY_ADD с использованием механизма PEP 659. Добавляет пять новых инструкций:
BINARY_ADD_ADAPTIVE
BINARY_ADD_FLOAT
BINARY_ADD_INT
BINARY_ADD_UNICODE
BINARY_ADD_UNICODE_INPLACE_FAST
bpo-44929: Исправление некоторых крайних случаев представления строки
enum.Flag
в REPL. Исправление от Пабло Галиндо.bpo-44914: Теги версий классов больше не перерабатываются.
Это означает, что тег версии служит уникальным идентификатором состояния класса. Мы полагаемся на это для эффективной специализации LOAD_ATTR и других инструкций.
bpo-44698: Разрешить параметры с именами
float
иcomplex
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44895: Разрешить параметры с именами
PYTHONDUMPREFSFILE
и--with-trace-refs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44900: Добавьте пять суперинструкций для ускорения PEP 659:
LOAD_FAST LOAD_FAST
ХРАНИТЬ_БЫСТРО ЗАГРУЖАТЬ_БЫСТРО
LOAD_FAST LOAD_CONST
LOAD_CONST LOAD_FAST
STORE_FAST STORE_FAST
bpo-44889: Первоначальная реализация адаптивной специализации
LOAD_METHOD
. Были добавлены следующие специализированные формы:LOAD_METHOD_CACHED
LOAD_METHOD_MODULE
LOAD_METHOD_CLASS
bpo-44890: Статистика специализации всегда собирается в отладочных сборках.
bpo-44885: Исправление расположения ast в f-строках со спецификациями формата и повторяющимися выражениями. Исправление от Pablo Galindo
bpo-44878: Удаляем цикл из интерпретатора байткода. Все инструкции завершаются макросом DISPATCH, поэтому цикл теперь не нужен.
bpo-44878: Убрали оператор switch для цикла интерпретатора при использовании вычисляемых gotos. Это гарантирует, что у нас будет только одна таблица диспетчеризации в интерпретаторе.
bpo-44874: Разрешить параметры с именами
Py_TRASHCAN_SAFE_BEGIN
иPy_TRASHCAN_SAFE_END
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44872: Используйте новые макросы мусорной корзины (Py_TRASHCAN_BEGIN/END) в файле frameobject.c вместо старых (Py_TRASHCAN_SAFE_BEGIN/END).
bpo-33930: Исправление ошибки сегментации с глубокой рекурсией при очистке объектов метода. Исправление от Augusto Goulart и Pablo Galindo.
bpo-25782: Исправлена ошибка, при которой
PyErr_SetObject
зависал, когда текущее исключение имело цикл в своей контекстной цепочке.bpo-44856: Разрешить параметры с именами
update_bases()
и__build_class__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44826: Начальная реализация адаптивной специализации STORE_ATTR
Добавлены три специализированные формы STORE_ATTR:
STORE_ATTR_SLOT
STORE_ATTR_SPLIT_KEYS
STORE_ATTR_WITH_HINT
bpo-44838: Исправлена ошибка, из-за которой парсер выдавал некорректный пользовательский
SyntaxError
для недопустимых выражений „if“. Исправление от Пабло Галиндо.bpo-44821: Создавайте словари экземпляров (__dict__) с нетерпением, чтобы улучшить регулярность расположения объектов и помочь специализации.
bpo-44792: Улучшение синтаксических ошибок для выражений if. Исправление от Мигеля Брито
bpo-34013: Обобщение пользовательского сообщения об ошибке «Недопустимое наследственное утверждение» (как в случае вызова «print» без круглых скобок) для включения более общих выражений. Исправление от Pablo Galindo
bpo-44732: Разрешить параметры с именами
types.Union
иtypes.UnionType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44725: Раскрыть статистику специализации в python через
_opcode.get_specialization_stats()
.bpo-44717: Улучшение AttributeError при циклическом импорте подмодулей.
bpo-44698: Исправление неопределенного поведения при экспоненте сложных объектов.
bpo-44653: Поддержка типов
typing
при подстановке параметров в тип объединения.bpo-44676: Добавьте возможность сериализации объектов
types.Union
. Патч предоставлен Юрием Карабасом.bpo-44633: Разрешить параметры с именами
TypeError
иNotImplemented
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44661: Обновите
property_descr_set
, чтобы использовать vectorcall, если это возможно. Исправление от Donghee Na.bpo-44662: Разрешить параметры с именами
__module__
иtypes.Union
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44655: Включайте имя типа в ошибки с неустановленным атрибутом __slots__. Исправление от Пабло Галиндо
bpo-44655: Не включайте отсутствующий атрибут с тем же именем, что и неработающий, когда предлагаете предложения по отсутствующим атрибутам. Исправление от Pablo Galindo
bpo-44646: Исправьте хэш типа union: он больше не зависит от порядка аргументов.
bpo-44636: Разрешить параметры с именами
int | int
иint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44611: В Windows,
os.urandom()
: использует BCryptGenRandom API вместо CryptGenRandom API, который устарел в Microsoft Windows API. Исправление от Donghee Na.bpo-44635: Разрешить параметры с именами
None
иtype(None)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26280: Реализуйте адаптивную специализацию для BINARY_SUBSCR
Добавлены три специализированные формы BINARY_SUBSCR:
BINARY_SUBSCR_LIST_INT
BINARY_SUBSCR_TUPLE_INT
ДВОИЧНЫЙ_СУБСКР_ДИКТ
bpo-44589: Разрешить параметры с именами
match
иSyntaxError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44606: Разрешить параметры с именами
__instancecheck__
и__subclasscheck__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42073: Декоратор
@classmethod
теперь может обертывать другие дескрипторы типа classmethod.bpo-41972: Настроили алгоритм поиска строк в fastsearch.h так, чтобы внутренний цикл был короче для большинства случаев.
bpo-44590: Все необходимые данные для выполнения функции Python (локальные переменные, стек и т.д.) теперь хранятся в потоковом стеке. Объекты фреймов лениво выделяются по требованию. Это увеличивает производительность примерно на 7 % в стандартном наборе бенчмарков. Интроспекция и отладка не затрагиваются, так как объекты фреймов всегда доступны, когда это необходимо. Исправление Марка Шеннона.
bpo-44584: Отладка потоков (
PYTHONTHREADDEBUG
переменная окружения) устарела в Python 3.10 и будет удалена в Python 3.12. Эта возможность требует отладочной сборки Python. Исправление Виктора Стиннера.bpo-43895: Из dynload_shlib.c удален устаревший внутренний кэш дескрипторов файлов общих объектов, добавленный в 1995 году, который пытался, но не гарантировал, что .so не будет dlopen’ed дважды, чтобы обойти недостатки операционных систем posix-ish середины 1990-х годов.
bpo-44490: Разрешить параметры с именами
typing
иtypes.Union
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43950: Объекты кода теперь могут предоставлять информацию о столбцах для инструкций, если она доступна. Это используется при печати трассировки, чтобы показать выражения, ответственные за ошибки.
Вклад внесли Пабло Галиндо, Батухан Таская и Аммар Аскар в рамках PEP 657.
bpo-44562: Разрешить параметры с именами
PyObject_GC_Del()
иtypes.GenericAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41486: Исправлена ошибка потребления памяти и производительности копирования в ранних бета-версиях 3.10, если кто-то использовал выходной буфер размером более 4 Гб с zlib.decompress для входных данных, которые расширялись до такого размера.
bpo-43908: Разрешить параметры с именами
Py_TPFLAGS_IMMUTABLETYPE
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44553: Реализуйте методы GC для
types.Union
, чтобы разорвать циклы ссылок и предотвратить утечки памяти.bpo-44490: Разрешить параметры с именами
__parameters__
и__getitem__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44523: Разрешить параметры с именами
hash()
иweakref.proxy
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44483: Разрешить параметры с именами
types.Union
и__module__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44486: Модули всегда будут иметь словарь, даже если они созданы
types.ModuleType.__new__()
bpo-44472: Исправление функциональности ltrace при возникновении исключений. Исправление от Pablo Galindo
bpo-12022: Разрешить параметры с именами
TypeError
иAttributeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44297: Убедитесь, что при входе в область понимания задан номер строки. Это гарантирует, что обратные трассировки, включающие выражения генератора, будут показывать правильный номер строки.
bpo-44456: Улучшение синтаксической ошибки при смешивании позиционных шаблонов и шаблонов ключевых слов. Исправление от Pablo Galindo.
bpo-44409: Исправление информации о местоположении ошибки для ошибок токенизатора, возникающих при инициализации токенизатора. Исправление от Пабло Галиндо.
bpo-44396: Исправление возможного сбоя в токенизаторе при возникновении синтаксических ошибок для незакрытых строк. Исправление от Пабло Галиндо.
bpo-44376: Разрешить параметры с именами
i**2
иpow(i, 2)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44313: Разрешить параметры с именами
LOAD_METHOD
иCALL_METHOD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44338: Реализуйте адаптивную специализацию для LOAD_GLOBAL
Добавлены две специализированные формы LOAD_GLOBAL:
LOAD_GLOBAL_MODULE
LOAD_GLOBAL_BUILTIN
bpo-44368: Улучшение синтаксических ошибок для недопустимых целей «as». Исправление от Pablo Galindo
bpo-44349: Исправление краевого случая при отображении текста из файлов с кодировкой, содержащей синтаксические ошибки. Исправление от Пабло Галиндо.
bpo-44337: Начальная реализация адаптивной специализации LOAD_ATTR
Добавлены четыре специализированные формы LOAD_ATTR:
LOAD_ATTR_SLOT
LOAD_ATTR_SPLIT_KEYS
LOAD_ATTR_WITH_HINT
LOAD_ATTR_MODULE
bpo-44335: Исправление регрессии при определении неправильных символов в синтаксических ошибках. Исправление от Pablo Galindo
bpo-43693: Вычисление смещений переменных ячеек производится в компиляторе, а не во время выполнения. Это уменьшает накладные расходы на обработку ячеистых и свободных переменных, особенно в случае, когда переменная является одновременно аргументом и ячеистой переменной.
bpo-44317: Улучшение ошибки токенизатора с улучшенным расположением. Исправление от Pablo Galindo.
bpo-44304: Разрешить параметры с именами
sqlite3
иsqlite.Statement
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44305: Разрешить параметры с именами
try
иexcept
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43413: Разрешить параметры с именами
tuple
иlist
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43667: Улучшение поддержки Юникода в локалях, отличных от UTF, в Oracle Solaris. Эта проблема не затрагивает другие системы Solaris.
bpo-43693: Добавлен новый опкод MAKE_CELL, который эффективно переносит часть работы, выполняемой при входе в функцию, в компилятор и в цикл eval. Помимо создания необходимых объектов ячеек, новый опкод преобразует соответствующие аргументы (и другие локали) в переменные ячеек при входе в функцию.
bpo-44232: Разрешить параметры с именами
type()
иtype_new()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44201: Избавление от побочных эффектов проверки специализированных синтаксических ошибок в REPL, которые заставляли его запрашивать лишние токены после обнаружения синтаксической ошибки. Исправление от Pablo Galindo
bpo-43693: Разрешить параметры с именами
PyCodeObject
иco_fastlocalnames
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44184: Исправление падения при выходе из Python, когда функция деаллокатора удаляла последнюю сильную ссылку на тип кучи. Исправление Виктора Стиннера.
bpo-44187: Реализуйте ускорение в интерпретаторе. Пока это не дает никаких преимуществ, но способствует будущим оптимизациям. Полное объяснение см. в PEP 659.
bpo-44180: Парсер не сообщает об общих синтаксических ошибках, которые происходят в позиции, расположенной дальше, чем та, которой он достиг при первом проходе. Исправление от Пабло Галиндо
bpo-44168: Исправлено сообщение об ошибке в парсере при использовании аргументов с ключевыми словами в недопустимых выражениях. Исправление от Pablo Galindo
bpo-44156: Кэши строк в
compile.c
теперь совместимы с субинтерпретаторами.bpo-44143: Исправлен сбой в парсере, который проявлялся при возникновении ошибок токенизатора, когда имелось существующее исключение. Исправление от Пабло Галиндо.
bpo-44032: Переместите «быстрые» локали и другие переменные из объекта frame в потоковый datastack.
bpo-44114: Исправление некорректных сигнатур функций dictkeys_reversed и dictitems_reversed в коде на C, которые нарушали сборки webassembly.
bpo-44110: Улучшить сообщение об ошибке
str.__getitem__()
bpo-26110: Разрешить параметры с именами
CALL_METHOD_KW
иCALL_METHOD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28307: Компилятор теперь оптимизирует простое форматирование в стиле C с литеральным форматом, содержащим только коды формата %s, %r и %a, преобразуя их в выражения f-строк.
bpo-43149: Исправьте сообщение о синтаксической ошибке, касающейся нескольких типов исключений, чтобы оно не ссылалось на «группы исключений». Исправление от Pablo Galindo
bpo-43822: Парсер будет отдавать приоритет ошибкам токенизатора, а не пользовательским синтаксическим ошибкам при вызове исключений. Исправление от Pablo Galindo.
bpo-40222: «Нулевая стоимость» обработки исключений.
Использует таблицу поиска, чтобы определить, как обрабатывать исключения.
Удалены блочные инструкции SETUP_FINALLY и POP_TOP, что устраняет накладные расходы на выполнение операторов try.
Уменьшает размер объекта кадра примерно на 60 %.
Патч Марка Шеннона
bpo-43918: Разрешить параметры с именами
default
иanext
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43833: Выдает предупреждение об устаревании, если за числовым литералом сразу следует одно из ключевых слов: and, else, for, if, in, is, or. Вызывает синтаксическую ошибку с более информативным сообщением, если за ним сразу следует другое ключевое слово или идентификатор.
bpo-43879: Добавьте native_thread_id в PyThreadState. Исправление от Gabriele N. Tornetta.
bpo-43693: Вычисляет смещения ячеек относительно локалей в компиляторе. Позволяет интерпретатору обрабатывать локали и ячейки как единый массив, что немного эффективнее. Также сделайте опкод LOAD_CLOSURE псевдонимом для LOAD_FAST. Сохранение LOAD_CLOSURE помогает сделать байткод немного более читабельным.
bpo-17792: Более точные сообщения об ошибках при доступе к несвязанным locals или свободным vars.
bpo-28146: Исправьте непонятное сообщение об ошибке в
str.format()
.bpo-11105: Разрешить параметры с именами
ast.AST
иcompile()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39091: Исправление сбоя при передаче неисключения в метод
throw()
генератора. Исправлено Ноем Оксеромbpo-33346: Асинхронные постижения теперь разрешены внутри постижений в асинхронных функциях. Внешние постижения неявно становятся асинхронными.
Библиотека¶
bpo-45371: Исправление проблемы с clang rpath в
distutils
. UnixCCompiler теперь использует корректную опцию clang для добавления каталога библиотеки времени выполнения (rpath) к разделяемой библиотеке.bpo-45329: Исправление освобожденного доступа к памяти в
pyexpat.xmlparser
при сборке с установленной библиотекой expat <= 2.2.0.bpo-41710: Разрешить параметры с именами
sem_clockwait()
иthreading.Lock.acquire()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1596321: Разрешить параметры с именами
threading._shutdown()
иthreading
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45274: Разрешить параметры с именами
Thread.join()
иthreading
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21302: Разрешить параметры с именами
time.sleep()
иnanosleep()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21302: Разрешить параметры с именами
time.sleep()
и -7 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45238: Исправьте
unittest.IsolatedAsyncioTestCase.debug()
: теперь запускаются асинхронные методы и обратные вызовы.bpo-36674: Разрешить параметры с именами
unittest.TestCase.debug()
иunittest.SkipTest
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45235: Исправление проблемы, когда argparse не сохранял значения в указанном пространстве имен при использовании подпарсера с настройками по умолчанию.
bpo-45183: Пусть zipimport.zipimporter.find_spec() не вызывает исключение, когда основной zip-файл был удален, а внутренний кэш сброшен через invalidate_cache().
bpo-45234: Разрешить параметры с именами
copyfile()
иcopy()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45228: Исправление переполнения буфера стека при разборе сетевого адреса J1939.
bpo-45225: используйте функцию map вместо genexpr в capwords.
bpo-42135: Исправьте опечатку:
importlib.find_loader
действительно планируется удалить в Python 3.12, а не в 3.10, как остальные в PR 25169.Патч от Хьюго ван Кеменаде.
bpo-20524: Разрешить параметры с именами
.format()
иstr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45168: Разрешить параметры с именами
dis.dis()
иco_consts
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21302: Разрешить параметры с именами
time.sleep()
иclock_nanosleep()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45173: Разрешить параметры с именами
configparser
иSafeConfigParser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПатч от Хьюго ван Кеменаде.
bpo-44987: Чистые ASCII-строки теперь нормализуются за постоянное время по
unicodedata.normalize()
. Исправление от Donghee Na.bpo-35474: Разрешить параметры с именами
mimetypes.guess_all_extensions()
иstrict=False
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45166: Разрешить параметры с именами
typing.get_type_hints()
иFinal
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45162: Удаление многих старых устаревших функций
unittest
:fail*
: Разрешить параметры с именамиassert*
иTestCase
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаСломанный от начала
TestCase
методassertDictContainsSubset()
.Игнорируется
<unittest.TestLoader.loadTestsFromModule> TestLoader.loadTestsFromModule()
параметр use_load_tests.Старый псевдоним
_TextTestResult
отTextTestResult
.
bpo-38371: Разрешить параметры с именами
split()
и_tkinter.TkappType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20499: Повышение скорости и точности работы функции statistics.pvariance().
bpo-45132: Разрешить параметры с именами
__getitem__()
иxml.dom.pulldom.DOMEventStream
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПатч от Хьюго ван Кеменаде.
bpo-45129: Разрешить параметры с именами
asyncio.loop.create_datagram_endpoint()
иSO_REUSEADDR
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПатч от Хьюго ван Кеменаде.
bpo-45124: Команда
bdist_msi
, устаревшая в Python 3.9, теперь удалена.Вместо этого используйте
bdist_wheel
(пакеты колес).Патч от Хьюго ван Кеменаде.
bpo-30856: Разрешить параметры с именами
unittest.TestResult
иaddFailure()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45034: Разрешить параметры с именами
struct.pack
и'H'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25894:
unittest
теперь всегда сообщает о пропущенных и неудачных подтестах отдельно: отдельными символами в режиме по умолчанию и отдельными строками в режиме verbose. Также теперь выводится описание теста для ошибок при очистке тестовых методов, классов и модулей.bpo-45081: Разрешить параметры с именами
typing.Protocol
и__init__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45085: Разрешить параметры с именами
binhex
иbinascii
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаa2b_hqx()
,b2a_hqx()
;rlecode_hqx()
,rledecode_hqx()
.
Функция
binascii.crc_hqx()
остается доступной.Патч Виктора Стиннера.
bpo-40360: Разрешить параметры с именами
lib2to3
и PEP 617 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45075: Разрешить параметры с именами
traceback.StackSummary.format_frame()
иtraceback.StackSummary.format_frame_summary()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаОбновили код и документацию, чтобы лучше различать frame и FrameSummary.
bpo-31299: Разрешить параметры с именами
None
иformat_frame()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41620: Разрешить параметры с именами
run()
иTestResult
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45021: Исправление потенциального тупика при выключении дочерних вилок при использовании модуля
concurrent.futures
.bpo-43913: Исправлены ошибки в очистке классов и модулей в
unittest
:Функции, зарегистрированные с
addModuleCleanup()
, не вызывались, если пользователь не определилtearDownModule()
в своем тестовом модуле.addClassCleanup()
: Разрешить параметры с именамиtearDownClass
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаTestResult
: Разрешить параметры с именамиaddClassCleanup()
иaddModuleCleanup()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаОшибки в функциях, зарегистрированных с
addClassCleanup()
иaddModuleCleanup()
, некорректно обрабатывались в буферизованном и отладочном режимах.Ошибки в
setUpModule()
и функции, зарегистрированные сaddModuleCleanup()
, сообщались в неправильном порядке.И несколько более мелких ошибок.
bpo-45030: Исправление целочисленного переполнения при пикировании и копировании итератора диапазона.
bpo-45001: Повышена устойчивость разбора даты электронной почты к недоброкачественному вводу, а именно к заголовку
Date:
, содержащему только пробельные символы. Исправление от Wouter Bolsterlee.bpo-45010: Разрешить параметры с именами
__div__
иunittest.mock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39218: Разрешить параметры с именами
x*x
иx**2
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43613: Разрешить параметры с именами
gzip.compress()
иgzip.decompress()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37596: Разрешить параметры с именами
set
иfrozenset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44019: Разрешить параметры с именами
operator.call
иoperator.call(obj, *args, **kwargs) == obj(*args, **kwargs)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42255: Разрешить параметры с именами
webbrowser.MacOSX
иwebbrowser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44955: Разрешить параметры с именами
stopTestRun()
иstartTestRun()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39039: tarfile.open поднимает
ReadError
при возникновении ошибки zlib во время извлечения файла.bpo-44935: Разрешить параметры с именами
subprocess
иos.posix_spawn()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44911:
IsolatedAsyncioTestCase
больше не будет выбрасывать исключение при отмене просочившихся задач. Исправление от Bar Harel.bpo-41322: Добавлена
DeprecationWarning
для тестов и async-тестов, возвращающих значение!=None (так как это может указывать на неправильно написанный тест, например, тест, написанный как генераторная функция).bpo-44524: Сделать сообщение об исключении более полезным, когда подкласс из набирает псевдоним специальной формы. Патч предоставлен Юрием Карабасом.
bpo-38956: Разрешить параметры с именами
argparse.BooleanOptionalAction
иargparse.ArgumentDefaultsHelpFormatter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44860: Разрешить параметры с именами
posix_user
иsysconfig
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44859: Улучшите обработку ошибок в
sqlite3
и вызывайте более точные исключения.MemoryError
: Разрешить параметры с именамиsqlite3.Warning
иConnection.__call__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаUnicodEncodeError
: Разрешить параметры с именамиsqlite3.Warning
иConnection.__call__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаTypeError
: Разрешить параметры с именамиValueError
иCursor.executescript()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаТеперь для скрипта, содержащего нулевой символ, вместо его обрезания в
Cursor.executescript()
будет подниматьсяValueError
.Корректная обработка исключений, возникающих при получении булевого значения результата обработчика выполнения.
Добавьте множество тестов, охватывающих различные угловые случаи.
bpo-44581: Обновление поставляемых pip до 21.2.3 и setuptools до 57.4.0
bpo-44849: Разрешить параметры с именами
os.set_inheritable()
иO_PATH
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44605: Декоратор @functools.total_ordering() теперь работает с метаклассами.
bpo-44524: Разрешить параметры с именами
__name__
и__qualname__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44839: Разрешить параметры с именами
MemoryError
иMemoryError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44822: Разрешить параметры с именами
sqlite3
иstrings
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44801: Убедитесь, что переменная
ParamSpec
в Callable может быть заменена только выражением параметров (списком типов, многоточием, ParamSpec или Concatenate).bpo-44806: Разрешить параметры с именами
typing.Protocol
и__init__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27275: Разрешить параметры с именами
collections.OrderedDict.popitem()
иcollections.OrderedDict.pop()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44793: Исправлена проверка количества аргументов при подписке на общий тип с параметром
ParamSpec
.bpo-44784: В тестах importlib.metadata переопределите поведение предупреждений в соответствии с ожидаемым DeprecationWarnings (importlib_metadata 4.6.3).
bpo-44667: Разрешить параметры с именами
tokenize.tokenize()
иNEWLINE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44771: Разрешить параметры с именами
importlib.simple
иTraversableResources
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44752: Разрешить параметры с именами
rcompleter
иgetattr()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44747: Разрешить параметры с именами
sys._getframe
иtyping
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42378: Разрешить параметры с именами
logging.FileHandler
иatexit
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44720: Разрешить параметры с именами
weakref.proxy
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44704: Разрешить параметры с именами
collections.abc.Set._hash()
иfrozenset.__hash__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44666: Разрешить параметры с именами
compileall.compile_file()
иsys.stdout
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44688:
sqlite3.Connection.create_collation()
теперь принимает имена коллизии, отличные от ASCII. Исправление Эрленда Э. Аасланда.bpo-44690: Примите строгий режим binacii.a2b_base64 в base64.b64decode.
bpo-42854: Разрешить параметры с именами
_ssl
иOverflowError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44686: Разрешить параметры с именами
unittest.mock._importer
иpkgutil.resolve_name
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44353: Сделайте
NewType.__call__
быстрее, реализовав его на C. Патч предоставлен Юрием Карабасом.bpo-44682: Измените директиву
pdb
директивы commands, чтобы запретить установку команд для недопустимой точки останова и вывести соответствующую ошибку.bpo-44353: Рефакторинг
typing.NewType
из функции в вызываемый класс. Патч предоставлен Юрием Карабасом.bpo-44678: Добавлено отдельное сообщение об ошибке для прерывистых подшивок в строгом режиме binascii.a2b_base64.
bpo-44524: Разрешить параметры с именами
__name__
и__qualname__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40897: Отдайте приоритет использованию текущего конструктора класса в
inspect.signature()
. Исправление от Weipeng Hong.bpo-44638: Добавьте ссылку на проект zipp и подсказку, как его использовать.
bpo-44648: Разрешить параметры с именами
inspect.getsource()
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44608: Исправление утечки памяти в
_tkinter._flatten()
, если он вызывается с последовательностью или набором, но не списком или кортежем.bpo-44594: Разрешить параметры с именами
ExitStack
иAsyncExitStack
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42799: Разрешить параметры с именами
fnmatch
иfunctools.lru_cache()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41928: Разрешить параметры с именами
shutil.copyfile()
иFileNotFoundError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44569: Разрешить параметры с именами
StackSummary.format_frame()
иtraceback
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44566: обработка подкласса StopIteration, поднятого из генератора @contextlib.contextmanager
bpo-44558: Обеспечьте согласованность реализации
indexOf()
между версиями на C и Python. Исправление от Donghee Na.bpo-41249: Разрешить параметры с именами
TypedDict
иtyping.get_type_hints()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44554: Переработайте обработку аргументов в
pdb.main()
, чтобы упростить обнаружение ошибок при загрузке входных данных и уточнить поведение при вызове модуля или скрипта.bpo-34798: Разбейте абзац о параметрах конструкции
pprint.PrettyPrinter
, чтобы его было легче читать.bpo-44539: Добавлена поддержка распознавания файлов JPEG без маркеров JFIF или Exif.
bpo-44461: Разрешить параметры с именами
pdb
и__main__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43625: Исправление ошибки в обнаружении заголовков CSV-файлов
csv.Sniffer.has_header()
и улучшение документации по ним.bpo-44516: Обновление vendored pip до версии 21.1.3
bpo-42892: Исправлено исключение, возникавшее при разборе неправильно оформленного многочастного письма
email.message.EmailMessage
.bpo-44468: Разрешить параметры с именами
typing.get_type_hints()
и__module__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44491: Разрешить параметры с именами
sqlite3
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43977: Разрешить параметры с именами
Py_TPFLAGS_MAPPING
иPy_TPFLAGS_SEQUENCE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44482: Исправление очень маловероятной утечки ресурсов в
glob
в альтернативных реализациях Python.bpo-44466: Модуль
faulthandler
теперь определяет, произошла ли фатальная ошибка во время сборки сборщика мусора. Исправление Виктора Стиннера.bpo-44471: Разрешить параметры с именами
TypeError
иAttributeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44404: Разрешить параметры с именами
tkinter
иafter()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41546: Разрешить параметры с именами
pprint
иprint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44458:
BUFFER_BLOCK_SIZE
теперь объявляется статическим, чтобы избежать коллизий при компоновке, когда bz2, lmza или zlib статически компонуются.bpo-44464: Удалите исключение для flake8 в устаревших интерфейсах importlib.metadata. Синхронизация с importlib_metadata 4.6.
bpo-44446: Разрешить параметры с именами
lineno
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44439: Разрешить параметры с именами
bz2.BZ2File.write()
иlzma.LZMAFile.write()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44434: _thread.start_new_thread() больше не вызывает PyThread_exit_thread() явно при выходе из потока, этот вызов был лишним. В Linux с glibc, pthread_exit() прерывает весь процесс, если dlopen() не может открыть файл libgcc_s.so (например, ошибка EMFILE). Исправление Виктора Стиннера.
bpo-42972: Тип _thread.RLock теперь полностью реализует протокол GC: добавлена функция traverse и флаг
Py_TPFLAGS_HAVE_GC
. Исправление Виктора Стиннера.bpo-44422: Функция
threading.enumerate()
теперь использует реентерабельную блокировку для предотвращения зависания при реентерабельном вызове. Исправление Виктора Стиннера.bpo-38291: Импорт typing.io или typing.re теперь выводит
DeprecationWarning
.bpo-37880: Разрешить параметры с именами
None
иconst
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44389: Исправьте устаревание
ssl.OP_NO_TLSv1_3
.bpo-27827:
pathlib.PureWindowsPath.is_reserved()
теперь определяет более широкий диапазон зарезервированных имен файлов, включая те, которые содержат пробелы или двоеточия.bpo-44395: Исправьте
as_string()
для корректной передачи unixfrom. Исправление от Donghee Na.bpo-34266: Обработка исключений при разборе аргумента команды запуска/перезапуска
pdb
.bpo-44362: Улучшение сообщений об обесценивании, сообщений об ошибках и документации по обесцениванию в модуле
ssl
.bpo-44342: [Enum] Измените пикировку с by-value на by-name.
bpo-44356: [Enum] Разрешить несколько миксинов типа данных, если они все одинаковые.
bpo-44351: Разрешить параметры с именами
parse_makefile()
иdistutils.sysconfig
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35800: Разрешить параметры с именами
smtpd.MailmanProxy
иmailman
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44357: Добавлена функция, возвращающая кубический корень из заданного числа
math.cbrt()
bpo-44339: Разрешить параметры с именами
math.pow(±0.0, -math.inf)
иinf
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44242: Убрать проверку отсутствия флага из создания Enum и перенести в декоратор
verify
.bpo-44246: Разрешить параметры с именами
importlib.metadata
иDistribution.entry_points
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44246: В importlib.metadata.entry_points дедупликация дистрибутивов больше не требует загрузки полных метаданных для объектов PathDistribution, что повышает производительность загрузки точек входа в ~10 раз.
bpo-43858: Добавлена функция, возвращающая копию dict с уровнями логирования:
logging.getLevelNamesMapping()
bpo-44260: Конструктор
random.Random
больше не считывает системную энтропию без необходимости.bpo-44254: На Mac задайте тексту кнопки turtledemo цвет, который будет работать как на светлом, так и на темном фоне. Программисты не могут управлять последним.
bpo-44258: Поддержка PEP 515 для инициализации дроби из строки.
bpo-44235: Удалите устаревшие функции в
gettext
. Исправление от Donghee Na.bpo-38693: Предпочтение f-строк
.format
в importlib.resources.bpo-33693: Importlib.metadata теперь предпочитает f-строки .format.
bpo-44241: Включает незначительные исправления из importlib_metadata 4.1: Протокол SimplePath, поддержка Metadata 2.2.
bpo-43216: Разрешить параметры с именами
@asyncio.coroutine
и decorator с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44210: Сделайте importlib.metadata._meta.PackageMetadata общедоступным.
bpo-43643: Объявите reader.MultiplexedPath.name как свойство в соответствии со спецификацией.
bpo-27334: Менеджер контекста
sqlite3
теперь выполняет откат (тем самым освобождая блокировку базы данных), если фиксация не удалась. Исправление от Луки Сити и Эрленда Э. Аасланда.bpo-4928: Документированное существующее поведение на POSIX: NamedTemporaryFiles не удаляются, когда создающий процесс убит с помощью SIGKILL
bpo-44154: Оптимизируйте
fractions.Fraction
травление для крупных компонентов.bpo-33433: Разрешить параметры с именами RFC 4291 и
ipaddress.IPv6Address.is_private
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44150: Добавьте необязательный аргумент weights в statistics.fmean().
bpo-44142:
ast.unparse()
теперь не будет лишних круглых скобок, если кортежи используются в качестве целей присваивания (например, в циклах for).bpo-44145: Разрешить параметры с именами
hmac
иHMAC_Update
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44095: Разрешить параметры с именами
zipfile.Path
иzipfile.Path.stem
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44077: Теперь можно получать поля типа обслуживания (ToS), он же дифференцированный сервис (DS), он же кодовая точка дифференцированного сервиса (DSCP) и явное уведомление о перегрузке (ECN) IP-заголовка с
socket.IP_RECVTOS
.bpo-37788: Исправление утечки ссылок, когда объект Thread никогда не присоединялся.
bpo-38908: Разрешить параметры с именами
typing.Protocol
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44098: Разрешить параметры с именами
typing.ParamSpec
и__parameters__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44089: Разрешите подклассификацию
csv.Error
в 3.10 (она была разрешена в 3.9 и более ранних версиях, но была запрещена в ранних версиях 3.10).bpo-44081: Разрешить параметры с именами
ast.unparse()
иlambda
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44061: Разрешить параметры с именами
pkgutil.iter_modules()
иpathlib.Path
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44059: Зарегистрируйте браузер SerenityOS в модуле
webbrowser
.bpo-36515: Модуль
hashlib
больше не выполняет невыровненные обращения к памяти при компиляции для платформ ARM.bpo-40465: Удалите функции модуля random, устаревшие в Python 3.9.
bpo-44018: random.seed() больше не мутирует входные данные байтовых массивов.
bpo-38352: Разрешить параметры с именами
IO
иBinaryIO
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44002: Разрешить параметры с именами
urllib.parse
иfunctool.lru_cache()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаНедокументированный внутренний
urllib.parse
Quoted
API класса теперь устарел и будет удален в версии 3.14.bpo-43972: Разрешить параметры с именами
http.server.SimpleHTTPRequestHandler
и301 (Moved Permanently)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28528: Разрешить параметры с именами
pdb
иcheckline()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43853: Улучшена обработка строк для пользовательских функций и агрегатов
sqlite3
:Теперь в UDF можно передавать строки со встроенными нулевыми символами
Сбои преобразования теперь корректно поднимают
MemoryError
Патч Эрленда Э. Аасланда.
bpo-43666: AIX:
Lib/_aix_support.get_platform()
может не работать в WPAR AIX. Набор файлов bos.rte имеет дату сборки как в LPAR, так и в WPAR, поэтому запрашивается этот набор файлов, а не bos.mp64. Чтобы предотвратить подобную ситуацию (отсутствие даты сборки в ODM), предоставляется значение (9988), достаточное для завершения сборки. Исправление от M Felt.bpo-43650: Разрешить параметры с именами
MemoryError
иshutil.unpack_archive()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43612: Разрешить параметры с именами
zlib.compress()
иzlib.compressobj
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43392: Разрешить параметры с именами
importlib._bootstrap._find_and_load()
иimportlib.import_module()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43318: Исправлена ошибка, из-за которой
pdb
не всегда передавал эхо очищенных точек останова.bpo-43234: Разрешить параметры с именами
concurrent.futures.ThreadPoolExecutor
иloop.set_default_executor()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43232: Запретите ранее устаревшие потенциально разрушительные операции над
asyncio.trsock.TransportSocket
. Исправление Илии Волочии.bpo-30077: Добавлена поддержка псевдокомпрессии aifc/sowt от Apple
bpo-42971: Добавьте определение
errno.EQFULL
для платформ, определяющих эту константу (например, macOS).bpo-43086: Разрешить параметры с именами
strict_mode
иscrict_mode
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43024: Разрешить параметры с именами
traceback.print_exception()
иtraceback.format_exception()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33809: Добавьте метод
traceback.TracebackException.print()
, который выводит отформатированную информацию об исключении.bpo-42862: Разрешить параметры с именами
sqlite3
иfunctools.lru_cache()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41818: Soumendra Ganguly: добавьте termios.tcgetwinsize(), termios.tcsetwinsize().
bpo-40497: Разрешить параметры с именами
subprocess.check_output()
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37449: Разрешить параметры с именами
ensurepip
иimportlib.resources.files()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40956: Использовать клинику аргументов в
sqlite3
. Патчи от Эрленда Э. Аасланда.bpo-41730: Разрешить параметры с именами
DeprecationWarning
иtkinter.tix
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20684: Разрешить параметры с именами
_signature_get_bound_param
иinspect
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41402: Разрешить параметры с именами
email.message.EmailMessage.set_content()
и7bit
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32695: Аргументы compresslevel и preset в ключевом слове
tarfile.open()
теперь документированы и протестированы.bpo-41137: Используйте кодировку utf-8 при чтении файлов .pdbrc. Исправление от Srinivas Reddy Thatiparthy
bpo-24391: Разрешить параметры с именами
threading
иSemaphore
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-5846: Утратили актуальность следующие функции
unittest
, которые планируется удалить в Python 3.13:findTestCases()
makeSuite()
getTestCaseNames()
Вместо этого используйте методы
TestLoader
:Патч Эрленда Э. Аасланда.
bpo-40563: Поддержка pathlike объектов на dbm/shelve. Исправление от Хакана Челика и Генри-Жозефа Аудеуда.
bpo-34990: Исправлена ошибка Y2k38 в модуле compileall, когда он не компилировал файлы с временем модификации после 2038 года.
bpo-39549: Если раньше в коде reprlib.Repr использовалось жестко закодированное строковое значение „…“, то в этом PR оно переводится на использование атрибута «fillvalue», значение которого по умолчанию равно „…“ и может быть сброшено как в отдельных экземплярах reprlib.Repr, так и в их подклассах.
bpo-37022: Разрешить параметры с именами
pdb
иrepr()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38840: Исправьте
test___all__
на платформах, не имеющих реализации общей памяти.bpo-39359: Добавьте недостающую проверку того, что пароль является объектом байта для зашифрованного zip-файла.
bpo-38741:
configparser
: использование „]“ внутри заголовка раздела больше не обрывает название раздела на „]“.bpo-38415: Разрешить параметры с именами
contextlib.asynccontextmanager()
иcontextlib.contextmanager()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30256: Передайте многопроцессорный аргумент BaseProxy
manager_owned
через AutoProxy.bpo-27513: Разрешить параметры с именами
email.utils.getaddresses()
иemail.header.Header
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-16379: Добавьте код и имя ошибки SQLite в исключения
sqlite3
. Исправления от Авива Паливоды, Даниэля Шахафа и Эрленда Э. Аасланда.bpo-26228: pty.spawn больше не зависает на FreeBSD, macOS и Solaris.
bpo-33349: lib2to3 теперь везде распознает асинхронные генераторы.
bpo-29298: Разрешить параметры с именами
TypeError
иdest
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-45216: Удалите лишнюю документацию, перечисляющую методы в
difflib
. Она дважды приводилась в pydoc и в некоторых местах была устаревшей.bpo-45024: Разрешить параметры с именами
collections.abc
и special method с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44957: Разрешить параметры с именами
X | Y
иUnion
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-16580: Разрешить параметры с именами
int.to_bytes()
иint.from_bytes()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44903: Разрешить параметры с именами
othergui.rst
и page on GUI frameworks с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33479: Документация по Tkinter была значительно расширена за счет новых разделов «Архитектура» и «Потоковая модель».
bpo-36700: Разрешить параметры с именами
base64
и RFC 4648 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44740: Заменены прописные буквы «Web» и «Internet» на строчные в соответствии с пересмотренной в 2016 году книгой стилей Associated Press.
bpo-44693: Обновите определение __future__ в глоссарии, заменив путаное слово «псевдомодуль» на более точное описание.
bpo-35183: Добавьте типичные примеры в документацию по os.path.splitext
bpo-30511: Уточнение, что
shutil.make_archive()
не является потокобезопасным из-за зависимости от изменения текущего рабочего каталога.bpo-44561: Обновление трех устаревших гиперссылок в Doc/distributing/index.rst: «Структура проекта», «Сборка и упаковка проекта» и «Загрузка проекта в Python Packaging Index».
bpo-44651: Удалите запись «принуждение» в Doc/glossary.rst за ее устаревшее определение.
bpo-42958: Обновили docstring и документацию
filecmp.cmp()
, чтобы они были более точными и менее запутанными, особенно в отношении shallow arg.bpo-44631: Разрешить параметры с именами
repr()
и_Environ
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44613: метаданные importlib.metadata больше не являются предварительными.
bpo-44558: Приведите в соответствие docstring и python-реализацию
countOf()
с поведением его c-реализации.bpo-44544: Разрешить параметры с именами
textwrap.wrap()
иtextwrap.fill()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38062: Уточните, что atexit использует внутренние сравнения равенства.
bpo-40620: Преобразуйте примеры в разделе 4.3 учебника controlflow.rst в стиль интерпретатора-демо.
bpo-43066: В документацию
zipfile
добавлено предупреждение: аргумент имени файла с ведущим слешем может привести к невозможности открытия архива в системах Windows.bpo-39452: Разрешить параметры с именами
Doc/library/__main__.rst
и__main__.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-13814: В FAQ по дизайну ответьте на вопрос «Почему генераторы не поддерживают оператор with?».
bpo-27752: Документация csv.Dialect стала более описательной.
bpo-44453: Исправьте документацию для возвращаемого типа
sysconfig.get_path()
.bpo-44392: Разрешить параметры с именами
Py_GenericAlias
иPy_GenericAliasType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38291: Разрешить параметры с именами
typing.io
иtyping.re
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44322: Документируйте, что аргументы SyntaxError имеют кортеж деталей и что детали корректируются для ошибок в выражениях замены полей f-строк.
bpo-42392: Разрешить параметры с именами
loop
иasyncio
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44195: Разрешить параметры с именами
TraversableResources
иTraversableReader
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41963: Документ, в котором
ConfigParser
удаляет комментарии при чтении конфигурационных файлов.bpo-44072: Исправьте, где в иерархии числовых ABC добавлена поддержка
**
, т.е. в numbers.Complex, а не numbers.Integral.bpo-43558: Разрешить параметры с именами
dataclasses
и__init__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44025: Уточните, когда „_“ в операторах соответствия является ключевым словом, а когда нет.
bpo-41706: Исправьте документацию о том, как методы типа
__add__
вызываются при вычислении операторных выражений.bpo-41621: Разрешить параметры с именами
collections.defaultdict
иdefault_factory
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41576: документ BaseException в пользу голых исключений
bpo-21760: Исправлено описание для __file__. Исправление от Furkan Onder
bpo-39498: Добавьте индекс «Security Considerations», который ссылается на модули стандартной библиотеки, в которых явно задокументированы соображения безопасности.
bpo-33479: Уберите безоговорочное утверждение, что tkinter безопасен для потоков. Это не соответствует действительности уже несколько лет и, скорее всего, никогда не соответствовало. Объяснение того, что это так, может быть добавлено позже, после обсуждения и, возможно, после исправления _tkinter.c,
Тесты¶
bpo-40173: Исправить
test.support.import_helper.import_fresh_module()
.bpo-45280: Добавьте тестовый пример для пустого
typing.NamedTuple
.bpo-45269: Разрешить параметры с именами
markers
иc_make_encoder
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45128: Разрешить параметры с именами
test_multiprocessing_fork
иtest_logging
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45209: Разрешить параметры с именами
UserWarning: resource_tracker
и_test_multiprocessing._TestSharedMemory.test_shared_memory_cleaned_after_process_termination
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45185: Разрешить параметры с именами
TestEnumerations
иtest_ssl
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45195: Исправьте test_readline.test_nonascii(): иногда символ новой строки не записывается в конце, поэтому не ожидайте его появления в выводе. Исправление Виктора Стиннера.
bpo-45156: Разрешить параметры с именами
unittest.mock.seal()
иcreate_autospec()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45125: Разрешить параметры с именами
SharedMemory
иSharableList
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44860: Разрешить параметры с именами
test_sysconfig.test_user_similar()
иplatlib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45052: Разрешить параметры с именами
WithProcessesTestSharedMemory.test_shared_memory_basics
иself.assertEqual(sms.size, sms2.size)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаОсновная причина удаления этой строки из теста заключается в том, что не гарантируется, что
size
иSharedMemory
будут одинаковыми. Это решается платформой.bpo-44895: libregrtest теперь очищает кэш типов позже, чтобы снизить риск ложного срабатывания при проверке утечек ссылок. Ранее кэш типов очищался слишком рано, и libregrtest вызывал ложную тревогу об утечке ссылок при очень специфических условиях. Исправление подготовили Ирит Катриэль и Виктор Стиннер.
bpo-45042: Исправлено, что тестовые классы, украшенные
@hashlib_helper.requires_hashdigest
, постоянно пропускались.bpo-25130: Добавьте вызовы
gc.collect()
в тесты для поддержки PyPy.bpo-45011: Сделали тесты, полагающиеся на
_asyncio
модуль расширения C необязательным, чтобы его можно было запускать на альтернативных реализациях Python. Исправление Сергея Сторчака.bpo-44949: Исправьте автотесты истории test_readline: иногда символ новой строки не записывался в конце, поэтому не ожидайте его в выводе.
bpo-44891: Разрешить параметры с именами
id()
иobj * 1
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44852: Добавлена возможность оптового отключения DeprecationWarnings при запуске набора регрессионных тестов.
bpo-40928: Уведомление пользователей, выполняющих регрессионные тесты test_decimal на macOS, о потенциально безобидных сообщениях «malloc не может выделить регион», извергаемых test_decimal.
bpo-44734: Исправлена проблема точности плавающей точки в черепашьих тестах.
bpo-44708: При запуске регрессионных тестов с параметром -w теперь повторно запускаются только затронутые методы тестирования вместо повторного запуска всего тестового файла.
bpo-42095: Добавлены тесты взаимодействия для Apple plists: создание файлов plist с помощью Python plistlib и их разбор с помощью Apple plutil; и наоборот.
bpo-44647: Добавили постоянную переменную окружения с значением Unicode в регрессионные тесты, чтобы убедиться, что они справятся с этим случаем использования в будущем. Если ваше тестовое окружение сломается из-за этого, сообщите нам об ошибке и временно установите PYTHONREGRTEST_UNICODE_GUARD=0 в вашем тестовом окружении.
bpo-44515: Настройте недавно добавленные тесты contextlib, чтобы они не предполагали использование refcounted GC
bpo-44287: Исправьте asyncio test_popen() из test_windows_utils, используя более длительный таймаут. Используйте проверенный в боях таймаут
test.support.SHORT_TIMEOUT
, а не жестко закодированный таймаут в 10 секунд: по умолчанию он составляет 30 секунд, но на медленных билдботах его делают длиннее. Исправление от Виктора Стиннера.bpo-44451: Разрешить параметры с именами
DeprecationWarning
иtest.test_importlib.test_metadata_api.APITests.test_entry_points_by_index
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44363: Учет санитара адресов в test_capi. test_capi теперь проходит при запуске санитара адресов GCC.
bpo-44364: Добавьте не интегральные тесты для функции
math.sqrt()
.bpo-43921: Разрешить параметры с именами
suppress_ragged_eofs=False
иread()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43921: Исправьте test_pha_required_nocert() из test_ssl: отловите еще два случая EOF (когда метод
recv()
возвращает пустую строку). Исправление Виктора Стиннера.bpo-44131: Добавьте test_frozenmain к test_embed для проверки
Py_FrozenMain()
C-функции. Исправление Виктора Стиннера.bpo-31904: Игнорируйте случай строки ошибки в test_file_not_exists().
bpo-42083: Разрешить параметры с именами
PyStructSequence_NewType
иPyStructSequence_Desc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35753: Исправление сбоя в doctest, когда doctest разбирает модули, включающие разворачиваемые функции, пропуская эти функции.
bpo-30256: Разрешить параметры с именами
multiprocessing
иAutoProxy[Queue]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-45220: Избегать автоматической сборки с предварительными версиями Windows 11 SDK. Это можно отменить, установив переменную окружения
DefaultWindowsSDKVersion
перед сборкой.bpo-45020: Замораживает модули stdlib, импортируемые во время запуска. Это обеспечивает значительное повышение производительности при запуске. При необходимости используйте ранее добавленный параметр командной строки «-X frozen_modules=off», чтобы принудительно импортировать исходные модули.
bpo-45188: Сборки для Windows теперь регенерируют замороженные модули в первой части сборки. Ранее регенерация происходила позже, что требовало перезапуска сборки, если какие-либо модули были изменены.
bpo-45163: Исправлена сборка платформы Haiku.
bpo-45067: Функция ncurses extended_color_content была введена в 2017 году
(https://invisible-island.net/ncurses/NEWS.html#index-t20170401). Сайт
Пакет ncurses-devel в CentOS 7 имел более старую версию ncurses, что приводило к ошибке компиляции. Для компиляции ncurses с расширенной поддержкой цвета необходимо проверить версию библиотеки ncurses >= 20170401.
bpo-45019: Генерировать строки в соответствующих файлах для замороженных модулей. До сих пор каждый из этих файлов приходилось редактировать вручную. Это изменение упрощает добавление и изменение замороженных модулей.
bpo-44340: Добавлена поддержка сборки с clang thin lto через –with-lto=thin/full. Исправление от Donghee Na и Brett Holman.
bpo-44535: Включите сборку с помощью установки Visual Studio 2022 под Windows.
bpo-43298: Улучшено сообщение об ошибке при сборке без установленного Windows SDK.
bpo-44381: Разрешить параметры с именами
EnableControlFlowGuard
иguard
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41282: Исправление поломки
make install
, из-за которой модули расширения стандартной библиотеки излишне и некорректно пересобирались на этапе установки cpython.
Windows¶
bpo-45375: Исправляет ошибку утверждения, связанную с поиском стандартной библиотеки в ненормализованных путях.
bpo-45022: Обновление релиза Windows для включения libffi 3.4.2
bpo-45007: Обновление до OpenSSL 1.1.1l в сборке Windows
bpo-44848: Обновление программы установки Windows для использования SQLite 3.36.0.
bpo-44572: Избегайте потребления стандартного ввода в модуле
platform
.bpo-44582: Ускорить скорость инициализации
mimetypes
с помощью собственной реализации сканирования реестра.bpo-41299: Разрешить параметры с именами
threading
иthreading.Lock.acquire()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42686: Сборка
sqlite3
с включенными математическими функциями. Исправление Эрленда Э. Аасланда.bpo-40263: Это последующая ошибка из https://bugs.python.org/issue26903. После его применения мы сталкиваемся с проблемой смещения утверждения от одного к другому. Утверждение было некорректным.
macOS¶
bpo-45007: Обновите сборки программы установки macOS для использования OpenSSL 1.1.1l.
bpo-34602: При сборке CPython на macOS с
./configure --with-undefined-behavior-sanitizer --with-pydebug
размер стека теперь увеличивается в четыре раза, чтобы весь набор тестов был пройден.bpo-44848: Обновите программу установки macOS для использования SQLite 3.36.0.
bpo-44689: Разрешить параметры с именами
ctypes.util.find_library()
иfind_library
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41972: Путь к пользовательскому заголовку сборки фреймворка в sysconfig изменен для добавления компонента „pythonX.Y“, чтобы соответствовать поведению distutils.
bpo-43109: Разрешите опции –with-lto configure работать с Xcode или инструментами командной строки, поставляемыми Apple.
bpo-34932: Добавляет поддержку socket.TCP_KEEPALIVE для macOS. Исправление от Shane Harvey.
IDLE¶
bpo-45296: В Windows измените сообщение о выходе из системы, чтобы оно предлагало Ctrl-D, который работает, вместо <Ctrl-Z Return>, который не работает в IDLE.
bpo-45193: Сделайте так, чтобы окна завершения снова появлялись на Ubuntu.
bpo-40128: В основном исправлены завершения на macOS, когда не используется tcl/tk 8.6.11 (как в 3.9). Добавленный вызов update_idletask должен быть безвреден и, возможно, полезен в других случаях.
bpo-33962: Переместите настройку пробела отступа с вкладки «Шрифт» на новую вкладку «Windows». Исправление Марка Розмана и Терри Яна Риди.
bpo-40468: Разделите диалог настроек на вкладке Общие на вкладки Windows и Shell/ED. Переместите источники справки, которые расширяют меню «Справка», на вкладку «Расширения». Освободите место для новых опций и сократите диалог. Благодаря последнему диалог лучше подходит для маленьких экранов.
bpo-41611: Избегайте не пойманных исключений в
AutoCompleteWindow.winconfig_event()
.bpo-41611: Исправление того, что IDLE иногда зависала при завершении работы с вкладками на macOS.
bpo-44010: Разрешить параметры с именами match и soft keywords с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-44026: Включать предложения по исправлению опечаток интерпретатора в строку сообщения для NameErrors и AttributeErrors. Исправление Э. Пейна.
Инструменты/демоверсии¶
bpo-44786: Исправьте предупреждение о регулярных выражениях в скрипте c-analyzer.
bpo-44967: pydoc теперь возвращает ненулевой код состояния, когда модуль не может быть найден.
bpo-44978: Разрешите инструменту Argument Clinic работать со специальными методами
__complex__
.bpo-43425: Удален демонстрационный проект „test2to3“, который демонстрировал использование lib2to3 для поддержки Python 2.x и Python 3.x из одного источника в пакете distutils. Исправление от Donghee Na
bpo-44074: Заставьте patchcheck автоматически определять правильное имя базовой ветки (ранее оно было жестко закодировано в „master“)
bpo-20291: Добавлена поддержка переменных позиционных параметров в Argument Clinic.
C API¶
bpo-41710: Функция PyThread_acquire_lock_timed() теперь ограничивает таймаут, если он слишком велик, а не прерывает процесс. Исправление Виктора Стиннера.
bpo-44687: Разрешить параметры с именами
BufferedReader.peek()
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-45116: Добавьте макрос
Py_ALWAYS_INLINE
, чтобы попросить компилятор всегда инлайнить статическую инлайн-функцию. Компилятор может проигнорировать его и решить не инлайнить функцию. Исправление Виктора Стиннера.bpo-45094: Добавьте макрос
Py_NO_INLINE
, чтобы отключить инлайнинг в функции. Исправление Виктора Стиннера.bpo-45061: Разрешить параметры с именами
bool
иPy_DECREF(Py_True);
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42035: Добавьте новую функцию
PyType_GetQualName()
для получения квалифицированного имени типа.bpo-41103: Возвращает удаление старого протокола буферов, поскольку они являются частью стабильного ABI.
bpo-44751: Разрешить параметры с именами
crypt.h
иPython.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42747: Разрешить параметры с именами
Py_TPFLAGS_HAVE_VERSION_TAG
иPy_TPFLAGS_HAVE_AM_SEND
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44530: Разрешить параметры с именами
co_qualname
иPyCodeObject
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПатч Габриэле Н. Торнетта
bpo-44441: Разрешить параметры с именами
Py_RunMain()
иPyImport_Inittab
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39947: Удалите 4 частные функции Trashcan C API, которые были сохранены только для обратной совместимости стабильного ABI с Python 3.8 и старше, поскольку Trashcan API не мог использоваться с ограниченным C API на Python 3.8 и старше. API мусорного бака был исключен из ограниченного C API в Python 3.9.
Удаленные функции:
_PyTrash_deposit_object()
_PyTrash_destroy_chain()
_PyTrash_thread_deposit_object()
_PyTrash_thread_destroy_chain()
PyThreadState
: Разрешить параметры с именами_tstate->trash_delete_nesting
иPyThreadState
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаИсключите также константу
PyTrash_UNWIND_LEVEL
из API языка C.Патч Виктора Стиннера.
bpo-40939: Удалена документация по удаленному
PyParser_*
C API.bpo-43795: Разрешить параметры с именами Содержание ограниченного API и
PyFrameObject
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44378: Разрешить параметры с именами
Py_IS_TYPE()
иPy_TYPE()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39573: Разрешить параметры с именами
Py_TYPE()
иPy_SIZE()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44263: Разрешить параметры с именами
PyType_Ready()
иPy_TPFLAGS_HAVE_GC
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43795: Недокументированная функция
Py_FrozenMain()
удалена из Limited API.bpo-44113: Утрачиваем следующие функции для настройки инициализации Python:
PySys_AddWarnOptionUnicode()
PySys_AddWarnOption()
PySys_AddXOption()
PySys_HasWarnOptions()
Py_SetPath()
Py_SetProgramName()
Py_SetPythonHome()
Py_SetStandardStreamEncoding()
_Py_SetProgramFullPath()
PyConfig
: Разрешить параметры с именами Python Initialization Configuration и PEP 587 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-44094: Разрешить параметры с именами
PyErr_SetFromErrnoWithUnicodeFilename()
иPyErr_SetFromWindowsErrWithUnicodeFilename()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43795:
PyCodec_Unregister()
теперь правильно экспортируется как функция в Windows Stable ABI DLL.bpo-44029: Разрешить параметры с именами
Py_UNICODE
иPyUnicode_Encode
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42035: Добавьте новую функцию
PyType_GetName()
для получения короткого имени типа.
Python 3.10.0 beta 1¶
Дата выхода: 2021-05-03
Безопасность¶
bpo-43434: Разрешить параметры с именами
sqlite3.Connection
иsqlite3.connect
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43998: Разрешить параметры с именами
ssl
иSSLContext
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43882: Наличие символов новой строки или табуляции в части URL-адреса может привести к некоторым видам атак.
В соответствии со спецификацией управления URL, определенной WHATWG
urllib.parse()
, теперь удаляются ASCII-строки и табуляции из URL, что предотвращает подобные атаки.bpo-43472: Разрешить параметры с именами
cpython.PyInterpreterState_New
и_xxsubinterpreters
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43362: Исправление недействительного free в модуле _sha3. Проблема появилась в версии 3.10.0a1. Python 3.9 и более ранние версии не затронуты.
bpo-43762: Разрешить параметры с именами
sqlite3.connect/handle()
иsqlite3.Connection.enable_load_extension()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43756: Разрешить параметры с именами
glob.glob/2
иglob.glob()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36384: Разрешить параметры с именами
ipaddress
иsocket.inet_aton()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43075: Устранение уязвимости отказа в обслуживании с помощью регулярных выражений (ReDoS) в
urllib.request.AbstractBasicAuthHandler
. ReDoS-уязвимый regex имеет квадратичную сложность в худшем случае и позволяет вызвать отказ в обслуживании при идентификации подделанных недействительных RFC. Эта проблема ReDoS находится на стороне клиента и требует от удаленных злоумышленников контроля над HTTP-сервером.bpo-42800: Теперь крючки аудита срабатывают при доступе к атрибутам frame.f_code, traceback.tb_frame и коду генератора/кадра.
bpo-37363: Добавьте события аудита в модуль
http.client
.
Ядро и встроенные модули¶
bpo-43977: Запретить классам быть одновременно последовательностью и отображением при сопоставлении с образцом.
bpo-43977: Разрешить параметры с именами
tp_flags
иcollections.abc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43892: Восстановление правильной проверки сложных шаблонов литеральных значений при разборе блоков
match
.bpo-43933: Установите frame.f_lineno в номер строки квей-слова „with“ при выполнении вызова
__exit__
.bpo-43933: Если текущая позиция в кадре не имеет номера строки, то установите атрибут f_lineno в None, а не в -1, чтобы соответствовать PEP 626. Обычно это не должно быть возможным, но может возникнуть в некоторых необычных обстоятельствах.
bpo-43963: Импорт модуля
_signal
в подинтерпретатор больше не имеет побочных эффектов.bpo-42739: Внутреннее представление таблиц номеров строк изменено, чтобы не использовать дозорные, а в API-функцию
PyLineTable_InitAddressRange
, работающую вне процесса, добавлен явный параметр длины. Это делает работу с таблицами номеров строк более надежной в некоторых обстоятельствах.bpo-43908: Сделайте типы
re
неизменяемыми. Исправление Эрленда Э. Аасланда.bpo-43908: Сделайте тип
array.array
неизменяемым. Исправление Эрленда Э. Аасланда.bpo-43901: Измените объекты классов и модулей, чтобы они лениво создавали пустые списки аннотаций по требованию. Для обратной совместимости списки аннотаций хранятся в __dict__ объекта.
bpo-43892: Разрешить параметры с именами
MatchValue
иMatchSingleton
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42725: Разрешить параметры с именами
await
иyield
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43754: При выполнении структурного сопоставления шаблонов (PEP 634) захваченные имена теперь остаются несвязанными до тех пор, пока весь шаблон не будет успешно сопоставлен.
bpo-42737: Аннотации для сложных целей (все, кроме простых имен) больше не вызывают эффектов во время выполнения с
from __future__ import annotations
.bpo-43914:
SyntaxError
исключения, вызванные интерпретатором, будут выделять весь диапазон ошибок выражения, содержащего синтаксическую ошибку, а не только место, где обнаружена проблема. Исправление Пабло Галиндо.bpo-38605: Вернитесь к тому, чтобы сделать
from __future__ import annotations
значением по умолчанию. Это следует за решением Руководящего совета отложить изменения PEP 563 по крайней мере до Python 3.11. Дополнительную информацию о решении смотрите в оригинальном письме: https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/. Исправление Пабло Галиндо.bpo-43475: Хеширование NaN-значений теперь зависит от идентичности объекта. Раньше они всегда хешировались на 0, даже если значения NaN не равны друг другу. Наличие одного и того же хэша для неравных значений приводило к нагромождению хэш-таблиц.
bpo-43859: Улучшено сообщение об ошибке для исключений
IndentationError
. Исправление от Пабло Галиндоbpo-41323: Складывание кортежей констант в оптимизаторе байткода теперь повторно использует кортеж в таблице констант.
bpo-43846: Использование стека данных значительно сокращается для больших литералов и выражений вызова.
bpo-38530: Разрешить параметры с именами
NameError
иPyErr_Display()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43823: Улучшение синтаксических ошибок для недопустимых словарных литералов. Исправление от Pablo Galindo.
bpo-43822: Улучшение синтаксических ошибок в парсере при отсутствии запятых между выражениями. Исправление от Pablo Galindo.
bpo-43798: Узлы
ast.alias
теперь включают атрибуты метаданных исходного местоположения, например, lineno, col_offset.bpo-43797: Улучшение сообщений об ошибках
SyntaxError
для некорректных сравнений. Исправление от Pablo Galindo.bpo-43760: Перемещает флаг проверки того, включена ли трассировка, в стек C из кучи. Это должно ускорить диспетчеризацию в интерпретаторе.
bpo-43682: Разрешить параметры с именами
@staticmethod
и@classmethod
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43751: Исправлена ошибка, при которой
anext(ait, default)
ошибочно возвращала None.bpo-42128:
__match_args__
больше не может быть списком.bpo-43683: Добавляет опкод GEN_START. Отмечает запуск генератора, в том числе async, или coroutine и обрабатывает отправку значений во вновь созданный генератор или coroutine.
bpo-43105: Importlib теперь разрешает относительные пути при создании объектов спецификации модуля из расположения файлов.
bpo-43682: Статические методы (
@staticmethod
) теперь можно вызывать как обычные функции. Исправление Виктора Стиннера.bpo-42609: Разрешить параметры с именами
"+0"*1000000
иRecursionError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38530: Разрешить параметры с именами
AttributeError
иPyErr_Display()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-44015: В @dataclass() вызывайте ошибку TypeError, если KW_ONLY указан более одного раза.
bpo-25478: В collections.Counter() добавлен метод total() для вычисления суммы подсчетов.
bpo-43733: Измените
netrc.netrc
, чтобы использовать кодировку UTF-8 перед использованием кодировки локали.bpo-43979: Удалено ненужное осмысление списка перед циклом из
urllib.parse.parse_qsl()
. Исправление Кристофа Цвершке и Донгхи На.bpo-43993: Обновите поставляемый в комплекте pip до версии 21.1.1.
bpo-43957: Разрешить параметры с именами
TypeError
иTrue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42904: Разрешить параметры с именами
typing.get_type_hints()
иtyping.get_type_hints()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43945: [Enum] Исправляем нестандартное поведение mixin format(): в 3.12 для вызова format() будет использоваться член enum, а не его значение.
bpo-41139: Утратить недокументированный
cgi.log()
API.bpo-43937: Исправлена работа модуля
turtle
с корневым окном не по умолчанию.bpo-43930: Обновление поставляемых pip до версии 21.1 и setuptools до версии 56.0.0
bpo-43907: Исправление ошибки в чистой реализации pickle на Python при использовании протокола 5, когда экземпляры bytearray, встречающиеся несколько раз в графе pickled-объектов, некорректно распаковывались в повторяющиеся копии объекта bytearray.
bpo-43926: Разрешить параметры с именами
importlib.metadata
иDescription
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43920: OpenSSL 3.0.0:
load_verify_locations()
теперь возвращает последовательное сообщение об ошибке, когда cadata не содержит действительного сертификата.bpo-43607: Разрешить параметры с именами
urllib
и\\?\
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43817: Разрешить параметры с именами
inspect.get_annotations()
иinspect.get_annotations()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаinspect.signature()
: Разрешить параметры с именамиinspect.from_callable()
иinspect.from_function()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43284: platform.win32_ver определяет версию windows из sys.getwindowsversion().platform_version, которая, в свою очередь, определяет версию из kernel32.dll (которая может быть другой версии, чем сама Windows). Поэтому измените platform.win32_ver для определения версии с помощью частной функции _syscmd_ver модуля platform, чтобы вернуть точную версию.
bpo-42854: Разрешить параметры с именами
ssl
иSSL_read_ex
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42333: Модуль расширения порта
_ssl
для многофазной инициализации.bpo-43880:
ssl
теперь поднимает DeprecationWarning для опций OP_NO_SSL/TLS*, старых версий TLS, старых протоколов и других функций, которые были устаревшими с Python 3.6, 3.7 или OpenSSL 1.1.0.bpo-41559: Разрешить параметры с именами PEP 612 и
types.GenericAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43867: Разрешить параметры с именами
multiprocessing
иServer
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40443: Удаление неиспользуемых импортов: pyclbr больше не использует copy, а typing больше не использует ast. Исправление Виктора Стиннера.
bpo-43820: Удалите ненужную копию пространства имен, переданного в dataclasses.make_dataclass().
bpo-43787: Разрешить параметры с именами
__iter__()
иbz2.BZ2File
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43680: Утратили силу io.OpenWrapper и _pyio.OpenWrapper: вместо них используйте io.open и _pyio.open. До Python 3.9 _pyio.open не был статическим методом, а builtins.open имел значение OpenWrapper, чтобы не становиться связанным методом при установке на переменную класса. _io.open - это встроенная функция, тогда как _pyio.open - это функция Python. В Python 3.10 _pyio.open() теперь является статическим методом, а builtins.open() теперь io.open().
bpo-43680: Разрешить параметры с именами
_pyio.open()
иio.open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41515: Разрешить параметры с именами
KeyError
иtyping.get_type_hints()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43776: Разрешить параметры с именами
subprocess.Popen
иpathlib.Path
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42248: [Enum] гарантирует, что исключения, поднятые в
_missing__
, будут освобожденыbpo-43744: исправлена проблема, когда имя члена перечисления совпадало с началом имени частной переменной
bpo-43772: Исправлено возвращаемое значение
TypeVar.__ror__
. Исправление от Jelle Zijlstra.bpo-43764: Добавьте параметр match_args в декоратор @dataclass для подавления генерации __match_args__.
bpo-43799: OpenSSL 3.0.0: определите
OPENSSL_API_COMPAT
1.1.1 для подавления предупреждений об устаревании. Python требует API OpenSSL 1.1.1.bpo-43478: Разрешить параметры с именами
autospec=True
иcreate_autospec(...)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43794: Добавьте константы
ssl.OP_IGNORE_UNEXPECTED_EOF
(OpenSSL 3.0.0)bpo-43785: Разрешить параметры с именами
bz2.BZ2File
иgzip
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43789: OpenSSL 3.0.0: Не вызывайте функцию обратного вызова пароля второй раз, если первый вызов сигнализирует об ошибке.
bpo-43788: Разрешить параметры с именами
ssl
иmake_ssl_data.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43766: Разрешить параметры с именами PEP 647 и
typing
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25264: Разрешить параметры с именами
os.path.realpath()
иTrue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43780: Разрешить параметры с именами
importlib.metadata
иentry_points()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаP.args
: Разрешить параметры с именамиP.kwargs
иtyping.ParamSpec
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43731: Разрешить параметры с именами
encoding
иlogging.fileConfig()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43712: Разрешить параметры с именами
encoding
иerrors
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38659: Разрешить параметры с именами
simple_enum
иenum
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43764: Разрешить параметры с именами
__match_args__
иdataclasses
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43752: Разрешить параметры с именами
sqlite3
иb""
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43655:
tkinter
диалоговые окна теперь распознаются как диалоговые окна оконными менеджерами в macOS и X Window.bpo-43723: Следующие методы
threading
теперь устарели и должны быть заменены:currentThread
=>threading.current_thread()
activeCount
=>threading.active_count()
Condition.notifyAll
=>threading.Condition.notify_all()
Event.isSet
=>threading.Event.is_set()
Thread.setName
=>threading.Thread.name
thread.getName
=>threading.Thread.name
Thread.isDaemon
=>threading.Thread.daemon
Thread.setDaemon
=>threading.Thread.daemon
Патч от Jelle Zijlstra.
bpo-2135: Утрачиваем реализации find_module() и find_loader() в importlib и zipimport.
bpo-43534: Разрешить параметры с именами
turtle.textinput()
иturtle.numinput()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43532: Добавляет возможность указывать в классах данных поля, доступные только по ключевому слову. Эти поля станут аргументами только для ключевого слова в генерируемом __init__.
bpo-43522: Исправление проблемы с
hostname_checks_common_name
. OpenSSL не копирует флаги хоста из структуры SSL_CTX в структуру SSL.bpo-8978: Разрешить параметры с именами
tarfile.open()
иlzma
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42967: Разрешить параметры с именами
bytes
иseparator
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43296: Разрешить параметры с именами
sqlite3
иsqlite3_value_blob()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43312: Разрешить параметры с именами
sysconfig.get_preferred_scheme()
иsysconfig.get_default_scheme()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43265: Разрешить параметры с именами
sqlite3.Connection.backup()
иunknown database <database name>
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41282: Разрешить параметры с именами
distutils.command.install
иsysconfig
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41282: Разрешить параметры с именами
distutils.sysconfig
иsysconfig
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43176: Исправлена обработка класса данных, который наследуется от замороженного класса данных без полей. Теперь он корректно определяется как ошибка.
bpo-43080: Разрешить параметры с именами
pprint
иdataclasses.dataclass
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39950: Разрешить параметры с именами
pathlib.Path.hardlink_to()
иlink_to()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42904: Разрешить параметры с именами
typing.get_type_hints()
и PEP 563 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42269: Разрешить параметры с именами
slots
иdataclasses.dataclass
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39529: Разрешить параметры с именами
asyncio.get_event_loop()
иasyncio
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-18369: В модуль ssl добавлены классы Certificate и PrivateKey. Сертификаты и ключи теперь можно загружать и из буфера памяти.
bpo-41486: Разрешить параметры с именами
bz2
иlzma
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31870: Функция
ssl.get_server_certificate()
теперь имеет параметр timeout.bpo-41735: Исправление блокировки потоков в модуле zlib, которая в редких случаях может сбиться. Исправление от Ma Lin.
bpo-36470: Разрешить параметры с именами
InitVar
иreplace()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40849: Выставляем ssl-флаг X509_V_FLAG_PARTIAL_CHAIN
bpo-35114: Разрешить параметры с именами
ssl.RAND_status()
и1
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39906: Разрешить параметры с именами
pathlib.Path.stat()
иchmod()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39899:
os.path.expanduser()
теперь отказывается угадывать домашние каталоги Windows, если базовое имя домашнего каталога текущего пользователя не совпадает с его именем пользователя.pathlib.Path.expanduser()
: Разрешить параметры с именамиhome()
иRuntimeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36076: Добавлена поддержка SNI в
ssl.get_server_certificate()
.bpo-38490: В модуль статистики добавлены функции ковариации, корреляции Пирсона и простой линейной регрессии. Исправление сделано Тимотеушем Влодзько.
bpo-33731: Предоставьте функцию locale.localize(), которая преобразует нормализованную строку чисел в формат локали.
bpo-32745: Разрешить параметры с именами
ctypes.c_wchar_p
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-43987: Добавьте документ «Annotations Best Practices» в качестве нового HOWTO.
bpo-43977: Разрешить параметры с именами
Py_TPFLAGS_MAPPING
иPy_TPFLAGS_SEQUENCE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43959: Документация по C-API PyContextVar была уточнена.
bpo-43938: Обновите документацию по классам данных, чтобы выразить, что FrozenInstanceError является производным от AttributeError.
bpo-43778: Исправьте расширение Sphinx glossary_search: создайте подкаталог _static/, если он не существует.
bpo-43755: Обновите документацию, чтобы отразить, что с Python 3.9 нерасшифрованные лямбда-выражения больше не могут быть частью выражения в предложении
if
в осмыслениях и генераторных выражениях.bpo-43739: Исправление кода примера в Doc/extending/extending.rst для объявления и инициализации переменной pmodule правильного типа.
Тесты¶
bpo-43961: Разрешить параметры с именами
os.replace()
иos.rename()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43842: Исправление состояния гонки в SMTP-тесте test_logging. Не закрывайте файловый дескриптор (сокет) из другого потока, пока asyncore.loop() опрашивает файловый дескриптор. Исправление Виктора Стиннера.
bpo-43843: Разрешить параметры с именами
test.libregrtest
иthreading.excepthook()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43811: Тестирует несколько версий OpenSSL на GitHub Actions. Используйте ccache для ускорения тестирования.
bpo-43791: OpenSSL 3.0.0: Отключите тестирование устаревших протоколов TLS 1.0 и 1.1. Тесты завершаются с ошибкой TLSV1_ALERT_INTERNAL_ERROR.
Построить¶
Windows¶
bpo-35306: Добавляет дополнительные аргументы к функции
os.startfile()
.bpo-43538: Избегайте появления ошибок от
pathlib.Path.exists()
при передаче недопустимого имени файла.bpo-38822: Разрешить параметры с именами
os.stat()
иos.path.exists()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26227: Разрешить параметры с именами
socket.gethostbyaddr()
иsocket.gethostbyname_ex()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40432: Обновлен скрипт pegen regeneration под Windows, чтобы найти и использовать Python 3.8 или выше. До этого регенерация pegen уже требовала 3.8 или выше, но скрипт мог использовать более низкие версии Python.
bpo-43745: Фактически обновляет выпуск Windows до версии OpenSSL 1.1.1k. Более ранние выпуски были неправильно обозначены и на самом деле включали 1.1.1i.
bpo-43652: Обновление Tcl и Tk до версии 8.6.11 в программе установки Windows.
bpo-43492: Обновление программы установки Windows для использования SQLite 3.35.5.
bpo-30555: Исправление ошибок
WindowsConsoleIO
при наличии перенаправления fd. Исправление от Сегева Файнера.
macOS¶
bpo-42119: Разрешить параметры с именами
/System/Library
и/System/IOSSupport
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43568: Отказ от поддержки MACOSX_DEPLOYMENT_TARGET < 10.3
bpo-44009: Предоставьте исполняемый файл «python3.x-intel64» для надежного принудительного запуска сборок фреймворка macOS universal2 под эмуляцией Rosetta 2 Intel-64 на компьютерах Apple Silicon Mac. Это может быть полезно для тестирования или когда колеса universal2 еще не доступны.
bpo-43851: Сборка SQLite с помощью
SQLITE_OMIT_AUTOINIT
на macOS. Исправление от Эрленда Э. Аасланда.bpo-43492: Обновите программу установки macOS для использования SQLite 3.35.4.
bpo-42235: Разрешить параметры с именами
Mac/BuildScript/build-installer.py
и--with-lto
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
IDLE¶
bpo-37903: Добавляет действия мыши на боковую панель оболочки. Левый щелчок и дополнительное перетаскивание выделяют одну или несколько строк, как в боковой панели номеров строк редактора. Правый щелчок после выделения вызывает контекстное меню с опцией «Копировать с подсказками». Это позволяет скопировать подсказки из боковой панели со строками выделенного текста.
bpo-43981: Исправьте утечку ссылок в test_sidebar и test_squeezer. Исправления от Terry Jan Reedy и Pablo Galindo
bpo-37892: Отступ при вводе IDLE Shell с помощью пробелов вместо табуляции
bpo-43655: Диалоговые окна IDLE теперь распознаются как диалоговые окна оконными менеджерами в macOS и X Window.
bpo-37903: Оболочка IDLE теперь показывает подсказки в отдельной боковой панели.
C API¶
bpo-43916: Добавьте новый флаг типа
Py_TPFLAGS_DISALLOW_INSTANTIATION
, чтобы запретить создание экземпляров типов. Исправление Виктора Стиннера.bpo-43774: Разрешить параметры с именами
PYMALLOC_DEBUG
иPy_DEBUG
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43962: _PyInterpreterState_IDIncref() теперь вызывает _PyInterpreterState_IDInitref() и всегда увеличивает id_refcount. Ранее вызов _xxsubinterpreters.get_current() мог привести к несоответствию id_refcount, когда объект _xxsubinterpreters.InterpreterID был деаллоцирован. Исправление Виктора Стиннера.
bpo-28254: Разрешить параметры с именами
PyGC_Enable()
иPyGC_Disable()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43908: Разрешить параметры с именами
Py_TPFLAGS_IMMUTABLETYPE
иPyType_Ready()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43795: Разрешить параметры с именами
PyMem_Calloc()
иPy_LIMITED_API
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43868: Разрешить параметры с именами
PyOS_ReadlineFunctionPointer()
иpython3.dll
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43795: Стабильный ABI и ограниченные определения API генерируются из центрального манифеста (PEP 652).
bpo-43753: Разрешить параметры с именами
Py_Is(x, y)
иx is y
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.10.0 alpha 7¶
Дата выхода: 2021-04-05
Безопасность¶
bpo-42988: Разрешить параметры с именами CVE-2021-3426 и
getfile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43285:
ftplib
больше не доверяет значению IP-адреса, возвращаемому сервером в ответ на команду PASV по умолчанию. Это не позволяет злонамеренному FTP-серверу использовать ответ для проверки комбинаций IPv4-адресов и портов в сети клиента.trust_server_pasv_ipv4_address
: Разрешить параметры с именамиftplib.FTP
иTrue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43439: Разрешить параметры с именами
gc.get_objects()
иgc.get_referrers()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-27129: Обновление магического числа байткода CPython.
bpo-43672: Вызывает предупреждение ImportWarning при вызове find_loader().
bpo-43660: Исправление сбоя, возникающего при замене
sys.stderr
на вызываемый объект, который может удалить объект во время печати исключения. Исправление от Pablo Galindo.bpo-27129: Интерпретатор байткода использует внутренние смещения инструкций, а не байтов. Это уменьшает количество необходимых инструкций EXTENDED_ARG и немного упрощает диспетчеризацию инструкций.
bpo-40645: Исправление утечки ссылок в расширении
_hashopenssl
. Исправление от Пабло Галиндо.bpo-42134: Вызовы find_module() системой импорта теперь поднимают ImportWarning.
bpo-41064: Улучшена синтаксическая ошибка при неправильном использовании элементов с двойной звездой („**“) в f-строках. Исправление от Pablo Galindo.
bpo-43575: Разрешить параметры с именами
map()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42137: Разрешить параметры с именами
__spec__
иModuleType.__repr__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43452: Добавлены микрооптимизации в
_PyType_Lookup()
для улучшения производительности поиска в кэше в общем случае попаданий в кэш.bpo-43555: Сообщать о смещении столбца для
SyntaxError
для недопустимых символов продолжения строки. Исправление Пабло Галиндо.bpo-43517: Исправление ошибки обнаружения циклического импорта при использовании
from pkg.mod import attr
, что приводило к ложным срабатываниям в нетривиальном многопоточном коде.bpo-43497: Выдавать SyntaxWarnings для утверждений с константами кортежей, это регрессия, появившаяся в python3.7
bpo-39316: Трассировка теперь имеет правильные номера строк для доступа к атрибутам, когда атрибут находится в другой строке, чем объект. Улучшена отладка и профилирование для многострочных цепочек методов.
bpo-35883: Python больше не выдает фатальную ошибку при запуске, если аргумент командной строки содержит недопустимый символ Юникода. Функция
Py_DecodeLocale()
теперь экранирует последовательности байтов, которые были бы декодированы как символы Юникода за пределами диапазона [U+0000; U+10ffff].bpo-43410: Исправлена ошибка, приводившая к аварийному завершению работы парсера при выдаче синтаксических ошибок при чтении ввода из stdin. Исправление от Pablo Galindo
bpo-43406: Исправление возможного состояния гонки, когда
PyErr_CheckSignals
пытается выполнить обработчик сигналов, не относящийся к Python.bpo-42128: Разрешить параметры с именами
__match_args__
и struct sequence objects с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43390: Разрешить параметры с именами
SA_ONSTACK
иPyOS_setsig
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43287: Разрешить параметры с именами
filter()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37448: Добавляет карту памяти на основе радиксного дерева для отслеживания используемых областей obmalloc. Используется для замены старой реализации address_in_range(). Подход, основанный на радиксном дереве, позволяет легко увеличить размер пула за пределы размера страницы ОС. Увеличение размера пула и арены позволяет obmalloc обрабатывать значительно больший процент запросов из своих сверхбыстрых путей.
Его преимущество также в том, что он устраняет небезопасное для памяти поведение предыдущей функции address_in_range(). Старая функция address_in_range() была помечена аннотациями _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD и _Py_NO_SANITIZE_MEMORY. Эти аннотации больше не нужны.
Чтобы отключить карту радиксного дерева, установите флаг препроцессора следующим образом:
-DWITH_PYMALLOC_RADIX_TREE=0
.Соавтор: Тим Питерс <tim.peters@gmail.com>.
bpo-29988: Обрабатывает только асинхронные исключения и запросы на сброс GIL при возврате из вызова или на задних границах циклов. Убедитесь, что
__exit__()
всегда вызывается вместе с операторами, даже для прерываний.
Библиотека¶
bpo-43720: Документирование различных устареваний stdlib в imp, pkgutil и importlib.util для удаления в Python 3.12.
bpo-43433:
xmlrpc.client.ServerProxy
больше не игнорирует запрос и фрагмент в URL сервера.bpo-31956: Разрешить параметры с именами
index()
иarray.array
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40066: Разрешить параметры с именами
repr()
иstr()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42136: Утрачиваем все методы module_repr(), найденные в importlib, поскольку их использование постепенно прекращается в Python 3.12.
bpo-35930: Вызов исключения, возникшего в экземпляре «будущего», создаст циклы ссылок.
bpo-41369: Завершите обновление вендорного libmpdec до версии 2.5.1. Исправление от Стефана Краха.
bpo-43422: Верните API _decimal C, который был добавлен в bpo-41324.
bpo-43577: Разрешить параметры с именами
ssl.SSLContext
иssl.SSLContext.sni_callback()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43571: Теперь можно создавать MPTCP-сокеты с помощью IPPROTO_MPTCP
bpo-43542: Разрешить параметры с именами
image/heic
иimage/heif
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40645: Модуль
hmac
теперь использует реализацию HMAC от OpenSSL, когда аргументом digestmod является имя хэша или встроенная хэш-функция.bpo-43510: Разрешить параметры с именами PEP 597 и
EncodingWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43521:
ast.unparse
теперь могут отображать NaN и пустые множества.bpo-42914: Разрешить параметры с именами
pprint.pprint()
иunderscore_numbers
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41361: Вызовы
rotate()
теперь работают немного быстрее благодаря более быстрому разбору аргументов.bpo-43423:
subprocess.communicate()
больше не вызывает ошибку IndexError при наличии пустого буфера ввода-вывода stdout или stderr во время тайм-аута в Windows.bpo-27820: Исправлена давняя ошибка smtplib.SMTP, когда выполнение AUTH LOGIN с initial_response_ok=False приводило к неудаче.
Причина в том, что SMTP.auth_login _всегда_ возвращает пароль, если ему предоставлена строка вызова, что не соответствует стандарту для AUTH LOGIN.
Также исправлена ошибка с тестом для smtpd.
bpo-43445: Разрешить параметры с именами
sys.stdlib_module_names
и"_frozen_importlib"
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43245: Добавьте поддержку аргументов ключевых слов в
ChainMap.new_child()
.bpo-29982: Разрешить параметры с именами
tempfile.TemporaryDirectory()
иcleanup()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43428: Включить изменения из importlib_metadata 3.7:
Повышение производительности при обнаружении распределений.
entry_points
возвращает только уникальные распределения.Представлен новый объект
EntryPoints
, содержащий набор точек входа с удобными методами для выбора точек входа по группе или имени.entry_points
теперь возвращает этот объект, если заданы параметры выбора, но для совместимости продолжает возвращать объект dict. Пользователям рекомендуется полагаться на интерфейс выбора. Результат в виде объекта dict, вероятно, будет устаревшим в будущем.Добавлена функция packages_distributions, возвращающая сопоставление пакетов с дистрибутивами, которые их предоставляют.
bpo-43332: Разрешить параметры с именами
http.client
иset_tunnel()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43420: Улучшение производительности арифметики
fractions.Fraction
для больших компонентов. Внесено Сергеем Б. Кирпичевым.bpo-43356: Разрешить передачу номера сигнала в
_thread.interrupt_main()
.bpo-43399: Исправление
ElementTree.extend
, не работающего на итераторах при использовании реализации Pythonbpo-43369: Разрешить параметры с именами
sqlite3
иsqlite3_column_text()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43368: Разрешить параметры с именами
None
иb''
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41282: Разрешить параметры с именами
DeprecationWarning
иimport distutils
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42129: Разрешить параметры с именами
importlib.resources
иimportlib_resources
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43295: Разрешить параметры с именами
datetime.datetime.strptime()
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43125: Возвращает пустую строку, если base64mime.body_encode получает пустые байты
bpo-43084: Разрешить параметры с именами
curses.window.enclose()
иTrue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42994: Добавьте типы MIME для opus, AAC, 3gpp и 3gpp2
bpo-14678: Добавьте метод invalidate_caches() в класс zipimport.zipimporter для поддержки importlib.invalidate_caches(). Исправление Десмонда Чонга.
bpo-42782: Fail fast в
shutil.move()
, чтобы избежать создания целевых каталогов при сбое.bpo-40066: Разрешить параметры с именами
repr()
иstr()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26053: Исправлена ошибка, при которой команда интерактивного запуска
pdb
передавала эхом параметры из командной строки оболочки, даже если они были переопределены в приглашении pdb.bpo-24160: Исправлена ошибка, из-за которой точки останова не сохранялись в нескольких сеансах отладчика в интерактивном режиме
pdb
.bpo-40701: Разрешить параметры с именами
tempfile.tempdir
иtempfile.gettempdir()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39342: Разрешить параметры с именами
X509_V_FLAG_ALLOW_PROXY_CERTS
иVERIFY_ALLOW_PROXY_CERTS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31861: Добавляет builtins.aiter и builtins.anext. Патчи подготовили Джошуа Бронсон (@jab), Дэниел Поуп (@lordmauve) и Джастин Ванг (@justin39).
Документация¶
bpo-43199: Ответ на вопрос «Почему нет goto?» в FAQ по дизайну и истории.
bpo-43407: Разрешить параметры с именами
time.monotonic()
иtime.perf_counter()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43354: Разрешить параметры с именами
Fault.faultCode
иint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41933: Уточнена формулировка s * n в Общих операциях с последовательностями
Тесты¶
Построить¶
bpo-43179: Внедрение и корректное использование ALIGNOF_X вместо SIZEOF_X для кода, связанного с выравниванием, в оптимизированных строковых подпрограммах. Исправление Джессики Кларк.
bpo-43631: Обновите macOS, Windows и CI до версии OpenSSL 1.1.1k.
bpo-43617: Улучшите configure.ac: Проверяет наличие пакета autoconf-archive и удаляет наши копии макросов M4.
bpo-43466: Разрешить параметры с именами
configure
и--with-openssl-rpath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43372: Разрешить параметры с именами
_freeze_importlib
и__hello__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Windows¶
IDLE¶
bpo-42225: Документ о том, что IDLE может не работать на Unix либо из-за неправильно настроенных правил IP-маскарада, либо из-за неспособности отображать сложные цветные (неascii) символы.
C API¶
bpo-43688: Разрешить параметры с именами
Py_DEBUG
иPy_INCREF()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаОграниченный C API по-прежнему не поддерживается в специальной сборке
--with-trace-refs
(макрос``Py_TRACE_REFS``).Патч Виктора Стиннера.
bpo-43244: Удалите заголовочный файл
pyarena.h
с функциями:PyArena_New()
PyArena_Free()
PyArena_Malloc()
PyArena_AddPyObject()
Эти функции были недокументированы, исключены из ограниченного API C и использовались только компилятором. Исправление Виктора Стиннера.
bpo-43244: Удалите функции компилятора и парсера, использующие тип
struct _mod
, поскольку публичный API AST C был удален:PyAST_Compile()
PyAST_CompileEx()
PyAST_CompileObject()
PyFuture_FromAST()
PyFuture_FromASTObject()
PyParser_ASTFromFile()
PyParser_ASTFromFileObject()
PyParser_ASTFromFilename()
PyParser_ASTFromString()
PyParser_ASTFromStringObject()
Эти функции были недокументированы и исключены из ограниченного C API. Исправление Виктора Стиннера.
bpo-43244: Разрешить параметры с именами
ast.h
иasdl.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43541: Исправление регрессии
PyEval_EvalCodeEx()
: исправление подсчета ссылок на встроенные модули. Исправление от Виктора Стиннера.bpo-43244: Удалите заголовочный файл
symtable.h
и недокументированные функции:PyST_GetScope()
PySymtable_Build()
PySymtable_BuildObject()
PySymtable_Free()
Py_SymtableString()
Py_SymtableStringObject()
Функция
Py_SymtableString()
по ошибке вошла в стабильный ABI, но ее нельзя было использовать, потому что заголовочный файлsymtable.h
был исключен из ограниченного API C.Модуль Python
symtable
остается доступным и неизменным.Патч Виктора Стиннера.
bpo-43244: Разрешить параметры с именами
PyAST_Validate()
иmod_ty
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.10.0 alpha 6¶
Дата выхода: 2021-03-01
Безопасность¶
bpo-42967: Устранение уязвимости отравления веб-кэша путем установки по умолчанию разделителя аргументов запроса на
&
и предоставления пользователю возможности выбрать пользовательский разделитель.
Ядро и встроенные модули¶
bpo-43321: Разрешить параметры с именами
SystemError
иPyArg_Parse*()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36346: Разрешить параметры с именами
PyArg_Parse*()
иDeprecationWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43277: Разрешить параметры с именами
PySet_CheckExact()
иset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42990: Разрешить параметры с именами
types.FunctionType
и"__builtins__"
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42990: Разрешить параметры с именами
__builtins__
и__globals__['__builtins__']
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43149: Улучшение сообщения об ошибке в парсере для групп исключений без круглых скобок. Исправление от Pablo Galindo.
bpo-43121: Исправлено некорректное сообщение
SyntaxError
о пропущенной запятой в литералах. Исправление от Пабло Галиндо.bpo-42819: Разрешить параметры с именами
readline
иreadline.read_init_file()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42808: Разрешить параметры с именами
type(object)
иvectorcall
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42217: Сделать так, чтобы компилятор объединял одинаковые объекты co_code и co_linetable в модуль, как это уже было сделано для co_consts.
bpo-41972: Разрешить параметры с именами
str1 in str2
иstr2.find(str1)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42128: Реализуйте PEP 634 (структурное сопоставление шаблонов). Исправление от Брандта Бухера.
bpo-40692: Разрешить параметры с именами
concurrent.futures.ProcessPoolExecutor
иmultiprocess.synchronize()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38302: Разрешить параметры с именами
object.__ipow__()
иNotImplemented
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-43316: Приложение командной строки
python -m gzip
теперь корректно завершает работу при обнаружении неподдерживаемого расширения. Оно завершается с ненулевым кодом выхода и печатает сообщение об ошибке в stderr.bpo-43317: Установите размер чанка для главной функции модуля
gzip
в io.DEFAULT_BUFFER_SIZE. Это немного быстрее, чем константа 1024 байта, которая использовалась ранее.bpo-43146: Разрешить параметры с именами
print_exception()
иformat_exception()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43260: Исправление TextIOWrapper не может вечно промывать внутренний буфер после записи очень большого текста.
bpo-43258: Предотвращение ненужного выделения контекста агрегатной функции
sqlite3
, когда ни одна строка не соответствует агрегатному запросу. Исправление Эрленда Э. Аасланда.bpo-43251: Разрешить параметры с именами
sqlite3
иsqlite3_column_name()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40956: Исправление segfault в
sqlite3.Connection.backup()
, если не был указан аргумент. Регрессия была внесена в PR 23838. Исправление авторства Эрленда Э. Аасланда.bpo-43172: Разрешить параметры с именами
readline.get_begidx()
иreadline.get_endidx()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43163: Исправлена ошибка в
codeop
, из-за которой он не запрашивал дополнительный ввод, когда многострочные фрагменты содержали незакрытые круглые скобки. Исправление от Pablo Galindobpo-43162: отменить неподдерживаемую возможность доступа к членам перечисления как к атрибутам других членов перечисления
bpo-43146: Исправление недавней регрессии в обработке аргумента None в функциях модуля
traceback
.bpo-43102: Метод namedtuple __new__ имел значение __builtins__, установленное в None вместо действительного словаря. Это создавало проблемы для инструментов интроспекции.
bpo-43106: Разрешить параметры с именами
O_EVTONLY
иO_FSYNC
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42960: Разрешить параметры с именами
resource.RLIMIT_KQUEUES
иresource
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42151: Разрешить параметры с именами
xml.etree.ElementTree
и_elementree
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29753: В ctypes теперь правильно вычисляются упакованные битовые поля, а первый элемент упакованного битового поля теперь корректно уменьшается.
Документация¶
Тесты¶
bpo-43288: Исправление test_importlib для корректного пропуска тестов файлов Unicode, если файловая система их не поддерживает.
Построить¶
bpo-43174: Сборка Windows теперь использует опцию компилятора
/utf-8
.bpo-43103: Разрешить параметры с именами
--without-static-libpython
иlibpythonMAJOR.MINOR.a
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-13501: Сценарий configure теперь может использовать libedit вместо readline с опцией командной строки
--with-readline=editline
.bpo-42603: Заставляет скрипт configure использовать pkg-config для определения местоположения заголовков и библиотек Tcl/Tk, используемых для сборки tkinter.
В macOS конфигурация Tcl/Tk, предоставленная pkg-config, будет предпочтительнее, чем фреймворки Tcl/Tk, установленные в
/{System/,}Library/Frameworks
. Если существуют обе конфигурации и предпочтение отдается последней, необходимо явно задать соответствующие параметры конфигурации--with-tcltk-*
.bpo-39448: Добавьте цель makefile «regen-frozen», которая регенерирует код для модуля frozen
__hello__
.
Windows¶
bpo-43155: Разрешить параметры с именами
PyCMethod_New()
иpython3.lib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
macOS¶
bpo-41837: Обновите сборку программы установки macOS для использования OpenSSL 1.1.1j.
IDLE¶
bpo-43283: Документ о том, почему печать в оболочке IDLE часто медленнее, чем печать на системном терминале, и что ее можно ускорить, предварительно отформатировав одну строку перед печатью.
C API¶
bpo-43278: Всегда помещайте информацию о компиляторе и системе в первую строку приветственного сообщения REPL.
bpo-43270: Разрешить параметры с именами
_PyErr_OCCURRED()
иPyErr_Occurred()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35134: Переместите odictobject.h, parser_interface.h, picklebufobject.h, pydebug.h и pyfpe.h в каталог cpython/. Их нельзя включать напрямую, так как они уже включены в Python.h: Include Files.
bpo-35134: Переместите pyarena.h, pyctype.h и pytime.h в каталог cpython/. Их нельзя включать напрямую, так как они уже включены в Python.h: Include Files.
bpo-40170: Разрешить параметры с именами
PyExceptionClass_Name()
иPyTypeObject.tp_name
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43239: Разрешить параметры с именами
PyCFunction_New()
и-fvisibility=hidden
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
PyIter_Check()
иPyTypeObject.tp_iternext
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
PyDescr_IsData()
иPyTypeObject.tp_descr_set
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43181: Преобразуйте макрос
PyObject_TypeCheck()
в статическую инлайн-функцию. Исправление Эрленда Э. Аасланда.
Python 3.10.0 alpha 5¶
Дата выхода: 2021-02-02
Безопасность¶
bpo-42938: Разрешить параметры с именами
ctypes.c_double
иctypes.c_longdouble
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-42990: Рефакторинг семейства функций
PyEval_
.Добавлена новая функция
_PyEval_Vector
, упрощающая обращение к Python из C._PyEval_EvalCodeWithName
удаленPyEval_EvalCodeEx
сохраняется как часть API, но не используется внутренне
bpo-38631: Разрешить параметры с именами
Py_FatalError()
иSystemError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42997: Улучшено сообщение об ошибке при отсутствии «:» перед блоками. Исправление от Пабло Галиндо.
bpo-43017: Улучшено сообщение об ошибке в парсере при использовании непартезированных кортежей в осмыслениях. Исправление от Pablo Galindo.
bpo-42986: Исправление падения парсера при сообщении о синтаксических ошибках в f-строках с новыми строками. Исправление от Pablo Galindo.
bpo-40176: Синтаксические ошибки для нетерминированных строковых литералов теперь указывают на начало строки, а не сообщают о EOF/EOL.
bpo-42927: Разрешить параметры с именами
LOAD_ATTR
и__slots__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42864: Улучшение сообщений об ошибках в парсере, когда круглые скобки не закрыты. Исправление от Pablo Galindo.
bpo-42924: Разрешить параметры с именами
bytearray
иbytearray
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42882: Разрешить параметры с именами
_PyUnicode_FromId()
иPy_Initialize()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42827: Исправление сбоя при отработке строки ошибки
SyntaxError
в некоторых многострочных выражениях.bpo-42823: frame.f_lineno корректен, даже если для frame.f_trace установлено значение True
bpo-37324: Разрешить параметры с именами Коллекции Абстрактные базовые классы и
collections
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41994: Разрешить параметры с именами
import
иsys.modules
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27772: При форматировании строк предшествование поля width значением
'0'
больше не влияет на выравнивание строк по умолчанию.
Библиотека¶
bpo-43108: Исправлена утечка ссылок в модуле
curses
. Исправление от Пабло Галиндоbpo-43077: Обновите поставляемые в комплекте pip до версии 21.0.1 и setuptools до версии 52.0.0.
bpo-41282: Утратить
distutils
в документации и добавить предупреждение при импорте.bpo-43014: Повышение производительности
tokenize
на 20-30%. Патч от Энтони Соттила.bpo-42323: Исправьте
math.nextafter()
для NaN на AIX.bpo-42955: Добавьте
sys.stdlib_module_names
, содержащий список имен модулей стандартной библиотеки. Исправление Виктора Стиннера.bpo-42944: Разрешить параметры с именами
random.Random.sample
иcounts
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42934: Разрешить параметры с именами
TracebackException
иcompact
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42931: Разрешить параметры с именами
randbytes()
иrandom.__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38250: [Enum] Флаги, состоящие из одного бита, теперь считаются каноническими и будут единственными флагами, возвращаемыми при перечислении и итерации над классом Flag или членом Flag. Многобитовые флаги считаются псевдонимами; они будут возвращаться при поиске и операциях, результатом которых является их значение. Итерация для членов Flag и Flag происходит в порядке определения.
bpo-42877: Разрешить параметры с именами
compact
иtraceback.TracebackException
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42923: Разрешить параметры с именами
Py_FatalError()
иfaulthandler
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42848: Удалили рекурсию из
TracebackException
, чтобы позволить ему обрабатывать длинные цепочки исключений.bpo-42901: Разрешить параметры с именами
EnumMeta.__new__
и_proto_member.__set_name__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42780: Исправьте os.set_inheritable() для файловых дескрипторов O_PATH в Linux.
bpo-42866: Исправление утечки ссылок в функции
getcodec()
кодеков CJK. Исправление от Виктора Стиннера.bpo-42846: Переведите 6 модулей расширения кодеков CJK (_codecs_cn, _codecs_hk, _codecs_iso2022, _codecs_jp, _codecs_kr и _codecs_tw) на API многофазной инициализации (PEP 489). Исправление Виктора Стиннера.
bpo-42851: убрать поддержку __init_subclass__ для членов Enum
bpo-42834: Сделайте внутренние кэши модуля
_json
совместимыми с субинтерпретаторами.bpo-41748: Исправлены правила разбора HTMLParser для атрибутов элементов, содержащих запятые с пробелами. Исправление от Карла Дубоста.
bpo-40810: Требуется SQLite 3.7.15 или более новая версия. Исправление от Erlend E. Aasland.
bpo-1635741: Переведите модуль расширения _multibytecodec (кодеки CJK) на многофазную инициализацию (PEP 489). Исправление Эрленда Э. Аасланда.
bpo-42802: Разрешить параметры с именами
bdist_wininst
иbdist_wheel
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24464: Недокументированная встроенная функция
sqlite3.enable_shared_cache
теперь устарела и планируется к удалению в Python 3.12. Документация по SQLite3 настоятельно не рекомендует ее использовать. Исправление Эрленда Э. Аасланда.bpo-42384: Сделайте так, чтобы pdb заполнял sys.path[0] точно так же, как и при обычном выполнении python.
bpo-42383: Исправление pdb: ранее pdb не мог перезапустить цель отладки, если она была указана с использованием относительного пути и текущий каталог изменился.
bpo-42005: Разрешить параметры с именами
cProfile
иprofile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41604: Не уменьшайте счетчик ссылок предыдущего user_ptr, когда set_panel_userptr не работает.
bpo-41149: Разрешить параметры с именами
False
иThreading.thread
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38307: Добавьте атрибут „end_lineno“ к объектам Class и Function, которые появляются в дереве, возвращаемом функциями pyclbr. Этот атрибут и существующий атрибут „lineno“ определяют границы утверждений class и def. Исправление от Aviral Srivastava.
bpo-39273: Разрешить параметры с именами
BUTTON5_*
иcurses
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33289: Исправьте вызов
tkinter.colorchooser
, чтобы вернуть RGB-триплет интов вместо плавающих значений. Исправление от Cheryl Sabella.
Документация¶
Тесты¶
bpo-40823: Разрешить параметры с именами
unittest.TestLoader().loadTestsFromTestCase()
иunittest.makeSuite()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40810: Разрешить параметры с именами
sqlite3
иCheckTraceCallbackContent
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-43031: Разрешить параметры с именами
--timeout=$(TESTTIMEOUT)
и./python -m test --pgo
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36143: Разрешить параметры с именами
make regen-all
иregen-keyword
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42874: Убраны флаги grep -q и -E в секции проверки tzpath сценария configure, чтобы улучшить работу пользователей некоторых платформ (в частности, Solaris 10).
bpo-31904: Добавление пути поиска библиотеки по wr-cc в add_cross_compiling_paths() для VxWorks.
bpo-42856: Разрешить параметры с именами
--with-wheel-pkg-dir=PATH
и./configure
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаНекоторые политики упаковки дистрибутивов Linux рекомендуют не связывать зависимости. Например, Fedora устанавливает пакеты wheel в каталог
/usr/share/python-wheels/
и не устанавливает пакетensurepip._bundled
.
Windows¶
macOS¶
bpo-42504: Убедитесь, что значение sysconfig.get_config_var(„MACOSX_DEPLOYMENT_TARGET“) всегда является строкой, даже если значение можно разобрать как целое число.
IDLE¶
bpo-43008: Заставляет IDLE вызывать
sys.excepthook()
в обычном, двухпроцессном режиме. Исправление Кена Хилтона.bpo-33065: Исправление проблемы отладки пользовательских классов с методом __repr__.
bpo-23544: Отключает Debug=>Stack Viewer, когда запущен пользовательский код или активен отладчик, чтобы предотвратить зависание или крах. Исправление от Zackery Spytz.
bpo-32631: Доработайте модуль расширения примера zzdummy: сделайте так, чтобы пункты меню работали; добавьте документацию и тесты со 100% покрытием.
C API¶
bpo-42979: Разрешить параметры с именами
sq_length
и__len__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-43030: Разрешить параметры с именами
Py_UNICODE_ISSPACE()
иwchar_t
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.10.0 alpha 4¶
Дата выхода: 2021-01-04
Ядро и встроенные модули¶
bpo-42814: Исправьте неопределенное поведение в
Objects/genericaliasobject.c
.bpo-42806: Исправление смещения столбцов для узлов f-строк
ast
, окруженных круглыми скобками, и для узлов, порождающих несколько строк. Исправление от Пабло Галиндо.bpo-40631: Исправление регрессии, при которой единственное выражение со звездочкой в парентезе было допустимой целью присваивания.
bpo-27794: Улучшено сообщение об ошибке при неудачных записях/удалениях объектов свойств. Теперь, когда это возможно, отображается имя атрибута. Патч предоставлен Юрием Карабасом.
bpo-42745: Сделать кэш поиска атрибутов типа индивидуальным для каждого интерпретатора. Исправление Виктора Стиннера.
bpo-42246: Переходы к переходам не устраняются, если это нарушает PEP 626.
bpo-42246: Разрешить параметры с именами
f_lasti
иf_lineno
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32381: Разрешить параметры с именами
# coding: latin1
и-c
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30858: Улучшена локализация ошибок в выражениях, содержащих присваивания. Исправление Пабло Галиндо и Лисандроса Николау.
bpo-42615: Удаление команд перехода, ставших лишними в результате удаления недоступных блоков байткода
bpo-42639: Разрешить параметры с именами
atexit
иatexit
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32381: Разрешить параметры с именами
.pyc
иPyRun_SimpleFileExFlags()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42195: Разрешить параметры с именами
__args__
иtyping.Callable
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40137: Преобразуйте модуль functools для использования
PyType_FromModuleAndSpec()
.bpo-40077: Преобразуйте
array
для использования типов кучи и установите состояние модуля для них.bpo-42008: Исправьте посев _random.Random().
bpo-1635741: Разрешить параметры с именами
pyexpat
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40521: Сделать словарь интернированных строк Unicode совместимым с субинтерпретаторами. Исправление Виктора Стиннера.
bpo-39465: Сделайте функцию
_PyUnicode_FromId()
совместимой с субинтерпретаторами. Теперь каждый интерпретатор имеет массив объектов идентификаторов (интернированных строк, декодированных из UTF-8). Исправление Виктора Стиннера.
Библиотека¶
bpo-42257: Обработка пустой строки в переменной executable в platform.libc_ver()
bpo-42772: randrange() теперь выдает ошибку TypeError, если шаг указан без аргумента stop. Ранее она молча игнорировала аргумент step.
bpo-42759: Разрешить параметры с именами
tkinter.Variable
иtkinter.font.Font
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42756: Настройка сокета LMTP Unix-домена на использование глобального таймаута сокета по умолчанию, если таймаут не указан явно.
bpo-23328: Разрешить символ / в полях имени пользователя и пароля в окружении _PROXY.
bpo-42740: Разрешить параметры с именами
typing.get_args()
иtyping.get_origin()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42655:
subprocess
extra_groups теперь корректно передается в системный вызов setgroups().bpo-42727: Разрешить параметры с именами
EnumMeta.__prepare__
и**kwds
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38308: Добавьте необязательные веса в statistics.harmonic_mean().
bpo-42721: Разрешить параметры с именами
tkinter.simpledialog
иtkinter.messagebox
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25246: Оптимизировано
collections.deque.remove()
.bpo-35728: Добавлен корневой параметр в
tkinter.font.nametofont()
.bpo-15303:
tkinter
поддерживает теперь виджеты с булевым значением False.bpo-42681: Исправлена проверка диапазона для цвета и номера пары в
curses
.bpo-42685: Улучшено размещение простых окон запросов в Tkinter (таких как
tkinter.simpledialog.askinteger()
). Теперь они центрируются по центру родительского окна, если оно указано и показано, в противном случае - по центру экрана.bpo-9694: В справке Argparse больше не используется путаная фраза «необязательные аргументы». Вместо нее используется «опции».
bpo-1635741: Разрешить параметры с именами
_thread
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37961: Исправление сбоя в
tracemalloc.Traceback.__repr__()
(исправлено в Python 3.9).bpo-42630: Разрешить параметры с именами
tkinter
иRuntimeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42639: Разрешить параметры с именами
atexit._run_exitfuncs()
иsys.unraisablehook
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42644: Разрешить параметры с именами
logging.disable
иlogging.setLevel
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42639: При выходе из Python, если обратный вызов, зарегистрированный в
atexit.register()
, не работает, его исключение теперь записывается в журнал. Ранее в журнал записывались только некоторые исключения, а последнее исключение всегда молча игнорировалось.bpo-36541: Исправлена lib2to3.pgen2 для разбора синтаксиса аргументов PEP-570 «только позиция».
bpo-42382: Разрешить параметры с именами
importlib.metadata
иEntryPoint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41877: Добавлена проверка на неправильное написание autospect, auto_spec и set_spec, передаваемых в качестве аргументов в patch, patch.object и create_autospec.
bpo-39717: Разрешить параметры с именами
from None
иfrom e
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41877: AttributeError для предполагаемых опечаток в утверждениях на макетах теперь указывается, что причиной являются опечатки в утверждениях, а также что делать, если опечатка на самом деле является предполагаемым именем атрибута. Документ unittest.mock также обновлен, чтобы отразить текущий набор распознанных опечаток.
bpo-41559: Разрешить параметры с именами PEP 612 и
ParamSpec
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42385: StrEnum: исправьте _generate_next_value_, чтобы он возвращал str
bpo-31904: Определите THREAD_STACK_SIZE для VxWorks.
bpo-34750: [Enum]
_EnumDict.update()
теперь поддерживается.bpo-42517: Enum: приватные имена не становятся членами / не генерируют ошибок - они остаются обычными атрибутами
bpo-42678: Разрешить параметры с именами
Enum
и__init_subclass__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28964:
ast.literal_eval()
добавляет информацию о номере строки (если она доступна) в сообщение об ошибке для неверно сформированных узлов.bpo-42470:
random.sample()
больше не предупреждает о последовательности, которая также является множеством.bpo-31904:
posixpath.expanduser()
возвращает входной путь без изменений, если домашний каталог пользователя None на VxWorks.bpo-42388: Исправьте поведение subprocess.check_output(…, input=None) при text=True, чтобы оно соответствовало поведению документации и universal_newlines=True.
bpo-34463: Разрешить параметры с именами
traceback
иtraceback
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42393: Разрешить параметры с именами
OverflowError
иsocket.ntohs()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42222: Разрешить параметры с именами
random.randrange()
иrange()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаДля проверки и преобразования целых чисел в
randrange()
теперь используетсяoperator.index()
.Нецелые аргументы в
randrange()
устарели.Значение
ValueError
устарело в пользуTypeError
.Теперь он работает немного быстрее, чем раньше.
(Предоставлено Раймондом Хеттингером и Сергеем Сторчакой).
bpo-42163: Восстановление совместимости для
uname_result
вокруг deepcopy и _replace.bpo-42090: Разрешить параметры с именами
zipfile.Path.joinpath
иpathlib.Path.joinpath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Перенесите модуль _csv в API многофазной инициализации (PEP 489).
bpo-42059: Разрешить параметры с именами
typing.TypedDict
иtotal
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41960: Разрешить параметры с именами
globalns
иlocalns
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41907: Разрешить параметры с именами
format()
иIntFlag
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41891: Убедитесь, что asyncio.wait_for ожидает завершения задачи
bpo-24792: Исправлена ошибка, из-за которой
zipimporter
иногда сообщал неверную причину ошибок импорта.bpo-31904: Исправьте модули site и sysconfig для VxWorks RTOS, не имеющей домашних каталогов.
bpo-41462: Добавьте
os.set_blocking()
поддержку VxWorks RTOS.bpo-40219: Опустите фиктивный виджет
tkinter.ttk.LabeledScale
, чтобы не скрывать часть содержимого ярлыка.bpo-37193: Исправлена утечка памяти в
socketserver.ThreadingMixIn
, появившаяся в Python 3.7.bpo-39068: Разрешить параметры с именами
a85encode()
иb85encode()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-17140: Добавьте документацию для класса
multiprocessing.pool.ThreadPool
.bpo-34398: Заметное отображение списков из глоссария в результатах поиска документации. Исправление Аммара Аскара.
Тесты¶
bpo-42794: Обновите test_nntplib, чтобы использовать официальное имя группы news.aioe.org для тестирования. Исправление от Donghee Na.
bpo-31904: Пропустите некоторые тесты asyncio на VxWorks.
bpo-42641: Улучшите
test_select.test_select()
: теперь это занимает 500 миллисекунд, а не 10 секунд. Используйте Python, а не оболочку, чтобы сделать тест более переносимым.bpo-31904: Пропустите некоторые тесты в _test_all_chown_common() на VxWorks.
bpo-42199: Исправьте помощник байткода assertNotInBytecode.
bpo-41443: Добавьте больше проверки атрибутов в test_posix.py
bpo-31904: Отключение os.popen и тестов на воздействие на VxWorks
bpo-41439: Перенос test_ssl и test_uuid в VxWorks RTOS.
Построить¶
bpo-42692: Исправление проверки __builtin_available на старых компиляторах. Исправление Джошуа Рота.
bpo-27640: Разрешить параметры с именами
--disable-test-modules
иconfigure
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42604: Теперь все платформы используют значение переменной сборки «EXT_SUFFIX», полученное из SOABI (например, в freeBSD «EXT_SUFFIX» теперь «.cpython-310d.so», а не «.so»). Ранее только Linux, Mac и VxWorks использовали значение для «EXT_SUFFIX», включающее «SOABI».
bpo-42598: Исправление неявных объявлений функций в configure, которые могли приводить к некорректным проверкам конфигурации. Исправление внесено Джошуа Ротом.
bpo-31904: Включите libpython3.so для VxWorks.
bpo-29076: Добавьте поддержку оболочки fish shell в программу установки macOS.
macOS¶
Инструменты/демоверсии¶
C API¶
bpo-42591: Разрешить параметры с именами
Py_FrozenMain()
и-fvisibility=hidden
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32381: Разрешить параметры с именами
_Py_fopen()
и_Py_wfopen()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Порт
resource
модуля расширения в состояние модуляbpo-42111: Обновите модуль
xxlimited
, чтобы он стал лучшим примером использования ограниченного API на языке C.bpo-40052: Исправление предупреждения/ошибки сборки выравнивания в функции
PyVectorcall_Function()
. Исправление от Andreas Schneider, Antoine Pitrou и Petr Viktorin.
Python 3.10.0 alpha 3¶
Дата выхода: 2020-12-07
Безопасность¶
bpo-40791: Разрешить параметры с именами
volatile
иhmac.compare_digest
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-42576: Разрешить параметры с именами
types.GenericAlias
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42536: Некоторые встроенные и стандартные библиотечные типы теперь гарантируют, что их внутренние кортежи результатов всегда отслеживаются по garbage collector:
Ранее они могли стать неотслеживаемыми в результате предыдущей сборки мусора. Исправление от Брандта Бухера.
bpo-42500: Улучшена обработка исключений вблизи предела рекурсии. Преобразует ряд фатальных ошибок в RecursionErrors.
bpo-42246: PEP 626: После возврата атрибут f_lineno кадра всегда является последней выполненной строкой.
bpo-42435: Ускоряет сравнение байтовых объектов с небайтовыми, если указана опция
-b
. Ускорить сравнение объектов bytarray с объектами, не являющимися буферами.bpo-1635741: Разрешить параметры с именами
_warnings
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41686: Разрешить параметры с именами
SIGINT
и_PyOS_SigintEvent()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42381: Разрешение выражений присваивания в литералах множеств и осмыслениях множеств в соответствии с PEP 572. Исправление от Пабло Галиндо.
bpo-42202: Измените внутреннее представление аннотаций параметров функций на кортеж строк. Патч предоставлен Юрием Карабасом.
bpo-42374: Исправление регрессии, возникшей в новом парсере, когда в выражениях-генераторах не разрешалось использовать оператор моржа, не имеющий родительских отношений.
bpo-42316: Разрешить моржа без родительского падежа в подскриптных индексах.
bpo-42349: Убедитесь, что фронт-енд компилятора выдает хорошо сформированный граф потока управления. Будьте более агрессивны в бэкэнд-компиляторе, поскольку теперь это безопасно.
bpo-42296: В Windows исправлена регрессия в обработке сигналов, которая не позволяла прервать программу с помощью CTRL+C. Обработчик сигналов может быть запущен в потоке, отличном от потока Python, и в этом случае тест, определяющий, может ли поток обрабатывать сигналы, неверен.
bpo-42332: Объекты
types.GenericAlias
теперь могут быть объектами weakrefs.bpo-42282: Оптимизация константных подвыражений, которые появляются как часть именованных выражений (ранее AST-оптимизатор не опускался в именованные выражения). Исправление Ника Коглана.
bpo-42266: Исправлена ошибка в кэше опкодов LOAD_ATTR, которая не позволяла исправить атрибут уровня класса, чтобы сделать его дескриптором. Исправление Пабло Галиндо.
bpo-42246: Улучшена точность событий трассировки линий и атрибута f_lineno объектов Frame. Подробности см. в PEP 626.
bpo-42233: Разрешить параметры с именами
GenericAlias
и union type expressions с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26131: Разрешить параметры с именами
ImportWarning
иload_module()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-5054: CGIHTTPRequestHandler.run_cgi() Неправильно разобран HTTP_ACCEPT. Замените специальный метод getallmatchingheaders на общий метод get_all и добавьте соответствующие тесты.
Оригинальный патч Мартина Пантера. Изменено Сентхилом Кумараном.
bpo-42562: Исправлена проблема, когда dis не мог разобрать функцию, не имеющую номеров строк. Исправление предоставлено Юрием Карабасом.
bpo-17735: Разрешить параметры с именами
inspect.findsource()
иOSError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42116: Исправьте обработку комментариев в конце страницы
inspect.getsource()
.bpo-42532: Разрешить параметры с именами
__bool__
иspec_arg
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38200: Добавлена функция itertools.pairwise()
bpo-41818: Исправьте test_master_read() так, чтобы она успешно работала на всех платформах, которые либо поднимают OSError, либо возвращают b«» при чтении с master.
bpo-42487: ChainMap.__iter__ больше не вызывает __getitem__ на нижележащих картах
bpo-42482:
TracebackException
больше не содержит ссылку на объект трассировки исключения. Следовательно, экземпляры TracebackException для эквивалентных, но неравных исключений теперь сравниваются как равные.bpo-41818: Сделайте так, чтобы test_openpty() избегала неожиданного успеха из-за того, что количество строк и/или количество столбцов == 0.
bpo-42392: Разрешить параметры с именами
asyncio.subprocess
иasyncio.tasks
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42392: Разрешить параметры с именами
asyncio.open_connection
иasyncio.start_server
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28468: Разрешить параметры с именами
platform.freedesktop_os_release()
иos-release
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42299: Удален модуль
formatter
, который был устаревшим в Python 3.4. Он несколько устарел, мало используется и не тестируется. Изначально планировалось удалить его в Python 3.6, но удаление было отложено до выхода Python 2.7 EOL. Существующие пользователи должны скопировать все классы, которые они используют, в свой код. Исправление сделано Донгхи На и Терри Дж. Риди.bpo-26131: Утрачиваем функцию zipimport.zipimporter.load_module() в пользу exec_module().
bpo-41818: Обновлены тесты для библиотеки pty. test_basic() заменена на test_openpty(); дополнительно проверяется, правильно ли устанавливаются slave termios и slave winsize с помощью pty.openpty(). Чтобы добавить поддержку FreeBSD, NetBSD, OpenBSD и Darwin, добавлена test_master_read(), которая демонстрирует, что pty.spawn() не должен зависеть от OSError для выхода из цикла копирования.
bpo-42392: Разрешить параметры с именами
__init__
иasyncio.locks
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-15450: Разрешить параметры с именами
filecmp.dircmp
иfilecmp.dircmp.subdirs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42413: Разрешить параметры с именами
socket.timeout
иTimeoutError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31904: Поддержка сигнального модуля на VxWorks.
bpo-42406: Разрешить параметры с именами
pickle.whichmodule
иmultiprocessing
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42403: Разрешить параметры с именами
importlib
иimportlib._bootstrap_external
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Преобразование типов модуля _sre в типы кучи (PEP 384). Исправление Эрленда Э. Аасланда.
bpo-42375: обновление модуля подпроцессов для поддержки DragonFlyBSD.
bpo-41713: Разрешить параметры с именами
_signal
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37205: Разрешить параметры с именами
time.time()
иtime.perf_counter()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42328: Разрешить параметры с именами
tkinter.ttk.Style.map()
иStyle.map()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42345: Исправление различных проблем с обработкой параметров
typing.Literal
(flatten, deduplicate, use type to cache key). Патч предоставлен Юрием Карабасом.bpo-37205: Разрешить параметры с именами
time.perf_counter()
иtime.monotonic()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42318: Исправлена поддержка не-BMP символов в
tkinter
на macOS.bpo-42350: Исправьте класс
threading.Thread
на fork: ничего не делать, если поток уже остановлен (например, fork вызывается при выходе из Python). Ранее ошибка записывалась в журнал дочернего процесса.bpo-42333: Перенос модуля расширения _ssl в кучу типов.
bpo-42014: Разрешить параметры с именами
onerror
иshutil.rmtree
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42237: Исправьте
os.sendfile()
на illumos.bpo-42308: Разрешить параметры с именами
threading.__excepthook__
иthreading.excepthook()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42131: Реализуйте методы PEP 451/spec в zipimport.zipimporter: find_spec(), create_module() и exec_module().
Это также позволяет документировать устаревание find_loader(), find_module() и load_module().
bpo-41877: Макетные объекты, которые не являются небезопасными, теперь будут вызывать ошибку AttributeError при обращении к атрибуту с префиксом asert, aseert или assrt, в дополнение к тому, что это уже происходит для префиксов assert или assret.
bpo-42264: Разрешить параметры с именами
sqlite3.OptimizedUnicode
иstr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42251: Разрешить параметры с именами
threading.gettrace()
иthreading.getprofile()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42249: Исправлена запись двоичных Plist-файлов размером более 4 ГБ.
bpo-42236: Разрешить параметры с именами
os.device_encoding()
и'UTF-8'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41754: webbrowser: Игнорировать NotADirectoryError при вызове
xdg-settings
.bpo-42183: Исправление ошибки переполнения стека для asyncio Task или Future repr().
Переполнение происходит при некоторых обстоятельствах, когда Task или Future рекурсивно возвращают сами себя.
bpo-42140: Улучшите функцию asyncio.wait, чтобы набор фьючерсов создавался только один раз.
bpo-42133: Разрешить параметры с именами
__spec__.loader
и__loader__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26131: Разрешить параметры с именами
load_module()
иimportlib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39825: Разрешить параметры с именами
sysconfig.get_config_var('EXT_SUFFIX')
иplatform_tag.extension
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26389: Разрешить параметры с именами
traceback.format_exception()
иtraceback.format_exception_only()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41889: Enum: исправлена регрессия, связанная с наследованием многократно наследуемого enum
bpo-41861: Преобразуйте
sqlite3
для использования типов кучи (PEP 384). Исправление Эрленда Э. Аасланда.bpo-40624: Добавлена поддержка оператора XPath
!=
в xml.etreebpo-28850: Разрешить параметры с именами
pprint.PrettyPrinter.format()
иpprint._safe_repr()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41625: Разрешить параметры с именами
splice()
иos.splice()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34215: Разрешить параметры с именами
asyncio.IncompleteReadError
иexpected
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41543: Добавьте поддержку асинхронного менеджера контекста для contextlib.nullcontext.
bpo-21041:
pathlib.PurePath.parents
теперь поддерживает отрицательную индексацию. Патч внесен Ярославом Панковичем.bpo-41332: Добавлен недостающий метод connect_accepted_socket() в
asyncio.AbstractEventLoop
.bpo-12800: Извлечение симлинка из tarball должно завершиться успешно и перезаписать симлинк, если он уже существует. Исправление заключается в удалении существующего файла или симлинка перед извлечением. Основано на исправлении Криса Атли, Джеффри Кинчера и Сентхила Кумарана.
bpo-40968: Разрешить параметры с именами
urllib.request
иhttp.client
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41001: Добавьте
os.eventfd()
, чтобы обеспечить низкоуровневый интерфейс для файлового дескриптора уведомлений о событиях в Linux.bpo-40816: Добавьте AsyncContextDecorator в contextlib для поддержки асинхронного менеджера контекста в качестве декоратора.
bpo-40550: Исправление проблемы времени проверки/времени действия в subprocess.Popen.send_signal.
bpo-39411: Разрешить параметры с именами
is_async
иpyclbr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35498: Добавьте поддержку срезов в
pathlib.PurePath.parents
.
Документация¶
bpo-42238: Предварительно мы планируем деприватизировать
make suspicious
, сначала удалив его из сборок CI и документации, но оставив его для ручного использования.bpo-42153: Исправьте URL для документов протокола IMAP.
bpo-41028: Переключатели языков и версий, ранее поддерживаемые в каждой ветке cpython, теперь обрабатываются docsbuild-script.
Тесты¶
bpo-41473: Повторное включение test_gdb на gdb 9.2 и новее: https://bugzilla.redhat.com/show_bug.cgi?id=1866884 ошибка исправлена в gdb 10.1.
bpo-42553: Разрешить параметры с именами
test_asyncio.test_call_later()
иcall_later()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31904: Исправьте test_netrc на VxWorks: создание временных каталогов с помощью temp_cwd().
bpo-31904: пропустить test_getaddrinfo_ipv6_scopeid_symbolic и test_getnameinfo_ipv6_scopeid_symbolic на VxWorks
bpo-31904: пропустить test_test из test_mailcap на VxWorks
bpo-31904: добавьте требование оболочки для test_pipes
bpo-31904: пропустите некоторые тесты, связанные с fifo на VxWorks
bpo-31904: Исправление ошибок в test_doctest.py для VxWorks.
bpo-40754: Включите модуль
_testinternalcapi
в программу установки Windows для тестового набораbpo-41561: test_ssl: пропускать test_min_max_version_mismatch, когда TLS 1.0 недоступен
bpo-31904: Исправление сбоев в работе модулей os для VxWorks RTOS.
bpo-31904: Исправление тестовых случаев fifo для VxWorks RTOS.
Построить¶
bpo-31904: удалите зависимость libnet из detect_socket() для VxWorks
bpo-42398: Исправление состояния гонки в «make regen-all» при использовании опции make -jN для параллельного запуска заданий. Скрипт clinic.py теперь использует только атомарную запись для записи файлов. При перемещении сгенерированные файлы теперь остаются неизменными, если их содержимое не меняется, чтобы не менять время модификации файла.
bpo-41617: Разрешить параметры с именами
pycore_bitutils.h
и__builtin_bswap16()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38823: Разрешить параметры с именами
_ctypes
иwchar_t
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42087: Поддержка была удалена для AIX 5.3 и ниже. См. bpo-40680.
bpo-40998: Устранены три предупреждения компилятора, обнаруженные средством очистки неопределенного поведения (ubsan).
Windows¶
macOS¶
bpo-42504: Исправление сборки на macOS Big Sur, когда MACOSX_DEPLOYMENT_TARGET=11
bpo-41116: Убедитесь, что distutils.unixxcompiler.find_library_file может находить системные библиотеки на macOS 11.
bpo-41100: Добавлена поддержка macOS 11 и систем Apple Silicon.
Теперь можно собирать двоичные файлы «Universal 2», используя «–enable-universalsdk –with-universal-archs=universal2».
Двоичные файлы, собранные на более поздних версиях macOS, могут быть развернуты обратно на более старые версии (проверено до macOS 10.9) при использовании правильной цели развертывания. Это проверено с помощью Xcode 11 и более поздних версий.
bpo-42232: В модуль mmap добавлены специфические для Дарвина опции madvise.
bpo-38443: Разрешить параметры с именами
--enable-universalsdk
и--with-universal-archs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
IDLE¶
bpo-42508: Сохраните работу IDLE на macOS. Устранение устаревшего обходного пути, который не позволял запускать файлы с ярлыками при использовании новых универсальных установщиков2, созданных на macOS 11.
bpo-42426: Исправлено сообщение о смещении ошибки RE в searchengine.
bpo-42415: Чаще получайте документацию для подсказок IDLE, используя inspect.getdoc.
Инструменты/демоверсии¶
bpo-42212: Скрипт smelly.py теперь также проверяет динамическую библиотеку Python и модули расширения, а не только статическую библиотеку Python. Также сделайте скрипт более подробным: объясните, что он делает.
bpo-36310: Разрешить параметры с именами
Tools/i18n/pygettext.py
иgettext
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
C API¶
bpo-42423: Разрешить параметры с именами
PyType_FromSpecWithBases()
иPyType_FromModuleAndSpec()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
select
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Перенос модуля расширения _posixsubprocess для многофазной инициализации (PEP 489).
bpo-1635741: Порт модуля расширения _posixshmem для многофазной инициализации (PEP 489)
bpo-1635741: Модуль расширения Port _struct для многофазной инициализации (PEP 489)
bpo-1635741: Разрешить параметры с именами
spwd
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
gc
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Модуль расширения порта _queue для многофазной инициализации (PEP 489)
bpo-39573: Разрешить параметры с именами
Py_TYPE()
иPy_SIZE()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
symtable
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
grp
иpwd
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Модуль расширения порта _random для многофазной инициализации (PEP 489)
bpo-1635741: Порт модуля расширения _hashlib для многофазной инициализации (PEP 489)
bpo-41713: Разрешить параметры с именами
PyOS_InitInterrupts()
иPyConfig.install_signal_handlers
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
Py_TRASHCAN_BEGIN
и_PyTrash_cond()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42260: Разрешить параметры с именами
Py_GetPath()
иPy_GetPrefix()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42260: Разрешить параметры с именами
PyConfig_Read()
иPyConfig.argv
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42262: Разрешить параметры с именами
Py_NewRef()
иPy_XNewRef()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42260: Разрешить параметры с именами
Py_Initialize()
иsys
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41832: Разрешить параметры с именами
PyType_FromModuleAndSpec()
иtp_doc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
PyModule_AddObjectRef()
иPyModule_AddObject()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42171: Разрешить параметры с именами
METH_FASTCALL
иPyModule_AddType()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42085: Добавьте специальную запись в PyAsyncMethods для отправки значений
bpo-41073:
PyType_GetSlot()
теперь могут принимать статические типы.bpo-30459: Разрешить параметры с именами
PyList_SET_ITEM()
иPyTuple_SET_ITEM()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.10.0 alpha 2¶
Дата выхода: 2020-11-03
Безопасность¶
bpo-42103: Предотвращена потенциальная DoS-атака через истощение процессора и оперативной памяти при обработке вредоносных файлов Apple Property List в двоичном формате.
bpo-42051: Модуль
plistlib
больше не принимает объявления сущностей в XML-файлах plist, чтобы избежать уязвимостей XML. Это не должно повлиять на пользователей, поскольку объявления сущностей не используются в обычных plist-файлах.
Ядро и встроенные модули¶
bpo-42236: Если функция
nl_langinfo(CODESET)
возвращает пустую строку, Python теперь использует UTF-8 в качестве кодировки файловой системы. Исправление Виктора Стиннера.bpo-42218: Исправлена ошибка в парсере PEG, которая приводила к сбоям в режиме отладки. Теперь ошибки проверяются в леворекурсивных правилах, чтобы избежать случаев, когда такие ошибки не обрабатываются вовремя и проявляются в виде дальних сбоев в других местах.
bpo-42214: Исправлено возможное падение парсера PEG при проверке наличия токена „!=“ в правиле
barry_as_flufl
. Автор исправления - Пабло Галиндо.bpo-42206: Распространяйте и поднимайте ошибки, вызванные
PyAST_Validate()
в парсере.bpo-41796: Внутреннее состояние модуля
ast
теперь зависит от интерпретатора. Исправление Виктора Стиннера.bpo-42143: Исправлена обработка ошибок при создании
PyFunctionObject
, которые приводили к операциям с неинициализированной памятью. Исправление от Йонатана Гольдшмидта.bpo-41659: Разрешить параметры с именами
primary
иa {b}
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42150: Исправление возможного переполнения буфера в новом парсере при проверке строк продолжения. Исправление от Пабло Галиндо.
bpo-42123: Запустите парсер два раза. При первом запуске отключите все правила, которые генерируют только лучшие сообщения об ошибках, чтобы увеличить производительность. Если произошел сбой разбора, запустите парсер во второй раз с включенными правилами.
bpo-42093: Инструкция
LOAD_ATTR
теперь использует новый механизм «кэш на опкод» и теперь работает примерно на 36 % быстрее. Патч от Пабло Галиндо и Юрия Селиванова.bpo-42030: Поддержка устаревшей поддержки загрузки общих библиотек, специфичной для AIX, была удалена. Все версии AIX, начиная с 4.3, поддерживают и по умолчанию используют вместо этого обычный механизм Unix.
bpo-41984: Сборщик мусора теперь отслеживает все пользовательские классы. Исправление от Брандта Бухера.
bpo-41993: Исправлена потенциальная проблема с удалением не полностью инициализированного модуля из
sys.modules
при неудачном импорте.bpo-41979: Распаковка звезд теперь разрешена для целей предмета в парсере PEG.
bpo-41974: Разрешить параметры с именами
__int__
и__float__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41902: Разрешить параметры с именами
sq_item
иmp_subscript
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41894: Если при загрузке нативного модуля происходит сбой загрузки, предотвратите возможную ошибку UnicodeDecodeError при работе не в локали UTF-8, декодируя сообщение об ошибке загрузки с использованием кодировки текущей локали.
bpo-41902: Микрооптимизация для range.index, если шаг равен 1. Патч от Donghee Na.
bpo-41435: Добавьте функцию
sys._current_exceptions()
для получения словаря, отображающего идентификатор каждого потока на самое верхнее исключение, активное в этом потоке на момент вызова функции.bpo-38605: Разрешить параметры с именами
from __future__ import annotations
и PEP 563 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-35455: Разрешить параметры с именами
thread_time()
иgethrvtime()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42233: Разрешить параметры с именами
repr()
иtyping
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29566:
binhex.binhex()
последовательно пишет окончания строк macOS 9.bpo-26789: Разрешить параметры с именами
logging.FileHandler
иopen()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42157: Разрешить параметры с именами
unicodedata.ucnhash_CAPI
и_PyUnicode_Name_CAPI
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42157: Разрешить параметры с именами
unicodedata
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42146: Разрешить параметры с именами
subprocess.Popen()
иuser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42103: Разрешить параметры с именами
InvalidFileException
иRecursionError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41490: Разрешить параметры с именами
importlib.resources
и.path
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41052: Пикирование типов кучи, реализованных на C с протоколами 0 и 1, теперь приводит к ошибке, а не к выдаче некорректных данных.
bpo-42089: В
importlib.metadata.PackageNotFoundError
сделайте ссылку на отсутствие метаданных пакета, чтобы улучшить пользовательский опыт.bpo-41491: plistlib: исправление разбора XML-плистов с шестнадцатеричными целыми значениями
bpo-42065: Исправление некорректно оформленной ошибки при вызове
_codecs.charmap_decode()
с отображаемым значением вне диапазона допустимых кодовых точек Unicode. PR Макса Бернштейна.bpo-41966: Исправление забора чистых подклассов Python
datetime.time
. Исправление от Дина Инвуда.bpo-19270:
sched.scheduler.cancel()
теперь отменяет правильное событие, если два события с одинаковым приоритетом запланированы на одно и то же время. Исправление от Bar Harel.bpo-28660: Разрешить параметры с именами
textwrap.wrap()
иbreak_long_words=True
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35823: Разрешить параметры с именами
vfork()
иfork()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42043: Разрешить параметры с именами
zipfile.Path
иzipfile.Path.is_file()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42021: Исправьте возможные утечки ссылок в модуле
sqlite3
init.bpo-39101: Исправлено зависание тестов, использующих IsolatedAsyncioTestCase, на BaseExceptions.
bpo-41976: Разрешить параметры с именами
ctypes.util.find_library()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41943: Исправлена ошибка, при которой TestCase.assertLogs неправильно фильтровал сообщения по уровню.
bpo-41923: Разрешить параметры с именами PEP 613 и
typing.TypeAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41905: Новая функция в abc: update_abstractmethods для повторного вычисления статуса абстрактного класса. Кроме того, dataclass был изменен для вызова этой функции.
bpo-23706: Добавлен параметр newline в
pathlib.Path.write_text()
.bpo-41876: Класс шрифта Tkinter repr использует имя шрифта
bpo-41831: Разрешить параметры с именами
str()
иtype
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39337:
encodings.normalize_encoding()
теперь игнорирует символы, отличные от ASCII.bpo-41747: Разрешить параметры с именами
dataclasses.dataclass()
и__qualname__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30681: Обработка исключений, вызванных непарсируемыми заголовками даты при использовании политики электронной почты «по умолчанию». Исправления от Tim Bell, Georges Toth
bpo-41586: Добавьте F_SETPIPE_SZ и F_GETPIPE_SZ в модуль fcntl. Позволяет устанавливать размер труб в subprocess.Popen.
bpo-41229: Разрешить параметры с именами
contextlib.aclosing
иcontextlib.closing
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-16396: Разрешите импортировать
ctypes.wintypes
на системы, отличные от Windows.bpo-4356: Добавьте ключевую функцию в модуль bisect.
bpo-40592: Разрешить параметры с именами
shutil.which()
иPATHEXT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40492: Разрешить параметры с именами
--outfile
иcProfile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34204: Разрешить параметры с именами
shelve
иpickle.DEFAULT_PROTOCOL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27321: Исправлено исключение KeyError, когда при сплющивании письма в строку пытались заменить несуществующий заголовок Content-Transfer-Encoding.
bpo-38976: Модуль
http.cookiejar
теперь поддерживает разбор куки-файлов в файлах cookiejar в стиле CURL через MozillaCookieJar на всех платформах. Ранее при загрузке cookiejar с такими записями они молча игнорировались.Кроме того, атрибут HTTP Only сохраняется в объекте и будет корректно записан в файл, если объект MozillaCookieJar будет впоследствии сброшен.
Документация¶
bpo-42061: Функциональность документа __format__ для IP-адресов.
bpo-41910: Документируйте реализацию по умолчанию
object.__eq__
.bpo-42010: Разрешить параметры с именами classes и types с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-41805: Разрешить параметры с именами generic alias type и
types.GenericAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39693: Исправьте документацию по извлечению tarfile
bpo-39416: Документируйте некоторые ограничения на строковые представления по умолчанию для числовых классов.
Тесты¶
bpo-41739: Исправьте test_logging.test_race_between_set_target_and_flush(): теперь тест ожидает завершения всех потоков, чтобы избежать утечки запущенных потоков.
bpo-41970: Избегайте сбоя теста в
test_lib2to3
, если модуль уже импортирован на момент выполнения теста. Исправление Пабло Галиндо.bpo-41944: Тесты для кодеков CJK больше не вызывают
eval()
для содержимого, полученного по HTTP.bpo-41306: Исправлена ошибка в
test_tk.test_widgets.ScaleTest
, возникавшая при выполнении теста с Tk 8.6.10.
Построить¶
bpo-38980: Разрешить параметры с именами
-fno-semantic-interposition
и--enable-optimizations
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Windows¶
bpo-38439: Обновляет иконки для IDLE в пакете Windows Store.
bpo-38252: Использование 8-байтового шага для определения последовательности ASCII в 64-битной сборке Windows.
bpo-39107: Обновление Tcl и Tk до версии 8.6.10 в программе установки Windows.
bpo-41557: Обновление программы установки Windows для использования SQLite 3.33.0.
bpo-38324: Избегайте ошибок Unicode при обращении к определенным данным локали в Windows.
macOS¶
bpo-41471: Игнорировать недопустимые длины префиксов в исключениях системного прокси.
IDLE¶
bpo-33987: В основном завершено использование виджетов ttk, в основном для редактора, настроек и поиска. Некоторые исправления от Марка Розмана.
bpo-40511: Ввод открывающей и закрывающей скобок внутри скобок вызова функции больше не будет приводить к ненужному «миганию» уже открытой скобки, например, при вводе строкового литерала.
bpo-38439: Добавляет значок IDLE размером 256×256 пикселей в файл Windows .ico. Создано Эндрю Кловером. Удалите из файла .ico вариации gif с низким содержанием цвета.
C API¶
bpo-42157: Разрешить параметры с именами
_PyUnicode_Name_CAPI
иunicodedata.ucnhash_CAPI
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-42015: Разрешить параметры с именами
PyMethodDef
иself
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40423: Разрешить параметры с именами
subprocess
иos.closerange
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41845:
PyObject_GenericGetDict()
снова доступен в ограниченном API при использовании версии 3.10 или более поздней.bpo-40422: Добавьте функцию
_Py_closerange
, чтобы обеспечить эффективное закрытие диапазона файловых дескрипторов.bpo-41986: Разрешить параметры с именами
Py_FileSystemDefaultEncodeErrors
иPy_UTF8Mode
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41756: Добавьте функцию
PyIter_Send
, чтобы можно было отправлять значение в генератор/корутин/итератор, не вызывая исключения StopIteration для сигнала возврата.bpo-41784: Добавлена
PyUnicode_AsUTF8AndSize
в ограниченный C API.
Python 3.10.0 alpha 1¶
Дата выхода: 2020-10-05
Безопасность¶
bpo-41304: Разрешить параметры с именами
python3x._pth
и bpo-29778 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41162: Крючки аудита теперь очищаются позже во время финализации, чтобы не пропустить события.
bpo-29778: Разрешить параметры с именами
python3.dll
и CVE-2020-15523 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41004: Методы __hash__() ipaddress.IPv4Interface и ipaddress.IPv6Interface некорректно генерировали постоянные значения хэша 32 и 128 соответственно. Это приводило к постоянным хэш-коллизиям. Исправление использует hash() для генерации хэш-значений для кортежа (адрес, длина маски, сетевой адрес).
bpo-39603: Предотвращение инъекций в http-заголовки путем отклонения управляющих символов в http.client.putrequest(…).
Ядро и встроенные модули¶
bpo-41909: Разрешить параметры с именами
issubclass()
иisinstance()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41922: Разрешить параметры с именами
reversed()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41873: Разрешить параметры с именами
float()
иvectorcall
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41870: Разрешить параметры с именами
bool()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
_bisect
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39934: Корректный подсчет управляющих блоков в „except“ в компиляторе. Гарантирует, что для глубоко вложенных именованных обработчиков исключений произойдет синтаксическая ошибка, а не фатальная.
bpo-41780: Разрешить параметры с именами
__dir__()
иtypes.GenericAlias
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
_lsprof
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
cmath
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
_scproxy
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
termios
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Преобразуйте типы модулей расширения
_sha256
в типы кучи.bpo-41690: Исправление возможного переполнения стека в парсере при разборе функций и классов с большим количеством аргументов. Исправление от Pablo Galindo.
bpo-1635741: Разрешить параметры с именами
_overlapped
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
_curses_panel
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
_opcode
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41681: Разрешить параметры с именами
,
иstr.format()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41675: Разрешить параметры с именами
signal.siginterrupt()
иsigaction()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41670: Предотвращает пропуск трассировки строк на платформах, не скомпилированных с
USE_COMPUTED_GOTOS
. Исправлена проблема, из-за которой некоторые строки, вложенные в блок try-except, не трассировались на Windows.bpo-41654: Исправление сбоя, возникавшего при уничтожении подклассов
MemoryError
. Исправление от Пабло Галиндо.bpo-1635741: Разрешить параметры с именами
zlib
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41631: Разрешить параметры с именами
_ast
и__import__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40077: Разрешить параметры с именами
_operator
иPyType_FromSpec()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1653741: Перенос
_sha3
в многофазный init. Преобразование статических типов в типы кучи.bpo-1635741: Разрешить параметры с именами
_blake2
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41533: Разрешить параметры с именами
va_build_stack
иdo_mkstack
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41531: Исправлена ошибка, из-за которой при компиляции литералов dict, содержащих более 0xFFFF элементов, ключи выпадали. Исправление от Пабло Галиндо.
bpo-41525: Теперь вывод
python --help
содержит только символы ASCII.bpo-1635741: Разрешить параметры с именами
_sha1
и_sha512
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41431: Разрешить параметры с именами
dict_merge()
иdict(d)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41428: Реализация PEP 604. Это поддерживает (int | str) и т. д. вместо Union[str, int].
bpo-41340: Удалена реализация fallback для
strdup
.bpo-38156: Правильно обрабатывайте прерывания, приходящие после EOF в
PyOS_StdioReadline
.bpo-41342:
round()
с целочисленным аргументом теперь работает быстрее (9–60%).bpo-41334: Разрешить параметры с именами
str()
иbytes()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41295: Устранение регрессии в CPython 3.8.4, когда определение «__setattr__» в мультинаследовании и вызов вверх по иерархической цепочке могли завершиться неудачей, если встроенные/расширяемые типы были вовлечены в базовые типы.
bpo-41323: Оптимизация байткода выполняется непосредственно на графе потока управления. В некоторых случаях это приводит к созданию более компактных объектов кода.
bpo-41247: Всегда кэшировать держатель цикла при выполнении
asyncio.set_running_loop
.bpo-41252: Исправление неправильного подсчета ссылок в _ssl.c
_servername_callback()
.bpo-1635741: Порт
multiprocessing
для многофазной инициализацииbpo-1635741: Порт
winapi
для многофазной инициализацииbpo-41215: Использование не-NULL значений по умолчанию в списке ключевых слов парсера PEG для устранения ошибки, которая мешала правильному компилированию Python при использовании компилятора XLC. Исправление от Пабло Галиндо.
bpo-41218: В Python 3.8.3 была регрессия, при которой компиляция с ast.PyCF_ALLOW_TOP_LEVEL_AWAIT агрессивно помечала списочное понимание как CO_COROUTINE. Теперь только списковые компиляции, использующие async/await, будут помечены как таковые.
bpo-1635741: Порт
faulthandler
для многофазной инициализации.bpo-1635741: Порт
sha256
для многофазной инициализацииbpo-41175: Защищает от разыменования указателя NULL внутри объекта bytearrayobject, вызванного операцией
bytearray() + bytearray()
.bpo-41100: добавьте arm64 к допустимым аркам Mac OS в mpdecimal.h
bpo-41094: Исправление ошибок декодирования с аудитом при открытии файлов с не-ASCII именами на локали не-UTF-8.
bpo-39960: «Хакчек», предотвращающий обход __setattr__() типа путем вызова метода суперкласса, был переписан для разрешения кучи типов, реализованных в C.
bpo-41084: Префикс сообщения об ошибке с „f-string: „ при разборе выражения f-string, которое бросает
SyntaxError
.bpo-40521: Пустые фростенсеты больше не являются синглтонами.
bpo-41076: Предварительно передайте парсеру местоположение выражения f-строки, а не саму f-строку, что позволяет нам пропустить перестановку местоположения узлов AST после завершения парсинга.
bpo-41056: Исправлена ссылка на деаллоцированное пространство стека во время запуска при построении sys.path с использованием относительной симлинки, когда код был предоставлен через -c. (обнаружено через Coverity)
bpo-41061: Исправление некорректных выражений и утверждений в коде и тестах hashtable.
bpo-41052: Отказ от сериализации/десериализации для _random.Random
bpo-40939: Разрешить параметры с именами
PyPegen*
иPyParser*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35975: Стефан Бехнель сообщил, что cf_feature_version используется даже тогда, когда PyCF_ONLY_AST не установлен. Это противоречит намерениям и задокументированному поведению, так что это исправлено.
bpo-40939: Удалите оставшиеся файлы старого парсера и модуля
symbol
.bpo-40077: Разрешить параметры с именами
_bz2
иPyType_FromSpec()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41006: Модуль
encodings.latin_1
больше не импортируется при запуске. Теперь он импортируется только тогда, когда речь идет о кодировке файловой системы или кодировке stdio.bpo-40636: Разрешить параметры с именами
zip()
и PEP 618 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Порт
_gdbm
для многофазной инициализации.bpo-40985: Исправлена ошибка, из-за которой текст
SyntaxError
был пустым, когда файл заканчивался строкой, завершающейся символом продолжения строки (т.е. обратным слешем). Текст ошибки должен содержать текст последней строки.bpo-40958: Исправление возможного переполнения буфера в парсере PEG при сборе информации для выдачи синтаксических ошибок. Исправление от Pablo Galindo.
bpo-1635741: Порт
_dbm
для многофазной инициализации.bpo-40957: Исправьте утечку в _Py_fopen_obj() при сбое PySys_Audit()
bpo-40950: Разрешить параметры с именами
nis
и PEP 3121 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40947: Разрешить параметры с именами Path Configuration и
PyConfig.platlibdir
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40939: Удалите старый парсер, модуль
parser
и весь связанный с ним код поддержки, параметры командной строки и переменные окружения. Исправление от Пабло Галиндо.bpo-40847: Разрешить параметры с именами
NEWLINE
иSyntaxError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40890: Разрешить параметры с именами
mapping
иtypes.MappingProxyType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40889: Улучшена производительность операций симметричной разности на представлениях элементов словаря. Исправление Денниса Суини.
bpo-40904: Исправление возможного сегфайта в новом парсере PEG при разборе f-строки, содержащей оператор yield без значения (
f"{yield}"
). Исправление от Pablo Galindobpo-40903: Исправлена возможная ошибка сегментации в новом парсере PEG при выдаче сообщений об ошибках для некорректных присваиваний вида
p=p=
. Исправление от Pablo Galindobpo-40880: Исправление некорректного чтения памяти в новом парсере при проверке новых строк в строковых литералах. Исправление от Пабло Галиндо.
bpo-40883: Исправление утечки памяти при разборе f-строк в новом парсере. Исправление от Pablo Galindo
bpo-40870: Разрешить параметры с именами
ValueError
иTrue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40854: Разрешить параметры с именами
sys.platlibdir
иPYTHONPLATLIBDIR
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40826: Исправьте использование GIL в
PyOS_Readline()
: заблокируйте GIL для установки исключения и передайте состояние потока Python при проверке наличия ожидающего сигнала.bpo-1635741: Порт
fcntl
для многофазной инициализации.bpo-19468: Удалите ненужную проверку экземпляра в importlib.reload(). Исправление от Furkan Önder.
bpo-40824: Разрешить параметры с именами
__iter__
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40792: Разрешить параметры с именами
start
иstop
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40780: Исправление углового случая, когда при форматировании строки float в стиле g не удалялись нули в конце строки.
bpo-38964: Разрешить параметры с именами
SyntaxError
иSyntaxError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40750: Поддержка флага отладки «-d» в новом парсере PEG. Исправление от Пабло Галиндо
bpo-40217: Экземпляры типов, созданных с помощью
PyType_FromSpecWithBases()
, больше не будут автоматически обращаться к объекту своего класса при обходе ссылок в сборщике мусора. Пользователь должен вручную обращаться к классу объекта. Исправление Пабло Галиндо.bpo-39573:
Py_TYPE()
заменена на встроенную статическую функцию. Исправление от Donghee Na.bpo-40696: Исправление зависания, которое может возникнуть после
generator.throw()
из-за цикла в цепочке контекста исключений.bpo-40521: Каждый интерпретатор теперь имеет свои собственные свободные списки, синглтоны и кэши:
Свободные списки: float, tuple, list, dict, frame, context, асинхронный генератор, MemoryError.
Синглеты: пустой кортеж, пустая байтовая строка, пустая строка Unicode, одиночный байтовый символ, одиночный символ Unicode (latin1).
Кэш-память с кусочками.
Они больше не являются общими для всех переводчиков.
bpo-40679: Разрешить параметры с именами
TypeError
и qualified name с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29590: Разрешить параметры с именами
generator.throw()
иyield from
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-4022: Улучшение производительности генераторов за счет отказа от внутренней функции StopIteration.
bpo-1635741: Порт
mmap
для многофазной инициализации.bpo-1635741: Порт
_lzma
для многофазной инициализации.bpo-37999: Разрешить параметры с именами
Decimal
иFraction
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29882: Добавьте
int.bit_count()
, подсчитывая количество единиц в двоичном представлении целого числа. Исправление Никласа Фиекаса.bpo-36982: Использовать функции расширенного цвета ncurses, если они доступны для поддержки терминалов с 256 цветами, и добавить новую функцию
curses.has_extended_color_support()
, чтобы указать, обеспечивается ли поддержка расширенного цвета базовой библиотекой ncurses.bpo-19569: Разрешить параметры с именами
_Py_COMP_DIAG_PUSH
и_Py_COMP_DIAG_IGNORE_DEPR_DECLS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26680: Тип int теперь поддерживает метод x.is_integer() для совместимости с float.
Библиотека¶
bpo-41900: C14N 2.0 Сериализация в xml.etree.ElementTree не удалась для атрибутов без префиксов, когда было определено пространство имен по умолчанию.
bpo-41887: Разрешить параметры с именами
ast.literal_eval()
иeval()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41773: Разрешить параметры с именами
random.choices()
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41840: Исправление ошибки в модуле
symtable
, из-за которой глобальные переменные в масштабе модуля не сообщались как локальные и глобальные. Исправление Пабло Галиндо.bpo-41842: Добавьте функцию
codecs.unregister()
для снятия с регистрации функции поиска кодеков.bpo-40564: В
zipfile.Path
мутируйте переданный тип объекта ZipFile вместо того, чтобы создавать копию. Предотвращает проблемы, когда и локальная копия, и копия вызывающей стороны пытаются закрыть один и тот же файловый хэндл.bpo-40670: Более надежная проверка утверждений в
timeit.Timer
. Теперь она принимает «пустые» утверждения (только пробелы и комментарии) и отвергает утверждения с неправильным отступом.bpo-41833: Конструктор
threading.Thread
теперь использует имя цели, если указан аргумент target, но опущен аргумент name.bpo-41817: исправить
tkinter.EventType
Enum, чтобы все члены были строками, и ни один не был кортежемbpo-41810: Разрешить параметры с именами
types.EllipsisType
иtypes.NotImplementedType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41815: Исправление ошибки SQLite3 segfault при резервном копировании закрытой базы данных. Патч предоставлен Питером Дэвидом Маккормиком.
bpo-41816: Добавлена функция StrEnum: она гарантирует, что все члены уже являются строками или кандидатами в строки
bpo-41517: исправлена ошибка, позволяющая расширять Enums с помощью множественного наследования
bpo-39587: используйте правильный тип данных mix-in при построении Enums
bpo-41792: Добавьте функцию is_typeddict в typing.py, чтобы проверить, является ли тип классом TypedDict
Раньше не было возможности проверить это без использования приватного API. Смотрите relevant issue in python/typing.
bpo-41789: Разрешить параметры с именами
object
иEnum
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32218: Разрешить параметры с именами
enum.Flag
иenum.IntFlag
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39651: Разрешить параметры с именами
call_soon_threadsafe()
иasyncio.ProactorEventLoop
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
mashal
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
_string
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41732: Разрешить параметры с именами iterator и
memoryview
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41720: Исправлено
turtle.Vec2D.__rmul__()
для аргументов, которые не являются int или float.bpo-41696: Разрешить параметры с именами
asyncio.run()
иPYTHONASYNCIODEBUG
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41687: Исправьте реализацию sendfile для совместимости с Solaris.
bpo-41662: Разрешить параметры с именами
__len__()
иsqlite3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39010: Разрешить параметры с именами
ProactorEventLoop
иConnectionResetErrors
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41638: Разрешить параметры с именами
ProgrammingError
иsqlite3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41662: Исправлено падение при мутации списка параметров во время итерации в
sqlite3
.bpo-41513: Улучшена точность math.hypot(). Каждый шаг вычисляется с дополнительной точностью, так что результат теперь почти всегда правильно округляется.
bpo-41609: Команда pdb whatis корректно сообщает о методах экземпляра как о „Method“, а не как о „Function“.
bpo-39994: Исправлена работа pprint с подклассами dict, переопределяющими __repr__.
bpo-32751: При отмене задания по таймауту
asyncio.wait_for()
теперь будет ждать завершения отмены и в том случае, если timeout <= 0, как это происходит при положительных таймаутах.bpo-37658:
asyncio.wait_for()
теперь правильно обрабатывает гонки между отменой себя и завершением обернутого ожидаемого.bpo-40782: Измените метод asyncio.AbstractEventLoop.run_in_executor, чтобы он не был корутином.
bpo-41520: Исправление регрессии
codeop
, которая не позволяла превратить предупреждения о компиляции в ошибки.bpo-41528: черепаха использует функции математического модуля для преобразования градусов в радианы и наоборот, а также для вычисления нормы вектора
bpo-41513: Небольшое алгоритмическое улучшение math.hypot() и math.dist(), дающее небольшой прирост в скорости и точности.
bpo-41503: Исправлена гонка между setTarget и flush в logging.handlers.MemoryHandler.
bpo-41497: Исправление потенциальной ошибки UnicodeDecodeError в модуле dis.
bpo-41467: Разрешить параметры с именами
recv_into()
иBrokenPipeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41425: Сделайте пример tkinter doc запускаемым.
bpo-41421: Внесено алгебраическое упрощение в random.paretovariate(). Теперь она чуть меньше подвержена ошибкам округления и работает чуть быстрее. Вводы, которые раньше вызывали ошибку деления на ноль, теперь вызывают ошибку переполнения.
bpo-41440: Добавьте
os.cpu_count()
поддержку VxWorks RTOS.bpo-41316: Исправьте модуль
tarfile
, чтобы в заголовок сжатия GZIP записывалось только основное имя TAR-файла.bpo-41384: Вызывать TclError вместо TypeError, когда в tkinter.OptionMenu передается неизвестная опция.
bpo-41317: Используйте add_done_callback() в asyncio.loop.sock_accept() для ранней отписки читателя при отмене.
bpo-35328: Разрешить параметры с именами
VIRTUAL_ENV_PROMPT
иvenv
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41341: Разрешить параметры с именами
typing.ForwardRef
иget_type_hints
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41344: Разрешить параметры с именами
shared_memory.SharedMemory
иsize=0
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41333:
collections.OrderedDict.pop()
теперь в 2 раза быстрее.bpo-41288: Развертка недействительного опкода NEWOBJ_EX в реализации C теперь вызывает UnpicklingError вместо аварийного завершения.
bpo-39017: Избегайте бесконечного цикла при чтении специально созданных файлов TAR с помощью модуля tarfile (CVE-2019-20907).
bpo-41273: Разрешить параметры с именами
_ProactorReadPipeTransport
иrecv_into
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41235: Исправьте обработку ошибок в
ssl.SSLContext.load_dh_params()
.bpo-41207: В distutils.spawn восстановите ожидание того, что DistutilsExecError будет подниматься, если команда не найдена.
bpo-29727: Разрешить параметры с именами
array.array
иMutableSequence
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39168: Разрешить параметры с именами
__new__
иtyping.Generic
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41194: Исправьте ошибку в модуле
_ast
: он больше не может быть загружен более одного раза. Теперь он использует глобальное состояние, а не состояние модуля.bpo-41195: Добавьте атрибут ssl.SSLContext.security_level, доступный только для чтения, для получения уровня безопасности контекста.
bpo-41193: Разрешить параметры с именами
write_history()
иOSError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41182: селектор: использовать DefaultSelector в зависимости от реализации
bpo-41161: Для модуля decimal теперь требуется libmpdec-2.5.0. Пользователям –with-system-libmpdec следует обновить системную библиотеку.
bpo-40874: Для модуля decimal теперь требуется libmpdec-2.5.0.
bpo-41138: Исправлен CLI модуля
trace
для исходных файлов Python с кодировкой, отличной отUTF-8.bpo-31082: Используйте термин «iterable» в docstring для
functools.reduce()
.bpo-40521: Удалите фрилист из collections.deque().
bpo-31938: Исправьте сигнатуры значений по умолчанию для нескольких функций в модуле
select
- автор Энтони Соттил.bpo-41068: Исправлено чтение файлов с именами, отличными от ASCII, из ZIP-архива непосредственно после их записи.
bpo-41058:
pdb.find_function()
теперь правильно определяет кодировку исходного файла.bpo-41056: Недействительные значения дескрипторов файлов теперь не передаются в os.fpathconf (обнаружено Coverity).
bpo-41056: Исправление разыменования указателя NULL в модуле ssl при ошибке MemoryError в обратном вызове keylog. (обнаружено Coverity)
bpo-41056: Исправлена ситуация, когда ошибка MemoryError в модуле zoneinfo могла не сообщаться или не сообщаться в ее источнике. (найдено Coverity)
bpo-41048: Функция
mimetypes.read_mime_types()
читает файл правил, используя кодировку UTF-8, а не кодировку локали. Исправление от Srinivas Reddy Thatiparthy.bpo-41043: Исправлено использование
glob()
в stdlib: литеральная часть пути теперь всегда корректно экранируется.bpo-41025: Исправлена проблема, не позволяющая подклассифицировать реализацию
zoneinfo.ZoneInfo
на языке C.bpo-35018: Добавьте класс
xml.sax.handler.LexicalHandler
, который присутствует в других реализациях SAX XML.bpo-41002: Улучшает производительность HTTPResponse.read с заданным количеством. Исправление от Брюса Мерри.
bpo-40448: Разрешить параметры с именами
ensurepip
иpip
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40967: Разрешить параметры с именами
asyncio.Task.current_task()
иasyncio.Task.all_tasks()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40924: Убедитесь, что
importlib.resources.path
возвращает существующий путь для читателя ресурсов SourceFileLoader. Позволяет избежать регрессии, выявленной в master, пока разрабатывается долгосрочное решение.bpo-40955: Исправлена незначительная утечка памяти в модуле
subprocess
при указании extra_groups.bpo-40855: Функции стандартного отклонения и дисперсии в модуле статистики игнорировали свои аргументы mu и xbar.
bpo-40939: Используйте новый парсер PEG при генерации модуля stdlib
keyword
.bpo-23427: Добавьте атрибут
sys.orig_argv
: список исходных аргументов командной строки, передаваемых исполняемому файлу Python.bpo-33689: Игнорировать пустые строки или строки, содержащие только пробельные символы, в файлах .pth. Это соответствует задокументированному поведению. Раньше пустые строки приводили к тому, что каталог site-packages появлялся в sys.path несколько раз. Автор Ido Michael, соавторы Malcolm Smith и Tal Einat.
bpo-40884: Разрешить параметры с именами
defaults
иlogging.Formatter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39791: Обновление importlib.metadata из importlib_metadata 1.6.1.
bpo-40807: Остановите codeop._maybe_compile, используемый code.InteractiveInterpreter (и IDLE). от выдачи каждого предупреждения по три раза.
bpo-32604: Исправление утечки ссылок в модуле
select
, когда модуль импортируется в подынтерпретаторе.bpo-39791: Разрешить параметры с именами
TraversableResources
иResourceReader
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39314:
rlcompleter.Completer
и стандартная оболочка Python теперь закрывают круглые скобки для функций, не принимающих аргументов. Исправление внесено Реми Лапейром.bpo-17005: Разрешить параметры с именами
functools
иgraphlib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40834: Исправьте усечение при отправке объекта str с_xxsubinterpreters.channel_send.
bpo-40755: Добавьте богатые сравнения в collections.Counter().
bpo-26407: Разрешить параметры с именами
__iter__
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39384: Исправлен email.contentmanager, позволяющий функции set_content() устанавливать нулевую строку.
bpo-40744: Модуль
sqlite3
использует функции SQLite API, которые требуют SQLite версии 3.7.3 или выше. Этот патч устраняет поддержку старых версий SQLite и явно требует SQLite 3.7.3 как при сборке, компиляции, так и во время выполнения. Авторы патча - Сергей Федосеев и Эрленд Э. Аасланд.bpo-40777: Инициализируйте PyDateTime_IsoCalendarDateType.tp_base во время выполнения, чтобы избежать ошибок в некоторых компиляторах.
bpo-38488: Обновите ensurepip для установки pip 20.1.1 и setuptools 47.1.0.
bpo-40792: Разрешить параметры с именами
operator.index()
иint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40767:
webbrowser
теперь правильно находит браузер по умолчанию в чистых системах Wayland, проверяя переменную окружения WAYLAND_DISPLAY. Заплатка предоставлена Жереми Аттали.bpo-40791: Разрешить параметры с именами
hashlib.compare_digest()
иCRYPTO_memcmp()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40795: Разрешить параметры с именами
ctypes
иPyErr_Print()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-16995: Разрешить параметры с именами
base64.b32hexencode()
иbase64.b32hexdecode()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30008: Разрешить параметры с именами
ssl
иno-deprecated
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30064: Исправление проблемы состояния гонки в asyncio
loop.sock_*
.bpo-40759: Утратить модуль
symbol
.bpo-40756: Второй аргумент (extra)
LoggerAdapter.__init__
теперь по умолчанию принимает значение None.bpo-37129: Разрешить параметры с именами
os.RWF_APPEND
иos.pwritev()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40737: Исправьте возможную утечку ссылок при инициализации
sqlite3
.bpo-40726: Разрешить параметры с именами
end_lineno
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40698:
distutils
при загрузке создаются дайджесты SHA2-256 и Blake2b-256. Дайджесты MD5 пропускаются, если платформа блокирует MD5.bpo-40695:
hashlib
больше не возвращается к встроенным реализациям хэшей, когда OpenSSL предоставляет хэш-дайджест, а алгоритм блокируется политикой безопасности.bpo-9216: Разрешить параметры с именами
hashlib.new()
иusedforsecurity
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40614: Разрешить параметры с именами
ast.parse()
иfeature_version
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40626: Добавляет расширение файла h5 в качестве MIME-типа application/x-hdf5, в соответствии с рекомендациями HDF Group для файлов данных в формате HDF5. Исправление внесено Марком Швабом.
bpo-25920: Разрешить параметры с именами
socket.getaddrinfo()
иgetaddrinfo()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40671: Разрешить параметры с именами
_hashlib
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32309: Разрешить параметры с именами coroutine и
asyncio.to_thread()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36543: Восстановлен устаревший модуль
xml.etree.cElementTree
.bpo-40611: Разрешить параметры с именами
MAP_POPULATE
иmmap
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39881: PEP 554 для использования в тестовом наборе (исправление Joannah Nanjekye).
bpo-13097: Разрешить параметры с именами
ctypes
иArgumentError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39385: Новое тестовое утверждение context-manager,
unittest.assertNoLogs()
будет гарантировать, что данный блок кода не выдает сообщений журнала, используя модуль протоколирования. Вклад внес Кит Ян Чой.bpo-23082: Обновлены сообщение об ошибке и документация PurePath.relative_to(), чтобы лучше отразить поведение функции.
bpo-40318: Используйте API SQLite3 trace v2, если он доступен.
bpo-40105: ZipFile усекает файлы, чтобы избежать повреждений, когда в режиме добавления («a») предоставляется более короткий комментарий. Исправление Яна Мазура.
bpo-40084: Исправление
Enum.__dir__
: dir(Enum.member) теперь включает атрибуты, а также методы.bpo-31122: ssl.wrap_socket() теперь вызывает ошибку ssl.SSLEOFError, а не OSError, когда пир закрывает соединение во время переговоров по TLS
bpo-39728: Разрешить параметры с именами
_missing_
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39244: Исправлено
multiprocessing.context.get_all_start_methods
для корректного возврата метода по умолчанию первым на macOS.bpo-39040: Исправление разбора некорректных параметров mime-заголовков путем свертывания пробелов между закодированными словами в пустой строке-цитате.
bpo-38731: Разрешить параметры с именами
--quiet
иpy_compile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35714: Разрешить параметры с именами
struct.error
иstruct
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38144: Добавлены параметры root_dir и dir_fd в
glob.glob()
.bpo-26543: Разрешить параметры с именами
IMAP4.noop()
иimaplib.Debug = 3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-12178:
csv.writer()
теперь корректно экранирует escapechar, когда ввод содержит escapechar. Авторы исправления: Каталин Якоб, Беркер Пексаг и Итай Элбирт.bpo-36290: Узлы AST теперь поднимают
TypeError
при конфликте аргументов ключевых слов. Исправление внесено Реми Лапейром.bpo-33944: Добавлена трассировка site.py site-packages в режиме verbose.
bpo-35078: Переработайте методы formatweekday, formatmonthname в классах LocaleHTMLCalendar и LocaleTextCalendar в модуле календаря, чтобы они вызывали методы базового класса. Это позволит настраивать CSS-классы для LocaleHTMLCalendar. Исправление от Srinivas Reddy Thatiparthy
bpo-29620: Разрешить параметры с именами
assertWarns()
иRuntimeException
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31844: Разрешить параметры с именами
ParserBase.error()
и_markupbase
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34226: Исправьте
cgi.parse_multipart
без content_length. Исправлено Роджером Дюраномbpo-33660: Исправьте pathlib.PosixPath для правильного разрешения относительного пути, расположенного в корневом каталоге.
bpo-28557: Улучшите сообщение об ошибке для неправильного
rawio.readinto
bpo-26680: Метод d.is_integer() добавлен к типу Decimal для совместимости с другими типами чисел.
bpo-26680: Метод x.is_integer() включен в абстрактные типы числовой башни, Real, Rational и Integral, с соответствующими реализациями по умолчанию.
Документация¶
bpo-41428: Разрешить параметры с именами PEP 604 и
X | Y
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41774: В раздел FAQ по программированию «Последовательности (кортежи/списки)» добавьте «Как удалить несколько элементов из списка».
bpo-35293: Исправление RemovedInSphinx40Warning при сборке документации. Исправление от Donghee Na.
bpo-37149: Измените ссылку на документ Shipman tkinter с archive.org на TkDocs. (Документ был удалён с сервера NMT.) Новая ссылка отвечает гораздо быстрее и содержит краткое пояснение.
bpo-41726: Обновите информацию о рефкаунтах в
PyType_FromModuleAndSpec
.bpo-41624: Исправьте подпись
typing.Coroutine
.bpo-40204: Разрешить параметры с именами
c_allow_pre_v3
иc_warn_on_allowed_pre_v3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41045: Добавьте документацию для отладочной функции f-строк.
bpo-41314: Разрешить параметры с именами
from __future__ import annotations
и4.0
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40979: Переработан typing.rst, в котором более 70 классов, функций и декораторов распределены по новым подразделам.
bpo-40552: Исправление в разделе 4.2 учебника. Сниппет кода теперь корректен.
bpo-39883: Заставить код, примеры и рецепты в документации по Python лицензироваться по более свободной лицензии BSD0 в дополнение к существующей лицензии Python 2.0.
bpo-37703: Обновлена документация, в которой подробно описано поведение функции gather.cancel()
Тесты¶
bpo-41939: Разрешить параметры с именами
urllib.request.urlcleanup()
иurllib.request._opener
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41731: Заставьте test_cmd_line_script пройти с опцией „-vv“.
bpo-41602: Добавьте тесты для обработки SIGINT в модуль runpy.
bpo-41521: Разрешить параметры с именами
test.support
иblacklist
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41477: Сделайте ctypes необязательным в test_genericalias.
bpo-41085: Разрешить параметры с именами
array.array.index()
и2**31
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41069: Разрешить параметры с именами
test.support.TESTFN
иtest.regrtest
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38377: Разрешить параметры с именами
/dev/shm/
иskip_if_broken_multiprocessing_synchronize()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41009: Исправьте использование декораторов
support.require_{linux|mac|freebsd}_version()
в качестве декоратора класса.bpo-41003: Разрешить параметры с именами
test_copyreg
иnumpy
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40964: Отключите удаленные
imaplib
тесты, хост cyrus.andrew.cmu.edu блокирует входящие соединения.bpo-40927: Исправьте test_binhex при двойном запуске: теперь он использует import_fresh_module(), чтобы гарантировать, что каждый раз будет подниматься DeprecationWarning.
bpo-17258: Пропускает некоторые тесты
multiprocessing
, если хэш-дайджест MD5 заблокирован.bpo-31904: Увеличьте LOOPBACK_TIMEOUT до 10 для VxWorks RTOS.
bpo-38169: Увеличение покрытия кода для SharedMemory и ShareableList
bpo-34401: Заставить test_gdb корректно работать на HP-UX. Исправление от Михаила Осипова.
Построить¶
bpo-38249: Обновите
Py_UNREACHABLE
, чтобы использовать __builtin_unreachable(), если только компилятор может ее использовать. Исправление от Donghee Na.bpo-41617: Разрешить параметры с именами
pycore_bitutils.h
и__builtin_bswap16()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40204: Установите версию Sphinx на 2.3.1 в
Doc/Makefile
.bpo-36020: Разрешить параметры с именами
snprintf()
иvsnprintf()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40684: Разрешить параметры с именами
make install
иPLATLIBDIR
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40683: Разрешить параметры с именами
zoneinfo
иmake
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Windows¶
bpo-41744: Исправлен автоматический импорт файла props при использовании пакета Nuget.
bpo-41627: Каталог сайта пользователя для 32-битной версии теперь содержит суффикс
-32
, чтобы отличать его от каталога 64-битного интерпретатора.bpo-41526: Исправлен макет последней страницы программы установки путем удаления специальной благодарности Марку Хэммонду (с его разрешения).
bpo-41492: Исправлено описание, появляющееся в подсказках UAC.
bpo-40948: Улучшите сообщение после установки, чтобы направлять людей к команде «py».
bpo-41412: Теперь программа установки не будет работать в Windows 7 и Windows 8. Кроме того, зависимость UCRT теперь всегда загружается по требованию.
bpo-40741: Обновление версии Windows для включения SQLite 3.32.3.
bpo-41142:
msilib
теперь поддерживает создание CAB-файлов с путями к файлам, отличными от ASCII, и добавление в них файлов с путями к файлам, отличными от ASCII.bpo-41074: Разрешить параметры с именами
msilib.OpenDatabase()
иmsilib.init_database()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41039: Стабильный ABI перенаправления DLL (python3.dll) теперь использует
#pragma comment(linker)
для реэкспорта.bpo-40164: Обновление Windows OpenSSL до версии 1.1.1g
bpo-39631: Разрешить параметры с именами
.py
иtext/x-python
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40677: Определите вручную IO_REPARSE_TAG_APPEXECLINK на случай, если в каком-то старом SDK для Windows его нет.
bpo-37556: Расширение справки py.exe для упоминания переопределений через venv, shebang, переменные окружения и ini-файлы.
macOS¶
bpo-41557: Обновите программу установки macOS для использования SQLite 3.33.0.
bpo-39580: Избегайте открытия окна Finder при запуске программы установки из командной строки. Патч предоставлен Риком Хейлом.
bpo-41100: Исправление ошибки configure при сборке на macOS 11. Обратите внимание, что текущий релиз Python был выпущен вскоре после первой предварительной версии macOS 11 (Big Sur) для разработчиков; известны и другие проблемы со сборкой и запуском на предварительной версии для разработчиков. Ожидается, что Big Sur будет полностью поддерживаться в будущих релизах Python 3.8.x и 3.9.0 с исправлениями.
bpo-40741: Обновите программу установки macOS для использования SQLite 3.32.3.
bpo-41005: исправлена проблема с настройками XDG, не позволявшая macos открывать браузер в webbrowser.py
bpo-40741: Обновите программу установки macOS для использования SQLite 3.32.2.
IDLE¶
bpo-41775: Используйте „IDLE Shell“ в качестве заголовка оболочки
bpo-35764: Перепишите раздел Calltips doc.
bpo-40181: В подсказках перестаньте напоминать, что „/“ обозначает конец аргументов только с позицией.
bpo-41468: Улучшение сообщения об ошибке при запуске IDLE (которое пользователи никогда не должны видеть).
bpo-41373: Сохраняйте файлы, загруженные без окончания строки, как пустые, или с разными окончаниями строк, устанавливая для них окончание строки по умолчанию. Исправление регрессии в 3.8.4 и 3.9.0b4.
bpo-41300: Сохранение файлов с неаскриптивными символами. Исправление регрессии, выпущенной в 3.9.0b4 и 3.8.4.
bpo-37765: Добавьте ключевые слова в список завершения имени модуля. Перепишите раздел Completions в документации IDLE.
bpo-41152: Разрешить параметры с именами
stdin
иstdout
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41144: Заставить открытый модуль открывать специальный модуль, например os.path.
bpo-39885: Сделайте контекстное меню «Вырезать» и «Копировать» снова работающим при щелчке правой кнопкой мыши внутри выделения.
bpo-40723: Заставьте test_idle проходить при запуске после импорта.
C API¶
bpo-41936: Разрешить параметры с именами
Py_ALLOW_RECURSION
иPy_END_ALLOW_RECURSION
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41692: Разрешить параметры с именами
PyUnicode_InternImmortal()
иPyUnicode_InternInPlace()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41842: Добавьте функцию
PyCodec_Unregister()
для снятия с регистрации функции поиска кодеков.bpo-41834: Разрешить параметры с именами
_Py_CheckRecursionLimit
иceval.recursion_limit
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41689: Разрешить параметры с именами
PyType_FromSpec()
иtp_doc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41524: Исправлена ошибка в PyOS_mystrnicmp и PyOS_mystricmp, которая увеличивала указатели за пределами конца строки.
bpo-41324: Добавьте минимальный API для работы с десятичными капчами. API поддерживает быстрые преобразования между десятичными числами до 38 цифр и их тройное представление в виде C-структуры.
bpo-30155: Разрешить параметры с именами
PyDateTime_DATE_GET_TZINFO()
иPyDateTime_TIME_GET_TZINFO()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
PyType_HasFeature()
иPyTypeObject.tp_flags
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41123: Удалить
PyUnicode_AsUnicodeCopy
.bpo-41123: Удалено
PyLong_FromUnicode()
.bpo-41123: Удалено
PyUnicode_GetMax()
.bpo-41123: Разрешить параметры с именами
Py_UNICODE_str*
иPy_UNICODE*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-41103: Разрешить параметры с именами
PyObject_AsCharBuffer()
иPyObject_AsReadBuffer()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36346: Разрешить параметры с именами
PyUnicode_FromUnicode(NULL, size)
иPyUnicode_FromStringAndSize(NULL, size)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36346: Разрешить параметры с именами
Py_UNICODE_COPY
иPy_UNICODE_FILL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40989: Разрешить параметры с именами
PyObject_INIT()
иPyObject_INIT_VAR()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36020: Разрешить параметры с именами
#include "pyerrors.h"
иsnprintf
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40943: Разрешить параметры с именами
PY_SSIZE_T_CLEAN
иPyArg_ParseTuple()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40910: Разрешить параметры с именами
Py_GetArgcArgv()
и-fvisibility=hidden
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40724: Разрешить определять слоты буфера в спецификациях типов.
bpo-40679: Исправление сбоя
_PyEval_EvalCode()
, если аргумент qualname имеет значение NULL.bpo-40839: Разрешить параметры с именами
PyDict_GetItem()
и GIL с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40826:
PyOS_InterruptOccurred()
теперь завершается с фатальной ошибкой, если он вызывается с освобожденным GIL.bpo-40792: Разрешить параметры с именами
PyNumber_Index()
иint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39573: Разрешить параметры с именами
Py_REFCNT()
иPy_SIZE()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40703: Функции PyType_FromSpec*() больше не перезаписывают атрибут «__module__» типа, если он задан через «Py_tp_members» или «Py_tp_getset».
bpo-39583: Удалите лишние объявления «extern C» из
Include/cpython/*.h
.
Python 3.9.0 beta 1¶
Дата выхода: 2020-05-19
Безопасность¶
Ядро и встроенные модули¶
bpo-40663: Корректно генерировать аннотации, в которых скобки опущены, но требуются (например:
Type[(str, int, *other))]
.bpo-40596: Исправлено
str.isidentifier()
для неканонизированных строк, содержащих не-BMP символы в Windows.bpo-40593: Улучшены синтаксические ошибки для недопустимых символов в исходном коде.
bpo-40585: Исправлена ошибка при использовании
codeop.compile_command()
, которая приводила к проглатыванию исключений новым парсером. Исправление от Пабло Галиндоbpo-40566: Разрешить параметры с именами PEP 573 и
abc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40502: Инициализируйте
n->n_col_offset
(патч Джоанны Нанджекье).bpo-40527: Исправление разбора аргументов командной строки: больше не записывает ошибки несколько раз в stderr.
bpo-1635741: Разрешить параметры с именами
errno
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40523: Разрешить параметры с именами
hash()
иreversed()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
syslog
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40246: Разрешить параметры с именами bpo-40246 и
bg="#d00" if clear else"#fca"
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40417: Исправьте предупреждение об устаревании модуля imp при вызове PyImport_ReloadModule. Исправление от Роберта Рухани.
bpo-40408: Исправлена поддержка вложенных переменных типа в GenericAlias (например,
list[list[T]]
).bpo-1635741: Модуль порта _stat для многофазной инициализации (PEP 489).
bpo-29587: Включите неявную цепочку исключений при вызове
generator.throw()
.bpo-40328: Добавлены инструменты для генерации заголовков отображения для CJKCodecs.
bpo-40228: Установка frame.f_lineno теперь устойчива к изменениям в компиляторе исходного кода в байткод
bpo-38880: Добавлена возможность перечисления интерпретаторов, связанных с концами каналов, во внутреннем модуле субинтерпретаторов.
bpo-37986: Разрешить параметры с именами
PyLong_FromDouble()
и long с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-40662: Исправлено
ast.get_source_segment()
для узлов ast, имеющих неполную информацию о местоположении. Исправление от Ирит Катриэль.bpo-40665: Преобразовать
bisect
для использования Аргумент Клиника.bpo-40536: Разрешить параметры с именами
available_timezones()
иzoneinfo
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40645: Разрешить параметры с именами
hmac.HMAC
иdigest_cons
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40645: Внутренний модуль
_hashlib
оборачивает и раскрывает HMAC API OpenSSL. Новый код будет использоваться в Python 3.10 после того, как детали внутренней реализации чисто питоновского модуля HMAC перестанут быть частью публичного API.bpo-40637: Разрешить параметры с именами
configure --with-builtin-hashlib-hashes=sha3,blake1
и--without-builtin-hashlib-hashes
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37630: Модуль
hashlib
теперь может использовать хэши SHA3 и SHAKE XOF из OpenSSL, когда они доступны.bpo-40479:
hashlib
теперь компилируется с OpenSSL 3.0.0-alpha2.bpo-40257: Вернуть изменения в
inspect.getdoc()
.bpo-40607: При отмене задачи по таймауту
asyncio.wait_for()
теперь будет распространять исключение, если во время отмены произошла ошибка. Исправление Романа Скурихина.bpo-40612: Исправление крайних случаев в форматировании SyntaxError. Если смещение <= 0, каретка не выводится. Если смещение > длины строки, то символ каре печатается сразу после последнего символа.
bpo-40597: Если длина строк текстового содержимого превышает policy.max_line_length, всегда используйте кодировку содержимого, чтобы убедиться, что они обернуты.
bpo-40571: Добавлена functools.cache() как более простой и доступный способ доступа к неограниченному варианту кэша lru_cache(maxsize=None).
bpo-40503: Разрешить параметры с именами PEP 615 и
zoneinfo
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40397: Разрешить параметры с именами
__args__
и__parameters__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40549: Переведите posixmodule.c (модуль «posix» или «nt») на многофазную инициализацию (PEP 489).
bpo-31033: Разрешить параметры с именами
msg
иFuture.cancel()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40541: Добавлен необязательный параметр counts в random.sample().
bpo-40515: Разрешить параметры с именами
ssl
иhashlib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31033: При отмене
asyncio.Task
трассировка исключений теперь ведет до того места, где задача была впервые прервана.bpo-40504: Объекты
functools.lru_cache()
теперь могут быть объектами weakrefs.bpo-40559: Исправление возможной утечки памяти в реализации
asyncio.Task
на языке C.bpo-40480: Разрешить параметры с именами
fnmatch.fnmatch()
и*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40495: Разрешить параметры с именами
compileall
и.pyc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40457: Модуль ssl теперь поддерживает сборки OpenSSL без методов TLS 1.0 и 1.1.
bpo-40355: Разрешить параметры с именами
ast.literal_eval()
иast.Dict
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40465: Утратил силу необязательный аргумент random для random.shuffle().
bpo-40459:
platform.win32_ver()
теперь выдает корректные строки ptype вместо пустых строк.bpo-39435: Первый аргумент
pickle.loads()
теперь только позиционный.bpo-39305: Разрешить параметры с именами
nntplib
иnntplib.NNTP
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32494: Разрешить параметры с именами
dbm.gnu
иlen()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40453: Разрешить параметры с именами
isolated=True
и_xxsubinterpreters.create()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40286: Разрешить параметры с именами
_random.Random.randbytes()
иrandbytes()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40394: Добавлены аргументы по умолчанию в
difflib.SequenceMatcher.find_longest_match()
.bpo-39995: Исправление состояния гонки в concurrent.futures._ThreadWakeup: доступ к _ThreadWakeup теперь защищен блокировкой выключения.
bpo-30966: Разрешить параметры с именами
Process.shutdown(wait=True)
иconcurrent.futures
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30966: Разрешить параметры с именами
close()
иSimpleQueue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39966: Разрешить параметры с именами bpo-25597 и
unittest.mock.MagicMock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39791: Добавлена функция
files()
в importlib.resources с поддержкой подкаталогов в данных пакета, соответствующая бэкпорту в importlib_resources 1.5.bpo-40375:
imaplib.IMAP4.unselect()
добавлено. Исправление от Donghee Na.bpo-40389: Разрешить параметры с именами
repr()
иtyping.Optional[T]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40291: Добавьте поддержку сокетов CAN_J1939 (доступно в Linux 5.4+)
bpo-40273:
types.MappingProxyType
теперь обратимы.bpo-39075: Repr для
types.SimpleNamespace
теперь упорядочен по вставке, а не по алфавиту.bpo-40192: Разрешить параметры с именами
thread_time()
иthread_cputime()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40025: Вызывает ошибку TypeError, когда _generate_next_value_ определено после членов. Исправление Итана Онстотта.
bpo-39058: В модуле argparse добавлены repr для Namespace() и других держателей аргументов, которые теперь отображаются в порядке следования атрибутов. Раньше они отображались в алфавитном порядке, хотя порядок аргументов сохраняется в видимых пользователю частях модуля.
bpo-24416: Разрешить параметры с именами
isocalendar()
иdatetime.date
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-34790: Добавьте в документацию
asyncio.wait()
версию удаления явной передачи corosbpo-40561: Предоставьте документацию для функций открытия веб-браузеров.
bpo-40499: Упомяните, что
asyncio.wait()
требует непустого набора awaitables.bpo-39705: Учебный пример для sorted() в разделе «Техника циклов» получил лучшее объяснение. Также включен новый пример, объясняющий базовое поведение sorted().
bpo-39435: Исправьте неправильную подпись для
pickle.loads()
в документации
Тесты¶
Построить¶
Windows¶
bpo-40650: Включите winsock2.h в pytime.c для timeval.
bpo-40458: Увеличение зарезервированного пространства стека для предотвращения аварийного переполнения в Windows.
bpo-39148: Добавьте поддержку IPv6 в конечные точки дейтаграмм
asyncio
в ProactorEventLoop. Измените поднимаемое исключение для неизвестных семейств адресов на ValueError, поскольку оно не исходит от Windows API.
macOS¶
Инструменты/демоверсии¶
bpo-40479: Обновите помощник multissltest для тестирования с последними версиями OpenSSL 1.0.2, 1.1.0, 1.1.1 и 3.0.0-alpha.
bpo-40431: Разрешить параметры с именами
turtledemo
иSyntaxError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40163: Исправьте инструмент multissltest. OpenSSL изменил URL загрузки для старых релизов. Инструмент multissltest теперь пытается загрузиться с текущего и старого URL.
C API¶
bpo-39465: Удалите функцию
_PyUnicode_ClearStaticStrings()
из C API.bpo-38787: Добавьте макрос PyCFunction_CheckExact() для точной проверки типа теперь, когда мы разрешаем подтипы PyCFunction, а также PyCMethod_CheckExact() и PyCMethod_Check() для нового подтипа PyCMethod.
bpo-40545: Разрешить параметры с именами
_PyErr_GetTopmostException()
иPyAPI_FUNC()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40412: Нуллификация inittab_copy во время финализации, что предотвращает аварийное завершение будущих инициализаций интерпретатора во встроенной ситуации. Исправление от Gregory Szorc.
bpo-40429: Функция
PyThreadState_GetFrame()
теперь возвращает сильную ссылку на кадр.bpo-40428: Удалите следующие функции из C API. Вызовите
PyGC_Collect()
явно, чтобы освободить все свободные списки.PyAsyncGen_ClearFreeLists()
PyContext_ClearFreeList()
PyDict_ClearFreeList()
PyFloat_ClearFreeList()
PyFrame_ClearFreeList()
PyList_ClearFreeList()
PySet_ClearFreeList()
PyTuple_ClearFreeList()
bpo-40421: Новая функция
PyFrame_GetBack()
: получение кадра, следующего за внешним.bpo-40421: Новая функция
PyFrame_GetCode()
: возвращает заимствованную ссылку на код кадра.bpo-40217: Разрешить параметры с именами
PyType_FromSpecWithBases()
иtp_traverse
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38787: Состояние модуля C теперь доступно из методов кучи типов, определяемых C (PEP 573). Исправление Марселя Плча и Петра Викторина.
Python 3.9.0 alpha 6¶
Дата выхода: 2020-04-27
Безопасность¶
bpo-40121: Исправлены события аудита, возникающие при создании нового сокета.
bpo-39073: Запрещает CR или LF в аргументах email.headerregistry.Address для защиты от атак инъекции заголовков.
bpo-39503: Разрешить параметры с именами CVE-2020-8492 и
AbstractBasicAuthHandler
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-40313: Повышение производительности функции bytes.hex().
bpo-40334: Разрешить параметры с именами
-X oldparser
иPYTHONOLDPARSER=1
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40267: Разрешить параметры с именами
SyntaxError
иunexpected EOF while parsing
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39522: Корректно разгадывать явный префикс
u
для строк при активированной отложенной оценке для аннотаций. Исправление от Батухана Таская.bpo-40246: Сообщать специализированное сообщение об ошибке,
invalid string prefix
, когда токенизатор встречает строку с недопустимым префиксом.bpo-40082: Исправьте обработчик сигналов: теперь он всегда использует основной интерпретатор, а не пытается получить текущее состояние потока Python.
bpo-37388: str.encode() и str.decode() больше не проверяют кодировку и ошибки в режиме разработки или в режиме отладки во время финализации Python. Механизм кодеков больше не может работать при очень поздних вызовах str.encode() и str.decode().
bpo-40077: Исправьте возможные рефлексии в
_json
, необходимо обходить мемо PyScannerObject.bpo-37207: Разрешить параметры с именами
dict()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40141: Добавляет информацию о столбцах и строках в узлы
ast.keyword
. Исправление от Pablo Galindo.bpo-1635741: Разрешить параметры с именами
resource
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Разрешить параметры с именами
math
и PEP 489 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Порт _uuid модуля для многофазной инициализации (PEP 489).
bpo-40077: Преобразование модуля json для использования
PyType_FromSpec()
.bpo-40067: Улучшено сообщение об ошибке для нескольких звездных выражений в присваивании. Исправление от Furkan Onder
bpo-1635741: Перенос модуля _functools для многофазной инициализации (PEP 489). Исправление Пауло Энрике Сильвы.
bpo-1635741: Модуль оператора порта для многофазной инициализации (PEP 489). Исправление Пауло Энрике Сильвы.
bpo-20526: Разрешить параметры с именами
PyThreadState_Clear()
иPyThreadState.frame
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Модуль времени порта для многофазной инициализации (PEP 489). Исправление Пауло Энрике Сильвы.
bpo-1635741: Перенос модуля расширения _weakref для многофазной инициализации (PEP 489).
bpo-40020: Исправление утечки и последующего падения в parsetok.c, вызванного неправильным использованием realloc на редком кодовом пути.
bpo-39939: Добавлены методы str.removeprefix и str.removesuffix и соответствующие методы bytes, bytearray и collections.UserString для удаления аффиксов из строки, если они присутствуют. Полное описание см. в PEP 616. Исправление Денниса Суини.
bpo-39481: Реализация PEP 585. Это поддерживает list[int], tuple[str, …] и т. д.
bpo-32894: Поддержка непарсинга бесконечных чисел в отложенных аннотациях. Исправление от Batuhan Taşkaya.
bpo-37207: Разрешить параметры с именами
list()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-40398:
typing.get_args()
теперь всегда возвращает пустой кортеж для специальных общих псевдонимов.bpo-40396: Разрешить параметры с именами
typing.get_origin()
иtyping.get_args()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38061: Разрешить параметры с именами
subprocess
иclosefrom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаВ FreeBSD для повышения производительности было принято загружать и монтировать модуль ядра fdescfs, но по умолчанию он не включен.
Первоначальный патч от Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans (kevans) и Kubilay Kocak (koobs): https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274.
bpo-38061: Разрешить параметры с именами
os.closerange(fd_low, fd_high)
иclosefrom(fd_low)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПервоначальный патч от Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans (kevans) и Kubilay Kocak (koobs): https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274.
bpo-40360: Разрешить параметры с именами
lib2to3
и PEP 617 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40138: Разрешить параметры с именами
os.waitpid()
иINT_MAX >> 8
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39942: Установите «__main__» в качестве имени модуля по умолчанию, если «__name__» отсутствует в
typing.TypeVar
. Исправление от Weipeng Hong.bpo-40275: Разрешить параметры с именами
logging
иunittest
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40275: Разрешить параметры с именами
asyncio
иunittest
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40330: В
ShareableList.__setitem__()
проверяйте размер нового элемента строки после кодирования его в utf-8, а не до.bpo-40148: Добавлена
pathlib.Path.with_stem()
для создания нового пути с заменой стебля.bpo-40325: Утрачена поддержка объектов множества в random.sample().
bpo-40257: Разрешить параметры с именами
typing
иUnion
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40257: Разрешить параметры с именами
inspect.getdoc()
иpydoc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40287: Фиксированный
SpooledTemporaryFile.seek()
для возврата позиции.bpo-40290: Добавлена функция zscore() в statistics.NormalDist().
bpo-40282: Разрешите
random.getrandbits(0)
преуспеть и вернуть 0.bpo-40286: Разрешить параметры с именами
random.randbytes()
иrandom.Random.randbytes()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40277:
collections.namedtuple()
теперь предоставляет человекочитаемый repr для своих аксессоров полей.bpo-40270: Входящая в комплект копия sqlite3 для Windows теперь компилируется с расширением json. Это позволяет использовать такие функции, как
json_object
.bpo-29255: Ожидание в
KqueueSelector.select
, если не зарегистрировано ни одного fdsbpo-40260: Разрешить параметры с именами
modulefinder
иio.open_code()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40234: Снова разрешите порождать потоки демонов в субинтерпретаторах (верните изменение, которое их запрещало).
bpo-39207: Рабочие в
ProcessPoolExecutor
теперь порождаются по требованию, только когда нет свободных незанятых рабочих для повторного использования. Это оптимизирует накладные расходы при запуске и уменьшает потери процессорного времени на простаивающих рабочих. Автор исправления - Кайл Стэнли.bpo-40091: Исправление зависания на вилке в модуле протоколирования: новый приватный метод _at_fork_reinit() теперь используется для повторной инициализации блокировок на вилке в дочернем процессе.
bpo-40149: Реализуйте обход и очистку слотов в типе _abc._abc_data.
bpo-40208: Убрать устаревшие
symtable.SymbolTable.has_exec()
.bpo-40196: Исправлена ошибка в модуле
symtable
, из-за которой глобальные переменные некорректно отображались как локальные. Автор исправления - Пабло Галиндо.bpo-40190: Разрешить параметры с именами
_SC_AIX_REALMEM
иposix.sysconf()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40182: Разрешить параметры с именами
_field_types
иtyping.NamedTuple
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36517: Множественное наследование с
typing.NamedTuple
теперь вызывает ошибку вместо того, чтобы молча игнорировать другие типы.bpo-40126: Разрешить параметры с именами
__exit__()
и__enter__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40094: CGIHTTPRequestHandler из http.server теперь записывает в журнал код завершения работы CGI-скрипта, а не статус завершения работы CGI-скрипта os.waitpid(). Например, если скрипт завершается по сигналу 11, то теперь в журнал записывается: «Код завершения CGI-скрипта -11».
bpo-40108: Улучшение сообщения об ошибке при попытке импортировать модуль с помощью
runpy
и неправильном использовании расширения «.py» в конце имени модуля. Исправление от Pablo Galindo.bpo-40094: Добавьте функцию
os.waitstatus_to_exitcode()
: преобразование статуса ожидания в код выхода.bpo-40089: Исправление threading._after_fork(): если fork не был вызван потоком, порожденным threading.Thread, threading._after_fork() теперь создает экземпляр _MainThread для _main_thread, а не экземпляр _DummyThread.
bpo-40089: Разрешить параметры с именами
_at_fork_reinit()
и_thread.Lock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25780: Разрешить параметры с именами
CAN_RAW_JOIN_FILTERS
иsocket
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39503: Разрешить параметры с именами
AbstractBasicAuthHandler
иurllib.request
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39812: Разрешить параметры с именами
concurrent.futures
иthreading._register_atexit()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40050: Разрешить параметры с именами
importlib._bootstrap_external
иwinreg
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40014: Разрешить параметры с именами
os.getgrouplist()
иgetgrouplist()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40017: Добавьте константу
time.CLOCK_TAI
, если операционная система поддерживает ее.bpo-40016: В re docstring уточните связь между флагами компиляции inline и argument.
bpo-39953: Обновление внутренней таблицы кодов ошибок OpenSSL в модуле
ssl
.bpo-36144: Разрешить параметры с именами PEP 584 и
weakref.WeakValueDictionary
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36144: Разрешить параметры с именами PEP 584 и
weakref.WeakKeyDictionary
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38891: Разрешить параметры с именами
__getitem__
и__setitem__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39682: Разрешить параметры с именами
pathlib.Path
иPath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36144: Разрешить параметры с именами PEP 584 и
|
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39011: Убрана нормализация окончаний строк в атрибутах ElementTree, так как окончания строк, которые были заменены номерами сущностей, должны быть сохранены в исходном виде.
bpo-38410: Разрешить параметры с именами
sys.audit()
иsys.set_asyncgen_hooks()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36541: lib2to3 теперь распознает именованные выражения присваивания (оператор «морж»,
:=
)bpo-35967: В платформе отложите вызов „uname -p“ до тех пор, пока не будет запрошен атрибут процессора.
bpo-35113:
inspect.getsource()
теперь возвращает корректный исходный код для внутреннего класса с тем же именем, что и класс уровня модуля. Декораторы также возвращаются как часть исходного кода класса. Исправление от Karthikeyan Singaravelan.bpo-33262: Разрешить параметры с именами
shlex.split()
иs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31758: Предотвращение сбоев при использовании неинициализированного объекта
_elementtree.XMLParser
. Исправление от Орена Милмана.
Документация¶
bpo-27635: В документации к pickle неверно утверждалось, что
__new__
не вызывается по умолчанию при распикировке.bpo-39879: Разрешить параметры с именами Модель данных и
dict()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38387: Макрос документа
PyDoc_STRVAR
в справочнике C-API.bpo-13743: Некоторые методы класса xml.dom.minidom.Element теперь лучше документированы.
Тесты¶
bpo-31904: Установите ожидаемую кодировку по умолчанию в test_c_locale_coercion.py для VxWorks RTOS.
bpo-40162: Обновление конфигурации Travis CI до OpenSSL 1.1.1f.
bpo-40146: Обновите OpenSSL до версии 1.1.1f в Azure Pipelines.
bpo-40094: Добавить функцию
test.support.wait_process()
.bpo-40003: Разрешить параметры с именами
test.bisect_cmd
и-O
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39380: Разрешить параметры с именами
ftplib.FTP
иftplib.FTP_TLS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39793: Используйте тот же домен при тестировании
make_msgid
. Исправление от Batuhan Taskaya.bpo-1812: Исправьте обработку новой строки в doctest.testfile при загрузке из пакета, загрузчик которого имеет метод get_data. Исправление внесено Питером Донисом.
Построить¶
bpo-38360: Поддержка одноаргументной формы флага macOS -isysroot.
bpo-40158: Исправьте свойства CPython MSBuild в пакете NuGet (build/native/python.props)
bpo-38527: Исправлена проверка конфигурации на Solaris для «плавающего порядка слов»: иногда не использовалась правильная команда «grep». Исправление от Арнона Яари.
Windows¶
macOS¶
bpo-38329: программы установки python.org macOS теперь обновляют симлинк Current версии в /Library/Frameworks/Python.framework/Versions для установок 3.9. Ранее Current обновлялся только для установок Python 2.x. Это должно упростить встраивание Python 3 в другие приложения macOS.
bpo-40164: Обновите сборки программы установки macOS для использования OpenSSL 1.1.1g.
IDLE¶
Инструменты/демоверсии¶
bpo-40385: Удален инструмент checkpyc.py. В качестве потенциальной альтернативы смотрите compileall без режима force.
bpo-40179: Исправлен перевод
#elif
в Argument Clinic.bpo-40094: Разрешить параметры с именами
which.py
иos.waitstatus_to_exitcode()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
C API¶
bpo-40241: Переместите структуру
PyGC_Head
во внутренний C API.bpo-40170: Преобразуйте макрос
PyObject_IS_GC()
в функцию, чтобы скрыть детали реализации.bpo-40241: Разрешить параметры с именами
PyObject_GC_IsTracked()
иPyObject_GC_IsFinalized()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
PyObject_NEW()
иPyObject_New()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
PyType_HasFeature()
иPyType_GetFlags()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
PyObject_GET_WEAKREFS_LISTPTR()
иPyTypeObject.tp_weaklistoffset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
PyObject_CheckBuffer()
иPyTypeObject.tp_as_buffer
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40170: Разрешить параметры с именами
PyIndex_Check()
иPyIndex_Check()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39947: Добавьте функцию
PyThreadState_GetID()
: получение уникального идентификатора состояния потока Python.
Python 3.9.0 alpha 5¶
Дата выхода: 2020-03-23
Безопасность¶
bpo-38576: Запрет управляющих символов в именах хостов в http.client, адресация CVE-2019-18348. Такие потенциально вредоносные URL с инъекцией заголовка теперь вызывают ошибку InvalidURL.
Ядро и встроенные модули¶
bpo-40010: Оптимизация отложенных вызовов в многопоточных приложениях. Если поток, отличный от основного, запланировал отложенный вызов (
Py_AddPendingCall()
), цикл оценки байткода больше не прерывается на каждой инструкции байткода, чтобы проверить наличие отложенных вызовов, которые не могут быть выполнены. Только главный поток может выполнять отложенные вызовы.Ранее цикл оценки байткода прерывался на каждой инструкции, пока основной поток не выполнит ожидающие вызовы.
bpo-1635741: Перенос модуля расширения _weakref для многофазной инициализации (PEP 489).
bpo-1635741: Перенесите модуль _collections на многофазную инициализацию (PEP 489).
bpo-40010: Оптимизация обработки сигналов в многопоточных приложениях. Если поток, отличный от основного, получает сигнал, цикл оценки байткода больше не прерывается на каждой инструкции байткода для проверки наличия ожидающих сигналов, которые не могут быть обработаны. Только основной поток главного интерпретатора может обрабатывать сигналы.
Ранее цикл оценки байткода прерывался на каждой инструкции, пока основной поток не обработает сигналы.
bpo-39984: Если
Py_AddPendingCall()
вызывается в подинтерпретаторе, то теперь функция планируется к вызову из подинтерпретатора, а не из основного интерпретатора. Теперь каждый подинтерпретатор имеет свой собственный список запланированных вызовов.bpo-1635741: Порт модуля _heapq для многофазной инициализации.
bpo-1635741: Перенос модуля itertools для многофазной инициализации (PEP 489).
bpo-37207: Разрешить параметры с именами
frozenset()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39984: Разрешить параметры с именами
_PyRuntimeState.ceval.tracing_possible
иPyInterpreterState.ceval.tracing_possible
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37207: Разрешить параметры с именами
set()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Порт модуля _statistics для многофазной инициализации (PEP 489).
bpo-39968: Используйте встроенную функцию для замены макросов get_module_state модулей расширения.
bpo-39965: Разрешить параметры с именами
SyntaxError
иPyCF_ALLOW_TOP_LEVEL_AWAIT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39562: Разрешает выполнение асинхронных постижений на верхнем уровне, когда указан флаг
PyCF_ALLOW_TOP_LEVEL_AWAIT
. Исправление от Батухана Таская.bpo-37207: Разрешить параметры с именами
tuple()
и PEP 590 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38373: Изменена стратегия габаритного размещения списка. Она больше не перераспределяет список, если новый размер ближе к размеру перераспределения, чем к старому размеру, и добавляет прокладку.
bpo-39926: Обновление базы данных Юникода до версии Юникода 13.0.0.
bpo-19466: Очищаем фреймы потоков-демона раньше во время выключения Python для вызова деструкторов объектов. Таким образом, предупреждения о ресурсах «незакрытого файла» теперь выдаются для потоков демонов более надежным способом.
bpo-38894: Исправлена ошибка, приводившая к неполным результатам при вызове
pathlib.Path.glob
в присутствии симлинков, указывающих на файлы, к которым у пользователя нет доступа на чтение. Исправление Пабло Галиндо и Мэтта Возниски.bpo-39877: Разрешить параметры с именами
PyEval_RestoreThread()
и_PyRuntime
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39871: Разрешить параметры с именами
SystemError
иmath.{atan2,copysign,remainder}()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39776: Исправьте состояние гонки, когда потоки, созданные PyGILState_Ensure(), могли получить дублированный идентификатор.
Это влияет на потребителей tstate->id, таких как механизм кэширования contextvar, который может возвращать недействительные кэшированные объекты при большой нагрузке на поток (наблюдается во встроенных сценариях).
bpo-39778: Исправлен сбой, связанный с некорректной обработкой слабых ссылок в классах
collections.OrderedDict
. Автор исправления - Пабло Галиндо.bpo-1635741: Модуль расширения порта audioop для многофазной инициализации (PEP 489).
bpo-39702: Разрешить параметры с именами decorator и PEP 614 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-38091: Подправьте код обнаружения тупиковых ситуаций при импорте, чтобы он сам не тупил.
bpo-1635741: Модуль расширения Port _locale для многофазной инициализации (PEP 489).
bpo-39087: Разрешить параметры с именами
PyUnicode_AsUTF8()
иPyUnicode_AsUTF8AndSize()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39520: Исправление непарсинга фрагментов ext без элементов (
foo[:,]
). Исправление от Batuhan Taskaya.bpo-39220: Не оптимизируйте аннотации, если используется „from __future__ import annotations“. Исправление от Pablo Galindo.
bpo-35712: Использование
NotImplemented
в булевом контексте было устаревшим. Исправление внесено Джошем Розенбергом.bpo-22490: Не допускайте утечки переменной окружения
__PYVENV_LAUNCHER__
в сессию интерпретатора на macOS.
Библиотека¶
bpo-39830: Разрешить параметры с именами
zipfile.Path
и__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-40000: Улучшены сообщения об ошибках при проверке узлов
ast.Constant
. Исправление от Батухана Таская.bpo-39999:
__module__
классов узлов AST теперь имеет значение «ast», а не «_ast». Добавлены документообороты для фиктивных классов узлов AST и устаревших атрибутов.bpo-39991:
uuid.getnode()
теперь пропускает IPv6-адреса с длиной строки, равной MAC-адресу (17 символов): используйте только MAC-адреса.bpo-39988: Разрешить параметры с именами
ast.AugLoad
иast.AugStore
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39656: Убедитесь, что
bin/python3.#
всегда присутствует в виртуальных средах на POSIX-платформах - автор Энтони Соттиле.bpo-39969: Утратил класс узла
ast.Param
, поскольку он больше не используется. Исправление от Batuhan Taskaya.bpo-39360: Разрешить параметры с именами
multiprocessing.Pool
иmultiprocessing.Pool.terminate
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35370: sys.settrace(), sys.setprofile() и _lsprof.Profiler.enable() теперь правильно сообщают об ошибке
PySys_Audit()
, если событие аудита «sys.setprofile» или «sys.settrace» запрещено.bpo-39936: AIX: Исправлен модуль _aix_support, когда подпроцесс недоступен, при сборке Python с нуля. Теперь он использует новый частный модуль _bootsubprocess, а не имеет две реализации в зависимости от того, доступен или нет подпроцесс. Таким образом, результат _aix_support.aix_platform() теперь одинаков, если подпроцесс доступен или нет.
bpo-36144: Разрешить параметры с именами
collections.OrderedDict
и|
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39652: Имя столбца, найденное в
sqlite3.Cursor.description
, теперь обрезается на первом „[“, только если установлена опция PARSE_COLNAMES.bpo-39915: Разрешить параметры с именами
unittest.mock.AsyncMock.await_args_list
иunittest.mock.Mock.call_args
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36144: Разрешить параметры с именами
os.environ
иos.environb
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38662: Разрешить параметры с именами
ensurepip
иpip
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38075: Разрешить параметры с именами
random.Random.seed()
иbool
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39916: Разрешить параметры с именами
os.scandir()
иPath.glob()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39850: Разрешить параметры с именами
multiprocessing
иmultiprocessing.connection.Listener
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36287: Разрешить параметры с именами
ast.dump()
иConstant.kind
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39889: Разрешить параметры с именами
ast.unparse()
иa[i:j,]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39828: Разрешить параметры с именами
json.tool
иBrokenPipeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-13487: Разрешить параметры с именами
inspect.getmodule()
иsys.modules
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39674: Revert «bpo-37330: open() больше не принимает „U“ в режиме файла». Режим «U» в open() сохранен в Python 3.9 для облегчения перехода с Python 2.7, но будет удален в Python 3.10.
bpo-28577: Метод hosts для IPv4Networks с 32-битным префиксом и IPv6Networks со 128-битным префиксом теперь возвращает список, содержащий единственный адрес, вместо пустого списка.
bpo-39826: Добавьте метод getConnection в HTTPHandler протоколирования, чтобы включить пользовательские соединения.
bpo-39763: Разрешить параметры с именами
distutils.spawn.spawn
иsubprocess
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39794: Добавьте опцию сборки –without-decimal-contextvar. Это позволяет использовать локальный контекст потока, а не локальный контекст корутины.
bpo-36144: Разрешить параметры с именами
collections.defaultdict
и|
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39517: Исправьте runpy.run_path() при использовании объектов типа path
bpo-39775: Разрешить параметры с именами
inspect.Signature.parameters
иcollections.OrderedDict
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39678: Переработайте queue_manager в
concurrent.futures.ProcessPoolExecutor
, чтобы его было проще поддерживать.bpo-39764: Исправьте ошибку AttributeError при вызове get_stack на задаче PyAsyncGenObject
bpo-39769: Разрешить параметры с именами
compileall.compile_dir()
и-d
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36144: Разрешить параметры с именами
types.MappingProxyType
и|
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38691: Разрешить параметры с именами
importlib
иPYTHONCASEOK
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39719: Разрешить параметры с именами
tempfile.SpooledTemporaryFile.softspace()
иsoftspace
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39667: Улучшение совместимости pathlib.Path с zipfile.Path и исправление снижения производительности, обнаруженного в zipp 3.0.
bpo-39638: Сохраните подписи ASDL в документах для узлов
AST
. Исправление от Батухана Таскаяbpo-39639: Утратил класс узла
ast.Suite
, поскольку он больше не используется. Исправление от Batuhan Taskaya.bpo-39609: Добавьте префикс thread_name_prefix к исполнителю asyncio по умолчанию
bpo-39548: Разрешить параметры с именами
urllib.request.AbstractDigestAuthHandler
иqop
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39509: Разрешить параметры с именами
103 EARLY_HINTS
и425 TOO_EARLY
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39507: Добавление HTTP-статуса 418 «I’m a Teapot» в HTTPStatus в библиотеке http. Исправление Росса Родса.
bpo-39495: Удалите значение по умолчанию из параметра attrs в
xml.etree.ElementTree.TreeBuilder.start()
для согласованности между реализациями Python и C.bpo-38971: Открытый вопрос в BPO указал на желание привести реализацию codecs.open() в соответствие с io.open(), которая реализует try/except, чтобы гарантировать закрытие файлового потока до того, как будет поднято исключение.
bpo-38641: Разрешить параметры с именами
return
иyield
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37534: При использовании модуля minidom для генерации XML-документов добавлена возможность добавления Standalone Document Declaration. Все изменения сделаны для того, чтобы генерировать документ в соответствии с рекомендацией W3C Extensible Markup Language (XML) 1.0 (Fifth Edition) (доступна здесь: https://www.w3.org/TR/xml/#sec-prolog-dtd).
bpo-34788: Добавьте поддержку скопированных IPv6-адресов в
ipaddress
. Исправление Александра Павлюка.bpo-34822: Разрешить параметры с именами
ast
иIndex
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-13790: Замените „string“ на „specification“ в формате doc.
bpo-17422: Ссылка на язык больше не ограничивает пространства имен классов по умолчанию только dicts.
bpo-39530: Исправление вводящей в заблуждение документации о числовых сравнениях смешанного типа.
bpo-39718: Обновите документацию
token
, чтобы отразить дополнения в Python 3.8bpo-39677: Изменено имя операнда MAKE_FUNCTION с argc на flags для модуля
dis
.
Тесты¶
bpo-40019: test_gdb теперь пропускает тесты, если обнаруживает, что gdb не удалось прочитать отладочную информацию, поскольку двоичный файл Python оптимизирован.
bpo-27807: Разрешить параметры с именами
test_site.test_startup_imports()
иsys.path
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26067: Не завершайте тест test_shutil test_chown, если uid или gid пользователя не может быть преобразован в имя.
bpo-39855: test_subprocess.test_user() теперь пропускает проверку на имя пользователя, если оно не существует. Например, пропустить тест, если пользователь «nobody» не существует в Linux.
Построить¶
bpo-39761: Исправьте сборку с DTrace, но без дополнительных DFLAGS.
bpo-39763: Разрешить параметры с именами
subprocess
иsubprocess
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1294959: Разрешить параметры с именами
--with-platlibdir
иsys.platlibdir
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Windows¶
bpo-39930: Обеспечивает включение необходимых
vcruntime140.dll
в установочные пакеты.bpo-39847: Избегайте зависания, когда компьютер находится в спящем режиме в ожидании мьютекса (для объектов, связанных с блокировкой, из
threading
) около 49-дневного аптайма.bpo-38597: Разрешить параметры с именами
distutils
иvcruntime140.dll
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38380: Обновление сборок Windows для использования SQLite 3.31.1
bpo-39789: Обновите машины для сборки релизов Windows до Visual Studio 2019 (MSVC 14.2).
bpo-34803: Пакет для nuget.org теперь включает ссылку на репозиторий и изображение иконки в комплекте.
macOS¶
bpo-38380: Обновите сборки macOS для использования SQLite 3.31.1
IDLE¶
bpo-27115: Для „Go to Line“ используйте подкласс Query box со стандартным поведением IDLE и улучшенной проверкой ошибок.
bpo-39885: Поскольку щелчок для вызова контекстного меню IDLE перемещает курсор, любое выделение текста должно было быть и теперь очищено.
bpo-39852: Edit «Перейти к строке» теперь очищает любое выделение, предотвращая случайное удаление. Она также обновляет значения Ln и Col в строке состояния.
bpo-39781: Выбор контекстных строк кода больше не приводит к переходу.
Инструменты/демоверсии¶
bpo-36184: Перенос python-gdb.py на FreeBSD. python-gdb.py теперь проверяет имя функции «take_gil», чтобы проверить, пытается ли фрейм получить GIL, вместо проверки «pthread_cond_timedwait», которая специфична для Linux и может быть другим условием, чем GIL.
bpo-38080: Разрешить параметры с именами
getproxies
иlib2to3.fixes.fix_urllib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
C API¶
bpo-40024: Добавьте вспомогательную функцию
PyModule_AddType()
: добавление типа в модуль. Исправление от Donghee Na.bpo-39946: Разрешить параметры с именами
_PyRuntime.getframe
и_PyThreadState_GetFrame
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39947: Добавьте функцию
PyThreadState_GetFrame()
: получение текущего кадра состояния потока Python.bpo-37207: Добавьте вспомогательную функцию _PyArg_NoKwnames. Исправление от Donghee Na.
bpo-39947: Добавить
PyThreadState_GetInterpreter()
: получить интерпретатор состояния потока Python.bpo-39947: Добавьте функцию
PyInterpreterState_Get()
в ограниченный C API.bpo-35370: Разрешить параметры с именами
PySys_Audit()
иPyEval_SetProfile()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39947: Переместите статические inline-функции Py_EnterRecursiveCall() и Py_LeaveRecursiveCall() во внутренний C API: они обращаются к атрибутам PyThreadState. Ограниченный C API предоставляет обычные функции, которые скрывают детали реализации.
bpo-39947: Макросы Py_TRASHCAN_BEGIN_CONDITION и Py_TRASHCAN_END больше не обращаются к атрибутам PyThreadState, а вызывают новые приватные функции _PyTrash_begin() и _PyTrash_end(), которые скрывают детали реализации.
bpo-39884: Разрешить параметры с именами
PyDescr_NewMethod()
иPyCFunction_NewEx()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39877: Разрешить параметры с именами
PyEval_InitThreads()
иPyEval_ThreadsInitialized()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38249: Разрешить параметры с именами
Py_UNREACHABLE
и__builtin_unreachable()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38643: Разрешить параметры с именами
PyNumber_ToBase()
иSystemError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39882: Разрешить параметры с именами
Py_FatalError()
иPy_LIMITED_API
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39824: Разрешить параметры с именами
m_traverse
иm_clear
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаМодули расширения, не имеющие состояния модуля (
m_size <= 0
), не затрагиваются.bpo-38913: Исправлен segfault в
Py_BuildValue()
, вызванном с форматом, содержащим «#», и неопределенным PY_SSIZE_T_CLEAN, когда установлено исключение.bpo-38500: Разрешить параметры с именами
_PyInterpreterState_GetEvalFrameFunc()
и_PyInterpreterState_SetEvalFrameFunc()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.9.0 alpha 4¶
Дата выхода: 2020-02-25
Безопасность¶
bpo-39184: Разрешить параметры с именами
fcntl
иmsvcrt
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39401: Избегайте небезопасной загрузки DLL при запуске в Windows 7 и более ранних версиях.
bpo-39184: Добавьте события аудита в функции выполнения команд в модулях os и pty.
Ядро и встроенные модули¶
bpo-39382: Разрешить параметры с именами
issubclass()
и__bases__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39573: Обновление инструмента клиники для использования
Py_IS_TYPE()
. Исправление от Donghee Na.bpo-39619: Разрешить использование
os.chroot()
на системах HP-UX.bpo-39573: Добавьте
Py_IS_TYPE()
статическую inline-функцию для проверки того, является ли тип объекта o типом type.bpo-39606: Разрешить параметры с именами bpo-39386 и
aclose
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39579: Разрешить параметры с именами
Attribute
иast_for_dotted_name
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Порт модуля расширения _crypt для многофазной инициализации (PEP 489).
bpo-1635741: Перенос модуля расширения _contextvars для многофазной инициализации (PEP 489).
bpo-39510: Исправьте segfault в методе
readinto()
на закрытом BufferedReader.bpo-39502: Исправьте
time.localtime()
на 64-битной AIX для поддержки годов до 1902 и после 2038. Исправление от M Felt.bpo-39492: Исправление цикла ссылок в C Pickler, который препятствовал сборке мусора для удаленных объектов pickled.
bpo-39453: Исправлено возможное падение в
list.__contains__()
при изменении списка во время сравнения элементов. Исправление от Donghee Na.bpo-39434: Разрешить параметры с именами floor division и
ZeroDivisionError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1635741: Порт модуля расширения _codecs для многофазной инициализации (PEP 489).
bpo-1635741: Модуль расширения порта _bz2 для многофазной инициализации (PEP 489).
bpo-1635741: Модуль расширения порта _abc для многофазной инициализации (PEP 489).
bpo-39320: Разрешить параметры с именами
DICT_MERGE
иDICT_UPDATE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39219: Синтаксические ошибки, возникающие в токенизаторе, теперь всегда устанавливают корректные атрибуты «text» и «offset».
bpo-36051: Отказ от GIL во время больших операций
bytes.join
. Исправление Брюса Мерри.bpo-38960: Исправление проблем со сборкой DTrace на FreeBSD. Исправление от Дэвида Карлье.
bpo-37207: Разрешить параметры с именами
range()
иvectorcall
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36144: Разрешить параметры с именами
dict
иcollections.UserDict
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32856: Разрешить параметры с именами
for y in [expr]
иy = expr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-30566: Исправление
IndexError
при попытке декодировать недопустимую строку с помощью кодека punycode.bpo-39649: Разрешить параметры с именами
__args__
иbdb.Bdb.format_stack_entry
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39648: Разрешить параметры с именами
math.gcd()
иmath.lcm()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39681: Исправление регрессии, из-за которой модуль pickle на C не позволял распаковывать данные из файлоподобного объекта, не имеющего метода readinto().
bpo-35950: Разрешить параметры с именами
io.UnsupportedOperation
иio.BufferedReader.truncate()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39479: Добавить функцию
math.lcm()
: наименьшее общее кратное.bpo-39674: Вернуть изменение «Do not expose abstract collection classes in the collections module» (bpo-25988). Псевдонимы для ABC, такие как collections.Mapping, сохраняются в Python 3.9 для облегчения перехода с Python 2.7, но будут удалены в Python 3.10.
bpo-39104: Исправление зависания ProcessPoolExcutor на
shutdown(wait=False)
, когда задача не прошла пикировку.bpo-39627: Исправлена проверка полноты TypedDict для унаследованных ключей.
bpo-39474: Разрешить параметры с именами
(a)(b)
и(a)[b]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21016: Разрешить параметры с именами
pydoc
иtrace
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39590: Collections.deque теперь держит сильные ссылки во время deque.__contains__ и deque.count, что устраняет сбои.
bpo-39586: Разрешить параметры с именами
bdist_msi
иbdist_wheel
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39595: Улучшена производительность zipfile.Path для файлов с большим количеством записей. Также улучшена производительность и исправлена незначительная проблема, опубликованная в importlib_metadata 1.5.
bpo-39350: Разрешить параметры с именами
fractions.Fraction
иint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39567: Разрешить параметры с именами
os.walk()
иos.fwalk()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39559: Разрешить параметры с именами
getters
иuuid.getnode()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38149: Разрешить параметры с именами
sys.audit()
иglob.glob()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39546: Разрешить параметры с именами
ArgumentParser
иallow_abbrev=False
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39450: Удаление пробельных символов из docstring перед возвратом из
unittest.case.shortDescription()
.bpo-12915: Разрешить параметры с именами
resolve_name
иpkgutil
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39353: Функция
binascii.crc_hqx()
больше не является устаревшей.bpo-39493: Пометить
typing.IO.closed
как свойствоbpo-39491: Разрешить параметры с именами
typing.Annotated
иinclude_extras
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39485: Исправлена ошибка в
unittest.mock.create_autospec()
, из-за которой пользовательские дескрипторы, определенные в модуле расширения, возвращающем функции, жаловались на неправильное количество аргументов.bpo-38932: Макет полностью сбрасывает дочерние объекты при reset_mock(). Исправление от Vegard Stikbakke
bpo-39082: Позволяет AsyncMock корректно патчить статические/классовые методы
bpo-39432: Реализуйте алгоритм PEP-489 для неаскриптивных имен символов «PyInit_…» в distutils, чтобы он экспортировал правильный символ init и под Windows.
bpo-18819: Разрешить параметры с именами
devmajor
иdevminor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39349: Добавлен новый параметр cancel_futures в
concurrent.futures.Executor.shutdown()
, который отменяет все ожидающие фьючерсы, которые не начали выполняться, вместо того чтобы ждать их завершения перед закрытием исполнителя.bpo-39274:
bool(fraction.Fraction)
теперь возвращает булево число, даже если (числитель != 0) не возвращает булево число (например, число numpy).bpo-34793: Разрешить параметры с именами
with (await asyncio.lock):
иwith (yield from asyncio.lock):
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25597: Разрешить параметры с именами
wraps
иunittest.mock.MagicMock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36350: Разрешить параметры с именами
inspect.Signature.parameters
иinspect.BoundArguments.arguments
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35727: Исправьте распространение кода выхода sys.exit() и sys.exit(None) при использовании в многопроцессорном процессе.Process.
bpo-32173: Разрешить параметры с именами
lazycache
и__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-17422: В справочнике по языку теперь указываются ограничения на пространства имен классов. Адаптировано из исправления Итана Фурмана.
bpo-39572: Разрешить параметры с именами
total
иTypedDict
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39654: В документации pyclbr обновите „class“ на „module“, где это необходимо, и добавьте комментарий readmodule. Исправление от Hakan Çelik.
bpo-39153: Уточните семантику пересчета для следующих функций: - PyObject_SetItem - PyMapping_SetItemString - PyDict_SetItem - PyDict_SetItemString
bpo-39392: Объясните, что при заполнении черепашкой области перекрытия могут остаться незаполненными.
bpo-39369: Обновление описания метода mmap readline. Тот факт, что метод readline обновляет позицию файла, не должен игнорироваться, так как у программиста может сложиться впечатление, что он ее не обновляет.
bpo-9056: Включите подраздел в TOC для PDF-версии документов.
Тесты¶
bpo-38325: Пропустить тесты на не-BMP символы test_winconsoleio.
bpo-39502: Разрешить параметры с именами
time.localtime()
иOverflowError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-39489: Удалить
COUNT_ALLOCS
специальную сборку.
Windows¶
bpo-39553: Удаление неиспользуемого кода, связанного с манифестами SxS.
bpo-39439: Указывает путь к Python, когда virtualenv активен в Windows.
bpo-39393: Улучшено сообщение об ошибке при попытке загрузить DLL с неразрешенными зависимостями.
bpo-38883: Разрешить параметры с именами
home()
иexpanduser()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39185: Скрипт build.bat имеет дополнительные опции для очень тихого вывода (-q) и очень бодрого вывода (-vv)
IDLE¶
bpo-39663: Добавьте тесты для pyparse find_good_parse_start().
bpo-39600: В окне конфигурации шрифта удалите дублирующиеся имена шрифтов.
bpo-30780: Добавьте оставшиеся тесты configdialog для кнопок и вкладок «Выделение» и «Ключи».
bpo-39388: IDLE Кнопка отмены настроек теперь отменяет ожидающие изменения
bpo-38792: Закрывает подсказку вызова оболочки IDLE, если происходит
KeyboardInterrupt
или перезапуск оболочки. Исправление от Zackery Spytz.
C API¶
bpo-35081: Разрешить параметры с именами
bytes_methods.h
иpycore_bytes_methods.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35081: Разрешить параметры с именами
dtoa.h
иpycore_dtoa.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39573: Добавьте функцию
Py_SET_SIZE()
для установки размера объекта.bpo-39500: Разрешить параметры с именами
PyUnicode_IsIdentifier()
иPy_FatalError()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39573: Добавьте функцию
Py_SET_TYPE()
для установки типа объекта.bpo-39573: Добавьте функцию
Py_SET_REFCNT()
для установки счетчика ссылок на объект.bpo-39542: Разрешить параметры с именами
PyType_HasFeature()
иPyType_Check()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39542: Разрешить параметры с именами
PyObject_INIT()
иPyObject_INIT_VAR()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39542: Исключите механизм мусорной корзины из ограниченного C API: он требует доступа к полям структур PyTypeObject и PyThreadState, в то время как эти структуры непрозрачны в ограниченном C API.
bpo-39511: Разрешить параметры с именами
PyThreadState_Clear()
иPyThreadState.on_delete
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38076: Исправление для очистки состояния интерпретатора только после очистки глобалов модуля, чтобы гарантировать доступ к состоянию модуля из C Extensions во время разрушения во время выполнения
bpo-39245: Разрешить параметры с именами
PyObject_Vectorcall
иPyObject_VectorcallMethod
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.9.0 alpha 3¶
Дата выхода: 2020-01-24
Ядро и встроенные модули¶
bpo-39427: Документируйте все возможности для опций
-X
в разделе помощи командной строки. Исправление от Pablo Galindo.bpo-39421: Исправление возможных сбоев при работе с функциями в модуле
heapq
и пользовательскими операторами сравнения.bpo-39386: Предотвращение двойного ожидания асинхронного итератора.
bpo-17005: Разрешить параметры с именами
functools.TopologicalSorter
иfunctools
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39320: Замените четыре сложных байткода для построения последовательностей тремя более простыми.
Следующие четыре байткода были удалены:
BUILD_LIST_UNPACK
BUILD_TUPLE_UNPACK
BUILD_SET_UNPACK
BUILD_TUPLE_UNPACK_WITH_CALL
Были добавлены следующие три байткода:
LIST_TO_TUPLE
LIST_EXTEND
SET_UPDATE
bpo-39336: Импортные загрузчики, публикующие неизменяемые объекты модулей, теперь могут публиковать неизменяемые пакеты в дополнение к отдельным модулям.
bpo-39322: Добавлена новая функция
gc.is_finalized()
для проверки того, был ли объект финализирован сборщиком мусора. Исправление от Пабло Галиндо.bpo-39048: Разрешить параметры с именами
async with
и__aenter__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39235: Исправьте место окончания AST для одинокого выражения генератора в вызове функции, например, f(i for i in a).
bpo-39209: Корректная обработка многострочных токенов в интерактивном режиме. Исправление от Пабло Галиндо.
bpo-1635741: Порт модуля расширения _json для многофазной инициализации (PEP 489).
bpo-39216: Исправьте оптимизацию складывания констант для аргументов с позицией - автор Anthony Sottile.
bpo-39215: Исправьте
SystemError
, когда вложенная функция имеет аннотацию только на позиционный аргумент - автор Anthony Sottile.bpo-39200: Разрешить параметры с именами
min()
иmax()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39200: Исправление сообщения об ошибке при попытке сконструировать объекты
range
без аргументов. Исправление от Пабло Галиндо.bpo-39166: Исправление некорректного отчета о выполнении строк в функциях трассировки при трассировке последней итерации асинхронных циклов for. Исправление от Пабло Галиндо.
bpo-39114: Исправление некорректного отчета о выполнении строки в функциях трассировки при трассировке обработчиков исключений с привязкой к имени. Исправление от Pablo Galindo.
bpo-39156: Разделите инструкцию байткода COMPARE_OP на четыре отдельные инструкции.
COMPARE_OP для насыщенных сравнений
IS_OP для тестов „is“ и „is not“
CONTAINS_OP для тестов „in“ и „is not“
JUMP_IF_NOT_EXC_MATCH для проверки исключений в операторах „try-except“.
Это улучшает ясность интерпретатора и должно обеспечить небольшое ускорение.
bpo-38588: Исправление возможных сбоев в dict и list при вызове
PyObject_RichCompareBool()
.bpo-13601: Разрешить параметры с именами
sys.stderr
иstderr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда(Внесено Йендриком Сейппом в bpo-13601).
bpo-38610: Исправление возможных сбоев в нескольких методах списка из-за удержания сильных ссылок на элементы списка при вызове
PyObject_RichCompareBool()
.bpo-32021: Включите кодировку brotli .br в mimetypes encodings_map
Библиотека¶
bpo-39430: Исправлено состояние гонки при ленивом импорте в
tarfile
.bpo-39413: Функция
os.unsetenv()
теперь доступна и в Windows.bpo-39390: Разрешить параметры с именами
ignore
иshutil.copytree()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39395: Разрешить параметры с именами
os.putenv()
иos.unsetenv()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39406: Разрешить параметры с именами
setenv()
иos.putenv()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39396: Исправьте
math.nextafter(-0.0, +0.0)
на AIX 7.1.bpo-29435: Разрешить параметры с именами
tarfile.is_tarfile()
иzipfile.is_zipfile()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39377: Разрешить параметры с именами
encoding
иjson.loads()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39389: Записывать точные метаданные о степени сжатия в архивы
gzip
, а не всегда сигнализировать о максимальном сжатии.bpo-39366: Разрешить параметры с именами
xpath()
иxgtitle()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39357: Разрешить параметры с именами
bz2.BZ2File
иDeprecationWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39353: Разрешить параметры с именами
binhex
иbinascii
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39351: Разрешить параметры с именами
base64.encodestring()
иbase64.decodestring()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39350: Разрешить параметры с именами
fractions.gcd()
и bpo-22486 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39329: Конструктор
LMTP
теперь имеет необязательный параметр timeout. Исправление от Donghee Na.bpo-39313: Разрешить параметры с именами
exec_function
иRefactoringTool
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39259: Разрешить параметры с именами
FTP_TLS
иFTP_TLS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39259: Разрешить параметры с именами
SMTP
иSMTP_SSL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39310: Добавить
math.ulp()
: вернуть значение наименьшего значащего бита float.bpo-39297: Улучшена производительность обнаружения дистрибутива importlib.metadata и повышена устойчивость к недоступным записям sys.path (importlib_metadata v1.4.0).
bpo-39259: Разрешить параметры с именами
NNTP
иNNTP_SSL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38901: Когда вы указываете prompt=“.“ или эквивалентно python -m venv –prompt . … базовое имя текущего каталога используется для установки подсказки созданного venv при его активации.
bpo-39288: Добавить
math.nextafter()
: возвращает следующее значение с плавающей точкой после x в направлении y.bpo-39259: Разрешить параметры с именами
POP3
иPOP3_SSL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39242: Обновлен домен Gmane с news.gmane.org на news.gmane.io, который используется для примеров
NNTP
сервера чтения новостей и тестов nntplib.bpo-35292: Разрешить параметры с именами
SimpleHTTPRequestHandler.guess_type
иmimetypes.guess_type
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39239: Разрешить параметры с именами
select.epoll.unregister()
иEBADF
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38907: В сценарии http.server восстановите привязку к IPv4 в Windows.
bpo-39152: Исправьте ttk.Scale.configure([name]), чтобы вернуть кортеж конфигурации для имени или всех опций. Джованни Ломбардо внес часть вклада в патч.
bpo-39198: Разрешить параметры с именами
Logger.isEnabledFor
иlogging
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39191: Выполните проверку на выполнение цикла перед запуском новой задачи в
loop.run_until_complete()
для быстрого отказа; это предотвращает побочный эффект порождения новой задачи до возникновения исключения.bpo-38871: Корректно заключать в скобки утверждения, основанные на фильтрах и содержащие лямбда-выражения в
lib2to3
. Исправление от Donghee Na.bpo-39142: Внесено изменение в logging.config.dictConfig, чтобы избежать преобразования экземпляров именованных кортежей в ConvertingTuple. Предполагается, что именованные кортежи слишком специализированны, чтобы с ними можно было обращаться как с обычными кортежами; если пользователю именованных кортежей требуется функциональность ConvertingTuple, он должен сам реализовать ее в своем классе именованного кортежа.
bpo-39158: ast.literal_eval() теперь поддерживает пустые множества.
bpo-39129: Исправьте путь импорта для
asyncio.TimeoutError
bpo-39057:
urllib.request.proxy_bypass_environment()
теперь игнорирует ведущие точки и не игнорирует следующую за ними новую строку.bpo-39056: Исправлена обработка недействительной категории предупреждения в опции -W. Больше не импортируется модуль re, если он не нужен.
bpo-39055: Разрешить параметры с именами
base64.b64decode()
иvalidate=True
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21600: Разрешить параметры с именами
mock.patch.stopall()
иmock.patch.dict()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39019: Разрешить параметры с именами
__class_getitem__
иtempfile.SpooledTemporaryFile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39019: Разрешить параметры с именами
__class_getitem__
иsubprocess.Popen
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38914: Разрешить параметры с именами
check
иauthor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38878: Исправлен __subclasshook__ из
os.PathLike
, чтобы возвращать корректный результат при наследовании. Исправление от Bar Harel.bpo-38615: Разрешить параметры с именами
IMAP4
иIMAP4_SSL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35182: Исправлено падение последующего вызова
Popen.communicate()
, когда дочерний процесс уже закрыл любой переданный стандартный поток, но все еще продолжает выполняться. Исправление Андрея Малецкого.bpo-38630: Разрешить параметры с именами
subprocess.Popen.send_signal()
иsubprocess.Popen.returncode
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38536: Разрешить параметры с именами
international=True
иlocale.currency(12.34, international=True)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38473: Используйте сигнатуру из внутреннего mock для автоспецифицированных методов, присоединенных к
unittest.mock.attach_mock()
. Исправление от Karthikeyan Singaravelan.bpo-38361: Разрешить параметры с именами
ident
иsyslog.openlog()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38293: Разрешить параметры с именами
copy.copy()
иcopy.deepcopy()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37958: Добавлен метод pstats.Stats.get_profile_dict() для возврата данных профиля в виде экземпляра StatsProfile.
bpo-28367: Магические константы Termios для следующих скоростей передачи данных: - B500000 - B576000 - B921600 - B1000000 - B1152000 - B1500000 - B2000000 - B2500000 - B3000000 - B3500000 - B40000 Patch by Andrey Smirnov
Документация¶
bpo-39381: Упомяните в документации, что
asyncio.get_event_loop()
неявно создает новый цикл событий, только если вызывается из главного потока.bpo-38918: Разрешить параметры с именами
__module__
иinspect
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-3530: Разрешить параметры с именами
ast
иNodeTransformer
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-39395: Разрешить параметры с именами
setenv()
иunsetenv()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39160: Обновили документацию в
./configure --help
, чтобы показать значения по умолчанию, сослаться на документацию, где это необходимо, и добавить дополнительные пояснения, где это необходимо.bpo-39144: Цели сборки ctags и etags включают Modules/_ctypes и исходные файлы стандартной библиотеки Python.
IDLE¶
bpo-39050: Сделайте так, чтобы кнопка «Помощь» в диалоге настроек IDLE снова работала.
bpo-34118: Отметьте memoryview, range и tuple как классы, такие же, как list и т.д. в списке встроенных функций руководства библиотеки.
bpo-32989: Добавлены тесты для метода newline_and_indent_event редактора. Удалите мертвый код из метода pyparse find_good_parse_start.
C API¶
bpo-39372: Разрешить параметры с именами
_PyBytes_InsertThousandsGroupingLocale
и_PyBytes_InsertThousandsGrouping
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39164: Добавьте частную функцию
_PyErr_GetExcInfo()
для получения информации об исключениях из указанного состояния потока Python.
Python 3.9.0 alpha 2¶
Дата выхода: 2019-12-18
Безопасность¶
bpo-38945: При кодировании uu символы новой строки были экранированы, чтобы предотвратить их выход за пределы раздела содержимого закодированного файла. Это предотвращает злонамеренную или случайную модификацию данных в процессе декодирования.
bpo-37228: Разрешить параметры с именами
asyncio.loop.create_datagram_endpoint()
иSO_REUSEADDR
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38804: Устраняет уязвимость ReDoS в
http.cookiejar
. Исправление от Бена Каллера.
Ядро и встроенные модули¶
bpo-39028: Немного повышает скорость разбора аргумента ключевого слова с большим количеством kwargs, усиливая предположение, что kwargs являются интернированными строками.
bpo-39080: Исправление значения end_col_offset для AST-узлов Starred Expression, когда они входят в число элементов в атрибуте args AST-узлов Call.
bpo-39031: При разборе узла «elif» lineno и col_offset узла теперь указывают на ключевое слово «elif», а не на его условие, что делает его совместимым с узлом «if». Исправление Лисандроса Николау.
bpo-20443: В Python 3.9.0a1 sys.argv[0] превращался в абсолютный путь, если в командной строке было указано имя файла. Отмените это изменение, поскольку большинство пользователей ожидают, что sys.argv не будет изменен.
bpo-39008: Разрешить параметры с именами
PySys_Audit()
иPy_ssize_t
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38673: В режиме REPL не переключайтесь на PS2, если строка начинается с комментария или пробельного символа. Основано на работе Батухана Ташкая.
bpo-38922: Разрешить параметры с именами
replace
иcode.__new__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38920: Разрешить параметры с именами
sys.excepthook()
иsys.unraisablehook()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38892: Улучшена документация по таблице и функциям событий аудита.
bpo-38852: Установите размер стека потоков на 8 Мб для отладочных сборок на платформах android.
bpo-38858: Разрешить параметры с именами
NSMALLNEGINTS
иNSMALLPOSINTS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36854: Разрешить параметры с именами
PyInterpreterState.gc
и_PyRuntimeState.gc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38835: Разрешить параметры с именами
PyFPE_START_PROTECT()
иPyFPE_END_PROTECT()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38328: Разрешить параметры с именами
list
иset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38707: Разрешить параметры с именами
MainThread.native_id
иmultiprocessing.Process
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38629: Разрешить параметры с именами
__floor__
и__ceil__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27145: операторы int + int и int - int теперь могут возвращать небольшие целочисленные синглтоны. Исправление от hongweipeng.
bpo-38021: Предоставьте тег платформы для AIX, достаточный для идентификации бинарного дистрибутива PEP425. Исправление Майкла Фелта.
bpo-35409: Игнорирование исключений GeneratorExit при выбросе исключения в корутину aclose асинхронного генератора.
bpo-33387: Удалены байткоды WITH_CLEANUP_START, WITH_CLEANUP_FINISH, BEGIN_FINALLY, END_FINALLY, CALL_FINALLY и POP_FINALLY. Заменены на байткоды RERAISE и WITH_EXCEPT_START. Компилятор теперь генерирует разный код для исключительных и неисключительных ветвей для операторов „with“ и „try-except“. Для операторов „try-finally“ блок „finally“ повторяется для каждого выхода из тела „try“.
Библиотека¶
bpo-39033: Разрешить параметры с именами
NameError
иzipimport
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-39022: Обновите importlib.metadata, чтобы включить улучшения из importlib_metadata 1.3, включая улучшенную сериализацию EntryPoints и улучшенную документацию для пользовательских искателей.
bpo-39006: Исправление asyncio при отсутствии модуля ssl: проверка экземпляра ssl.SSLSocket только в том случае, если модуль ssl доступен.
bpo-38708: Исправление потенциальной ошибки IndexError в парсере писем при разборе пустого msg-id.
bpo-38698: Добавьте в парсер электронной почты новый токен
InvalidMessageID
для обозначения недействительных заголовков Message-ID. Также добавьте дефекты, когда после разбора заголовка остается значение.bpo-38994: Разрешить параметры с именами
__class_getitem__
иos.PathLike
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38979: Верните класс из
ContextVar.__class_getitem__
, чтобы упростить подклассификацию.bpo-38978: Реализуйте
__class_getitem__
на объектах asyncio (Future, Task, Queue). Исправление от Batuhan Taskaya.bpo-38916: Разрешить параметры с именами
array.array
иtostring()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38986: Сделайте репринт ускоренного на C TaskWakeupMethWrapper таким же, как и у чистой версии на Python.
bpo-38982: Разрешить параметры с именами
PidfdChildWatcher
иwaitpid()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38529: Сбросьте слишком шумное предупреждение asyncio об удалении потока без явного вызова
.close()
.bpo-27413: Разрешить параметры с именами
ensure_ascii
иjson.tool
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38634: Модуль
readline
теперь определяет, связан ли Python с libedit во время выполнения на всех платформах. Ранее проверка выполнялась только на macOS.bpo-33684: Исправление
json.tool
не смогло прочитать JSON-файл с символами, отличными от ASCII, если кодировка локали не UTF-8.bpo-38698: Предотвращение появления UnboundLocalError в parse_message_id.
Функция parse_message_id() некорректно использовала токен, определенный внутри обработчика исключений, который поднимал
UnboundLocalError
при разборе недопустимого значения. Исправление от Claudiu Popa.bpo-38927: Разрешить параметры с именами
python -m pip
иpip
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26730: Исправление
SpooledTemporaryFile.rollover()
может повредить файл, если он находится в текстовом режиме. Исправление от Сергея Сторчака.bpo-38881: random.choices() теперь выдает ошибку ValueError, когда все веса равны нулю.
bpo-38876: Вызывает pickle.UnpicklingError при загрузке элемента из memo для недопустимого ввода.
KeyError
: Разрешить параметры с именамиBINGET
иLONG_BINGET
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38688: Вызов func:
shutil.copytree
для копирования дерева каталогов из одного каталога в другой подкаталог приводил к бесконечному циклу и ошибке RecursionError. Было добавлено исправление, потребляющее итератор и создающее список копируемых записей, что позволяет избежать рекурсии для вновь созданных каталогов. Автор исправления - Бруно П. Киношита.bpo-38863: Разрешить параметры с именами
is_cgi()
иhttp.server
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37838: Разрешить параметры с именами
typing.get_type_hints()
иfunctools.wraps()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38870: Разрешить параметры с именами
ast.unparse()
иast
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38859: AsyncMock теперь возвращает StopAsyncIteration при исчерпании итерабельной таблицы side_effects. С PEP-479 невозможно вызвать исключение StopIteration из корутины.
bpo-38857: Исправление AsyncMock для возвращаемых значений, которые являются ожидаемыми типами. Это также распространяется на значения итерируемых с побочным_эффектом, которые оказались ожидаемыми, и оборачивает callables, возвращающие ожидаемый тип. До этого ожидаемые значения ожидали, а не возвращались как есть.
bpo-38834: Разрешить параметры с именами
typing.TypedDict
и__required_keys__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38821: Разрешить параметры с именами
argparse
иnargs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38820: Сделайте Python совместимым с OpenSSL 3.0.0.
ssl.SSLSocket.getpeercert()
больше не возвращает IPv6-адреса с новой строкой в конце.bpo-38811: Разрешить параметры с именами
pathlib
иos.link()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38686: Разрешить параметры с именами
qop
иurllib.request.AbstractDigestAuthHandler
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38712: Добавьте специфическую для Linux функцию
signal.pidfd_send_signal()
, которая позволяет посылать сигнал процессу, идентифицированному не по pid, а по дескриптору файла.bpo-38348: Разрешить параметры с именами
-i
и--indent
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37523: Разрешить параметры с именами
zipfile.ZipExtFile
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38045: Разрешить параметры с именами
enum._decompose()
иenum
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36820: Разрывает цикл, возникающий при сохранении исключения в socket.py, codeop.py и dyld.py, поскольку они сохраняют не только исключение, но и пользовательские объекты через атрибут
__traceback__
. Исправление Марио Корчеро.bpo-36406: Обработка пакетов пространства имен в
doctest
. Исправление от Karthikeyan Singaravelan.bpo-34776: Исправьте классы данных для поддержки прямых ссылок в аннотациях типов
bpo-20928: ElementTree поддерживает рекурсивную обработку XInclude. Исправление Стефана Бехнеля.
bpo-29636: Разрешить параметры с именами
json.tool
и--indent
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-38928: Разрешить параметры с именами
upgrade_dependencies()
и--upgrade-deps
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38899: Разрешить параметры с именами
source
и.
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22377: Разрешить параметры с именами
datetime.datetime.strptime()
и%Z
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Тесты¶
bpo-38546: Исправьте test_ressources_gced_in_workers() из test_concurrent_futures: явно останавливайте менеджер, чтобы предотвратить утечку дочернего процесса, запущенного в фоновом режиме после завершения теста.
bpo-38546: Тесты Multiprocessing и concurrent.futures теперь останавливают процесс отслеживания ресурсов после завершения тестов.
bpo-38614: Разрешить параметры с именами
test.support
иLOOPBACK_TIMEOUT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38547: Исправьте test_pty: если процесс является лидером сессии, закрытие дескриптора главного файла вызывает сигнал SIGHUP: просто игнорируйте SIGHUP при выполнении тестов.
bpo-38992: Исправьте тест для
math.fsum()
, который давал сбой из-за постоянного складывания.bpo-38991: Разрешить параметры с именами
test.support
иrun_python_until_end()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38965: Исправление test_faulthandler на GCC 10. Используйте ключевое слово «volatile» в
faulthandler._stack_overflow()
для предотвращения оптимизации хвостовых вызовов на любом компиляторе, а не полагайтесь на прагмы, специфичные для компилятора.bpo-38875: test_capi: тесты trashcan теперь требуют ресурс test «cpu».
bpo-38841: Пропускайте asyncio test_create_datagram_endpoint_existing_sock_unix на платформах, где отсутствует функциональная функция bind() для именованных доменных сокетов unix.
bpo-38692: Разрешить параметры с именами
os.pidfd_open()
иPermissionError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38839: Исправьте некоторые неиспользуемые функции в тестах. Исправление от Адама Джонсона.
bpo-38669: Разрешить параметры с именами
TypeError
иunittest.mock.patch.object()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37957: test.regrtest теперь может получать список тестовых шаблонов для игнорирования (с помощью аргумента -i/–ignore) или файл со списком шаблонов для игнорирования (с помощью аргумента –ignore-file). Исправление от Пабло Галиндо.
Построить¶
Windows¶
macOS¶
bpo-37931: Исправлен сбой в динамических сборках OSX, возникавший при повторной инициализации модуля posix после Py_Finalize, если окружение изменилось с момента предыдущего
import posix
. Исправление от Benoît Hudson.
IDLE¶
bpo-38944: Клавиша Escape теперь закрывает окна завершения IDLE. Автор исправления - Джонни Наджера.
bpo-38943: Исправление того, что окна автозаполнения IDLE не всегда появлялись на некоторых системах. Автор исправления - Джонни Наджера.
bpo-38862: „Strip Trailing Whitespace“ в меню Format удаляет лишние новые строки в конце файлов, не относящихся к оболочке.
bpo-38636: Исправление переключения вкладок меню IDLE Format и ширины отступа файла. Эти функции (сочетания клавиш по умолчанию Alt-T и Alt-U) были ошибочно отключены в 3.7.5 и 3.8.0.
C API¶
bpo-38896: Удалить функцию
PyUnicode_ClearFreeList()
: свободный список Юникода был удален в Python 3.3.bpo-37340: Разрешить параметры с именами
PyMethod_ClearFreeList()
иPyCFunction_ClearFreeList()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38835: Разрешить параметры с именами
PyFPE_START_PROTECT()
иPyFPE_END_PROTECT()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.9.0 alpha 1¶
Дата выхода: 2019-11-19
Безопасность¶
bpo-38722: Разрешить параметры с именами
runpy
иio.open_code()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38622: Добавьте дополнительные события аудита для модуля
ctypes
.bpo-38418: Разрешить параметры с именами
os.system()
иos.system
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38243: Разрешить параметры с именами
xmlrpc.server.DocXMLRPCServer
и bpo-38243 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38174: Обновите версию библиотеки vendorized expat до 2.2.8, что устраняет CVE-2019-15903.
bpo-37764: Исправляет ситуацию, когда email._header_value_parser.get_unstructured уходит в бесконечный цикл для случая, когда в заголовке электронной почты нет пробельных символов в конце, и для случая, когда он содержит неверное кодированное слово. Исправление от Ashwin Ramaswami.
bpo-37461: Исправление бесконечного цикла при разборе специально созданных заголовков электронной почты. Исправление от Абхилаша Раджа.
bpo-37363: Добавляет события аудита для диапазона поддерживаемых команд выполнения (см. Командная строка и окружение).
bpo-37463: ssl.match_hostname() больше не принимает адреса IPv4 с дополнительным текстом после адреса и только четырехточечные обозначения без пробелов в конце. Некоторые реализации inet_aton() игнорируют пробельные символы и все данные после пробельных символов, например, „127.0.0.1 whatever“.
bpo-37363: Разрешить параметры с именами
ensurepip
иftplib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37364: Разрешить параметры с именами
io.open_code()
и.pth
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34631: Обновление OpenSSL до версии 1.1.1c в программе установки Windows
bpo-34155: Разрешить параметры с именами
@
и@
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-38631: Разрешить параметры с именами
Py_FatalError()
иRuntimeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38639: Разрешить параметры с именами
math.floor()
иmath.ceil()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38640: Исправлена ошибка в компиляторе, которая приводила к возникновению ошибки при наличии операторов break и continue внутри всегда ложных циклов while. Автор исправления - Пабло Галиндо.
bpo-38613: Разрешить параметры с именами
|
и^
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28029: Разрешить параметры с именами
"".replace("", s, n)
иs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38535: Исправлены номера строк и смещения столбцов для узлов AST для вызовов без аргументов в декораторах.
bpo-38525: Исправление ошибки сегментации при использовании обратных итераторов пустых объектов
dict
. Исправление от Donghee Na и Inada Naoki.bpo-38465: Разрешить параметры с именами
bytearray
иarray
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38469: Исправлена ошибка, из-за которой область видимости именованных выражений не разрешалась корректно в присутствии ключевого слова global. Исправление Пабло Галиндо.
bpo-38437: Разрешить параметры с именами
GC_DEBUG
иPy_DEBUG
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38379: Когда сборщик мусора производит сборку, в которой некоторые объекты воскресают (они становятся достижимыми извне изолированных циклов после выполнения финализаторов), не блокируйте сборку всех объектов, которые все еще недостижимы. Исправление Пабло Галиндо и Тима Питерса.
bpo-38379: Разрешить параметры с именами
collect()
иget_stats()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38392: Разрешить параметры с именами
PyObject_GC_Track()
иtp_traverse()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38210: Устранение ненужных операций пересечения и обновления множества в диктующем представлении с пустым множеством. (Внесено Donghee Na в bpo-38210).
bpo-38402: Разрешить параметры с именами
crypt
иcrypt_r
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37474: Во FreeBSD Python больше не вызывает
fedisableexcept()
при запуске для управления режимом управления плавающей точкой. Этот вызов стал бесполезен начиная с FreeBSD 6: он стал режимом по умолчанию.bpo-38006: Исправление ошибки, связанной с взаимодействием weakrefs и циклического сборщика мусора. Мы должны очистить все weakrefs в мусоре, чтобы их обратные вызовы не выполнялись и не приводили к краху.
bpo-38317: Разрешить параметры с именами
PyConfig.warnoptions
и PEP 587 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38310: Разрешить параметры с именами
BUILD_MAP_UNPACK_WITH_CALL
иCALL_FUNCTION_EX
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36871: Улучшена обработка ошибок для методов assert_has_calls и assert_has_awaits макетов. Исправлена ошибка, при которой любые ошибки, возникающие при привязке ожидаемых вызовов к спецификации макета, молча проглатывались, что приводило к ошибочному выводу ошибок.
bpo-11410: Улучшенный контроль над видимостью символов обеспечивается за счет использования атрибутов видимости, доступных в gcc >= 4.0, которые предоставляются единообразно для POSIX и Windows. Файлы сборки POSIX были обновлены для компиляции с -fvisibility=hidden, что минимизирует экспортируемые символы.
bpo-38219: Разрешить параметры с именами
dict
иupdate()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38236: Теперь Python сбрасывает конфигурацию пути, если ему не удается импортировать кодеки Python для файловой системы и кодировки stdio.
bpo-38013: Разрешить параметры с именами
async_generator_athrow().throw(...)
иasyncio.run()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38124: Исправьте ошибку off-by-one в PyState_AddModule, которая могла привести к выходу за границы памяти.
bpo-38116: Модуль select теперь совместим с PEP-384 и больше не имеет статического состояния
bpo-38113: модуль ast обновлен до PEP-384 и удалены все статики
bpo-38076: Модуль struct теперь совместим с PEP-384
bpo-38075: Модуль random теперь совместим с PEP-384
bpo-38074: модуль zlib стал совместим с PEP-384
bpo-38073: Обеспечьте совместимость модуля расширения pwd с PEP-384
bpo-38072: модуль grp стал совместим с PEP-384
bpo-38069: Сделать _posixsubprocess совместимым с PEP-384
bpo-38071: Обеспечьте совместимость модуля расширения termios с PEP-384
bpo-38005: Исправлено сравнение и создание InterpreterID и ChannelID.
bpo-36946: Исправление возможного переполнения знаковых целых чисел при работе с фрагментами. Исправление от hongweipeng.
bpo-37994: Исправлено замалчивание произвольных ошибок при неудачном поиске атрибутов на нескольких сайтах. Замалчиваться должна только ошибка AttributeError.
bpo-8425: Оптимизация set difference_update для случая, когда другой набор намного больше базового. (Предложено Евгением Капуном, код предоставлен Мишелем Орру).
bpo-37966: Реализация
is_normalized()
была значительно ускорена для строк, которые не нормализованы, за счет применения полного алгоритма нормализации-быстрой проверки из стандарта Unicode.bpo-37947: Корректно настраивает уровень рекурсии при генерации symtable для именованных выражений. Исправление от Pablo Galindo.
bpo-37812: Разрешить параметры с именами
CHECK_SMALL_INT
иObject/longobject.c
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37751: Разрешить параметры с именами
codecs.lookup()
иencodings.normalize_encoding()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37830: Разрешить параметры с именами
break
иcontinue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20490: Улучшение сообщения об ошибке импорта для частично инициализированного модуля при круговом импорте
from
- автор Энтони Соттиле.bpo-37840: Разрешить параметры с именами
sq_item
иbytearray
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37802: Разрешить параметры с именами
PyLong_FromUnsignedLong()
иPyLong_FromUnsignedLongLong()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37409: Убедитесь, что явный относительный импорт из интерактивных сессий и скриптов (не имеющих родительского пакета) всегда вызывает ImportError, а не рассматривает текущий модуль как пакет. Исправление Бена Льюиса.
bpo-32912: Разрешить параметры с именами bpo-32912 и
SyntaxWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37757: Разрешить параметры с именами PEP 572 и
SyntaxError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПодкласс
TargetScopeError
, первоначально предложенный в PEP, был удален в пользу того, чтобы просто выдавать обычные синтаксические ошибки для запрещенных случаев.bpo-36279: Исправьте потенциальное использование неинициализированной памяти в
os.wait3()
.bpo-36311: Декодирование байтовых объектов размером более 2 Гбайт стало быстрее и больше не приводит к ошибкам, когда многобайтовые символы пересекают границу чанка.
bpo-34880: Разрешить параметры с именами
assert
иAssertionError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37340: Разрешить параметры с именами
free_list
иLOAD_METHOD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37648: Разрешить параметры с именами
list.__contains__()
иtuple.__contains__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37444: Разрешить параметры с именами
builtins.__import__()
иimportlib.__import__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37619: Разрешить параметры с именами
__add__ = str.__add__
иint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37593: Поменяйте местами параметры posonlyargs и args в конструкторе узлов
ast.parameters
.bpo-37543: Оптимизирован pymalloc для сборки без PGO.
bpo-37537: Вычисление выделенных блоков pymalloc внутри _Py_GetAllocatedBlocks(). Это замедляет работу _Py_GetAllocatedBlocks(), но дает небольшое ускорение при выполнении _PyObject_Malloc() и _PyObject_Free().
bpo-37467: Разрешить параметры с именами
sys.excepthook()
иPyErr_Display()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37433: Исправление индикатора
SyntaxError
, печатающего слишком много пробелов для многострочных строк - автор Anthony Sottile.bpo-37417:
bytearray.extend()
теперь корректно обрабатывает ошибки, возникающие во время итерации. Исправление авторства Брандта Бухера.bpo-37414: Разрешить параметры с именами
sys.callstats()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37392: Разрешить параметры с именами
sys.getcheckinterval()
иsys.setcheckinterval()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37388: Разрешить параметры с именами
open()
иstr.encode()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаПо умолчанию, для лучшей производительности, аргумент errors проверяется только при первой ошибке кодирования/декодирования, а аргумент encoding иногда игнорируется для пустых строк.
bpo-37348: Оптимизировано декодирование короткой ASCII-строки с помощью кодеков UTF-8 и ascii.
b"foo".decode()
работает примерно на 15% быстрее. Исправление от Inada Naoki.bpo-24214: Улучшена поддержка обработчика ошибок surrogatepass в инкрементных декодерах UTF-8 и UTF-16.
bpo-37330: Разрешить параметры с именами
open()
иio.open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35224: Разрешить параметры с именами
{k: v for ...}
иk
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37316: Разрешить параметры с именами
PySys_Audit()
иmmap.mmap
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37300: Удалите ненужный Py_XINCREF в classobject.c.
bpo-37269: Исправлена ошибка в оптимизаторе peephole, из-за которой некорректно обрабатывались константные условия с бинарными операторами. Исправление от Пабло Галиндо.
bpo-20443: Python теперь получает абсолютный путь к имени файла скрипта, указанному в командной строке (например, «python3 script.py»): атрибут __file__ модуля __main__ и sys.path[0] становятся абсолютными, а не относительными путями.
bpo-37257: Python’s small object allocator (
obmalloc.c
) теперь позволяет (не более чем) одной пустой арене оставаться доступной для немедленного повторного использования, не возвращая ее в ОС. Это предотвращает трэшинг в простых циклах, где арена может быть создана и уничтожена заново на каждой итерации.bpo-37231: Разрешить параметры с именами
__mul__
иx * y
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36974: Реализованы отдельные функции vectorcall для каждого соглашения о вызове встроенных функций и методов. Это улучшает производительность вызовов.
bpo-37213: Корректная обработка отрицательных смещений строк в оптимизаторе глазок. Исправление от Пабло Галиндо.
bpo-37219: Устранена ошибочная оптимизация для различий пустых множеств.
bpo-15913: Разрешить параметры с именами
PyBuffer_SizeFromFormat()
иstruct.calcsize()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36922: Разрешить параметры с именами
Py_TPFLAGS_METHOD_DESCRIPTOR
иfunction
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36974: Разрешить параметры с именами
tp_vectorcall_offset
иsuper().__call__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37160:
threading.get_native_id()
теперь также поддерживает NetBSD.bpo-37077: Добавьте поддержку
threading.get_native_id()
для AIX. Исправление от M. Feltbpo-34556: Добавьте
--upgrade-deps
в модуль venv. Автор патча: Cooper Ry Leesbpo-20523:
pdb.Pdb
поддерживает ~/.pdbrc в Windows 7. Патч от Тима Хоппера и Дэна Лидрал-Портера.bpo-35551: Обновлены кодировки: - Удалена кодировка «tis260», которая была псевдонимом для несуществующего кодека «tactis». - Добавлена кодировка «mac_centeuro» в качестве псевдонима для кодировки mac_latin2.
bpo-19072: Декоратор
classmethod
теперь может обертывать другие дескрипторы, такие как объекты свойств. Адаптировано из патча, написанного Грэмом Дамплтоном.bpo-27575: Улучшение скорости пересечения dictview за счет прямого использования логики пересечения множеств. Исправление от Дэвида Су.
bpo-30773: Запретите параллельное выполнение aclose() / asend() / athrow(). Исправьте ag_running, чтобы отразить фактический статус работы AG.
Библиотека¶
bpo-36589: Разрешить параметры с именами
curses.update_lines_cols()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38807: Разрешить параметры с именами
TypeError
иos.path.join()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38724: Добавьте repr для объектов
subprocess.Popen
. Исправление Андрея Дорощенко.bpo-38786: pydoc теперь распознает и разбирает HTTPS-адреса. Исправление от python273.
bpo-38785: Разрешить параметры с именами
__init__
иasyncio.Future
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38723: Разрешить параметры с именами
pdb
иio.open_code()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27805: Разрешить открывать трубы и другие неискомые файлы в режиме добавления с помощью
open()
.bpo-38438: Разрешить параметры с именами
argparse
иnargs="*"
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38761: WeakSet теперь зарегистрирован как collections.abc.MutableSet.
bpo-38716: logging: измените RotatingHandler namer и rotator на атрибуты уровня класса. Это не позволит __init__ устанавливать их в None в случае, если подкласс определяет их одноименными методами.
bpo-38713: Разрешить параметры с именами
os.P_PIDFD
иos.waitid()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38692: Добавьте
asyncio.PidfdChildWatcher
, специфическую для Linux реализацию дочернего наблюдателя, который опрашивает дескрипторы файлов процесса.bpo-38692: Разрешить параметры с именами
pidfd_open
иos.pidfd_open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38602: Разрешить параметры с именами
F_OFD_GETLK
иF_OFD_SETLK
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38334: Исправлен поиск назад на зашифрованном
zipfile.ZipExtFile
.bpo-38312: Разрешить параметры с именами
curses.get_escdelay()
иcurses.set_escdelay()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38586: Теперь
fileConfig()
корректно устанавливает .name загруженных обработчиков.bpo-38565: Добавьте новый метод cache_parameters() для functools.lru_cache(), чтобы улучшить поддержку pickling.
bpo-34679: asynci.ProactorEventLoop.close() теперь вызывает signal.set_wakeup_fd() только в главном потоке.
bpo-31202: Регистр, которому соответствует результат
pathlib.WindowsPath.glob()
, теперь является регистром шаблона для литеральных частей.bpo-36321: Удаление неправильно написанного атрибута. В журнале изменений версии 3.8 было отмечено, что этот атрибут будет удален в версии 3.9.
bpo-38521: Исправлено ошибочное сравнение равенств в statistics.NormalDist().
bpo-38493: Разрешить параметры с именами
CLD_KILLED
иCLD_STOPPED
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38478: Исправлена ошибка в
inspect.signature.bind()
, которая приводила к ошибке при обработке аргумента с ключевым словом, имеющим то же имя, что и позиционный параметр. Исправление от Пабло Галиндо.bpo-33604: Разрешить параметры с именами
hmac.new
иhmac.HMAC
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38378: Параметры out и in из
os.sendfile()
были переименованы в out_fd и in_fd.bpo-38417: Добавлена поддержка установки umask в дочернем процессе в модуль subprocess на POSIX-системах.
bpo-38449: Отмените PR 15522, который вносит регрессию в
mimetypes.guess_type()
из-за неправильной обработки имен файлов в качестве урлов.bpo-38431: Разрешить параметры с именами
__repr__
иdataclasses.InitVar
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38109: Разрешить параметры с именами
stat.S_IFDOOR
иstat.S_IFPORT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38422: Уточнение докстрок суффикса(ов) pathlib
bpo-38405: Вложенные подклассы
typing.NamedTuple
теперь можно выбирать.bpo-38332: Разрешить параметры с именами
KeyError
и_encoded_words.decode()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38371: Разрешить параметры с именами
split()
и_tkinter.TkappType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38341: Разрешить параметры с именами
smtplib.SMTPNotSupportedError
иsmtplib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38319: sendfile(), используемая в модулях socket и shutil, вызывала ошибку OverflowError для файлов >= 2 Гбайт на 32-битных архитектурах. (исправление от Giampaolo Rodola)
bpo-38242: Верните новый Asyncio Streams API
bpo-13153: Для преобразования между строками Python и объектами Tcl теперь используется родная кодировка ОС. Это позволяет отображать, копировать и вставлять в буфер обмена эмодзи и другие не-BMP символы. Преобразование строк из Tcl в Python и обратно теперь никогда не приводит к ошибкам (за исключением MemoryError).
bpo-38019: Корректная обработка паузы/возобновления чтения закрытой asyncio unix трубы.
bpo-38163: Теперь дочерние мки будут определять свой тип как синхронный или асинхронный, асинхронные дочерние мки будут AsyncMocks, а синхронные дочерние мки будут MagicMock или Mock (в зависимости от их родительского типа).
bpo-38161: Удаляет _AwaitEvent из AsyncMock.
bpo-38216: Разрешить параметры с именами
http.client
и bpo-30458 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28286: Откажитесь от неявного открытия
GzipFile
для записи. Всегда указывайте аргумент mode для записи.bpo-38108: Любые синхронные магические методы на AsyncMock теперь возвращают MagicMock. Любые асинхронные магические методы на MagicMock теперь возвращают AsyncMock.
bpo-38265: Разрешить параметры с именами
os.pread()
иPy_ssize_t
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38112:
compileall
имеет более высокий предел рекурсии по умолчанию и новые аргументы командной строки для работы с путями, обработки симлинков и нескольких уровней оптимизации.bpo-38248: asyncio: Исправление непоследовательной немедленной отмены задачи
bpo-38237: Аргументы для встроенной функции pow стали более описательными. Теперь их можно передавать в качестве ключевых слов.
bpo-34002: Повышение эффективности части почтового пакета за счет замены цикла while-pop на цикл for, использования isdisjoint вместо set intersections.
bpo-38191: Разрешить параметры с именами
NamedTuple
иTypedDict
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38155: Разрешить параметры с именами
__all__
иdatetime
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38185: Исправлено нечувствительное к регистру сравнение строк при индексации
sqlite3.Row
.bpo-38136: Изменяет счетчик вызовов AsyncMock и счетчик ожиданий на два разных счетчика. Теперь счетчик await count считает только время ожидания корутины, а не время ее вызова, и наоборот. Обновите документацию по этому вопросу.
bpo-37828: Исправьте имя mock по умолчанию в исключениях
unittest.mock.Mock.assert_called()
. Исправление подготовлено Абрахамом Торисом Крузом.bpo-38175: Исправление утечки памяти при сравнении объектов
sqlite3.Row
.bpo-33936: _hashlib больше не вызывает устаревшую функцию инициализации OpenSSL с OpenSSL 1.1.0+.
bpo-34706: Сохранение подклассификации в inspect.Signature.from_callable.
bpo-38153: Имена алгоритмов хэширования из OpenSSL теперь нормализованы в соответствии с соглашениями об именовании в Python. Например, OpenSSL использует sha3-512 вместо sha3_512 или blake2b512 вместо blake2b.
bpo-38115: Исправление ошибки в dis.findlinestarts(), когда она возвращала недопустимые смещения байткода. Документирование того, что co_lnotab объекта кода может содержать недопустимые смещения байткода.
bpo-38148: Добавьте слоты в транспортные классы
asyncio
, что может уменьшить использование памяти.bpo-38142: Модуль расширения _hashlib OpenSSL wrapper теперь совместим с PEP-384.
bpo-9216: конструкторы hashlib теперь поддерживают флаг usedforsecurity, сигнализирующий о том, что алгоритм хэширования не используется в контексте безопасности.
bpo-36991: Исправление потенциально некорректного исключения AttributeError, сопровождающего ZipFile.extract() в некоторых неподдерживаемых ситуациях с ошибками ввода.
bpo-38134: Удалите устаревшую копию PBKDF2_HMAC_fast. Все поддерживаемые версии OpenSSL содержат быструю реализацию.
bpo-38132: Обертка хэшлиба OpenSSL использует более простую реализацию. Исчезло несколько макросов и бессмысленных кэшей. Имя хэша теперь берется из EVP OpenSSL. Имя алгоритма осталось прежним, только теперь оно всегда в нижнем регистре.
bpo-38008: Исправьте проверку родительского класса в протоколах, чтобы правильно определять модуль, предоставляющий встроенный протокол, вместо того, чтобы считать, что все они происходят из модуля
collections.abc
.bpo-34037: Разрешить параметры с именами
asyncio
иloop.shutdown_default_executor()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37405: Исправлена ошибка регрессии для socket.getsockname() для сокетов семейства адресов AF_CAN, не относящихся к CAN_ISOTP, с возвратом 1 кортежа вместо строки.
bpo-38121: Обновите имена параметров функций в importlib.metadata в соответствии с изменениями в выпуске 0.22 importlib_metadata.
bpo-38110: Реализация os.closewalk() теперь использует API libc fdwalk() на платформах, где он доступен.
bpo-38093: Исправляет AsyncMock, чтобы он не падал при использовании с AsyncContextManagers или AsyncIterators.
bpo-37488: Разрешить параметры с именами
datetime.utctimetuple()
иdatetime.utcnow()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35640: Разрешить параметры с именами path-like object и
directory
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38086: Обновите importlib.metadata с изменениями из importlib_metadata 0.21.
bpo-37251: Разрешить параметры с именами
__code__
и__await__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38066: Скрываем внутренние методы asyncio.Stream: feed_eof(), feed_data(), set_exception() и set_transport().
bpo-38059: inspect.py теперь использует sys.exit() вместо exit()
bpo-38049: Добавлен интерфейс командной строки для модуля
ast
.bpo-37953: Разрешить параметры с именами
typing
и__hash__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38026: Разрешить параметры с именами
inspect.getattr_static()
иisinstance
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35923: Разрешить параметры с именами
importlib.machinery.BuiltinImporter
иloader._ORIGIN
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38010: Разрешить параметры с именами
importlib.metadata
иimportlib_metadata
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38006: weakref.WeakValueDictionary определяет локальную функцию remove(), используемую в качестве обратного вызова для слабых ссылок. Эта функция была создана с закрытием. Измените реализацию, чтобы избежать закрытия.
bpo-37995: В
ast.dump()
добавлена опция indent, позволяющая выводить многострочные отступы.bpo-34410: Исправлен сбой в итераторе
tee()
при повторном входе в него. Теперь в этом случае возникает ошибка RuntimeError.bpo-37140: Исправление регрессии ctypes в Python 3.8. Когда ctypes.Structure передается в функцию копированием, внутренние компоненты ctypes создавали временный объект, что приводило к двойному вызову финализатора структуры (__del__). Семантика Python требует, чтобы финализатор вызывался ровно один раз. Исправьте ctypes internals, чтобы финализатор больше не вызывался дважды.
bpo-37587:
_json.scanstring
теперь работает в 3 раза быстрее, если в строке JSON много символов с экранированием обратным слешем.bpo-37834: Предотвращение исключения shutil.rmtree при сборке на системе, отличной от Windows, без поддержки системного вызова fd, например, на старых версиях macOS.
bpo-10978: Семафоры и BoundedSemaphores теперь могут освобождать более одного ожидающего потока за раз.
bpo-37972: Разрешить параметры с именами
unittest.mock.call
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаcall().foo().__getitem__('bar')
Патч от blhsing
bpo-37965: Исправьте предупреждение компилятора C, вызванное distutils.ccompiler.CCompiler.has_function.
bpo-37964: Разрешить параметры с именами
F_GETPATH
иfcntl
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37960:
repr()
буферизованных и текстовых потоков теперь глушит только ожидаемые исключения при получении значения атрибутов «name» и «mode».bpo-37961: Добавьте поле
total_nframe
к трассам, собранным модулем tracemalloc. Это поле указывает на исходное количество кадров до того, как они были усечены.bpo-37951: Большинство функций модуля subprocess теперь снова работают в субинтерпретаторах. Только preexec_fn ограничена в субинтерпретаторах.
bpo-36205: Исправьте реализацию rusage функции time.process_time(), чтобы она корректно сообщала сумму системного и пользовательского процессорного времени.
bpo-37950: Исправьте
ast.dump()
при вызове с неполностью инициализированным узлом.bpo-34679: Восстанавливает инстанцирование циклов событий Windows IOCP из неосновного потока.
bpo-36917: Разрешить параметры с именами
ast.NodeVisitor.visit_Constant()
иvisit_Num()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37798: Обновите test_statistics.py, чтобы проверить, что модуль статистики хорошо работает как в реализации на C, так и на Python. Исправление от Donghee Na
bpo-26589: Добавлен новый код состояния в модуль http: 451 UNAVAILABLE_FOR_LEGAL_REASONS
bpo-37915: Разрешить параметры с именами
datetime.timezone
иdatetime.tzinfo
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32554: Откажитесь от вызова random.seed() для хэшей произвольных типов.
bpo-9938: Разрешить параметры с именами
exit_on_error
иArgumentParser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37851: Модуль
faulthandler
больше не выделяет свой альтернативный стек при запуске Python. Теперь стек выделяется только при первом использовании faulthandler.bpo-32793: Исправление дублирования отладочного сообщения при вызове
smtplib.SMTP.connect()
.bpo-37885: venv: Не генерировать предупреждение о неустановленной переменной при деактивации.
bpo-37868: Исправьте dataclasses.is_dataclass, когда дается экземпляр, который никогда не вызывает ошибку AttributeError в __getattr__. То есть объект, который возвращает что-то для __dataclass_fields__, даже если это не класс данных.
bpo-37811: Разрешить параметры с именами
socket
иsocket.connect(address)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37863: Оптимизации для Fraction.__hash__, предложенные Тимом Питерсом.
bpo-21131: Разрешить параметры с именами
faulthandler.register(chain=True)
иSIGSTKSZ*2
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37798: Добавьте C fastpath для statistics.NormalDist.inv_cdf() Исправление от Donghee Na
bpo-37804: Удалите устаревший метод
threading.Thread.isAlive()
. Исправление от Donghee Na.bpo-37819: Добавьте Fraction.as_integer_ratio(), чтобы найти соответствующие методы в bool, int, float и decimal.
bpo-14465: Добавьте функцию xml.etree.ElementTree.indent() для красивой печати XML-деревьев. Внесено Стефаном Бехнелем.
bpo-37810: Разрешить параметры с именами
difflib
и?
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37772: В
zipfile.Path
при добавлении неявных каталогов убедитесь, что добавляются предковые каталоги и исключаются дубликаты.bpo-18578: Разрешить параметры с именами
test.bytecode_helper
иtest.support.bytecode_helper
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34488: Разрешить параметры с именами
writelines()
иio.BytesIO
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37449: Разрешить параметры с именами
ensurepip
иimportlib.resources.read_binary()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28292: Пометьте вспомогательные функции calendar.py как приватные. Это следует руководству PEP 8 для поддержания стилевых соглашений в модуле и устраняет известный случай путаницы пользователей.
bpo-18049: Добавьте определение THREAD_STACK_SIZE для AIX в Python/thread_pthread.h Размер стека потока по умолчанию приводил к сбоям при использовании ограничения рекурсии по умолчанию Исправление от M Felt
bpo-37742: API logging.getLogger() теперь возвращает корневой логгер при передаче имени „root“, тогда как раньше он возвращал не корневой логгер с именем „root“. Это может повлиять на случаи, когда пользовательский код явно хочет получить не корневой логгер с именем „root“ или инстанцирует логгер с помощью logging.getLogger(__name__) в каком-то модуле верхнего уровня под названием „root.py“.
bpo-37738: Разрешить параметры с именами
addch(str, color_pair)
иsetcchar()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37723: Исправление регрессии производительности при разборе регулярных выражений с огромными наборами символов. Исправление от Yann Vaginay.
bpo-35943: Функция
PyImport_GetModule()
теперь гарантирует, что любой возвращаемый ею модуль полностью инициализирован. Исправление Джоанны Нанджекье.bpo-32178: Разрешить параметры с именами
email
и:
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37268: Модуль
parser
устарел и будет удален в будущих версиях Python.bpo-37685: Разрешить параметры с именами
datetime.timedelta
иdatetime.timezone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37697: Разрешить параметры с именами
importlib.metadata
и importlib_metadata 0.19 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37695: Исправление сообщения об ошибке
curses.unget_wch()
. Исправление Энтони Соттила.bpo-37689: Разрешить параметры с именами
is_relative_to()
иPurePath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29553: Исправлено
argparse.ArgumentParser.format_usage()
для взаимоисключающих групп. Исправление Эндрю Нестера.bpo-37691: Позволяет math.dist() принимать координаты в виде последовательностей (или итераций), а не просто кортежей.
bpo-37685: Разрешить параметры с именами
__eq__
и__lt__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37354: Сделайте сценарий Activate.ps1 Powershell статическим, чтобы его можно было подписать.
bpo-37664: Обновление колес в комплекте с ensurepip (pip 19.2.3 и setuptools 41.2.0)
bpo-37663: Приведите к единообразию скрипты активации оболочки venv, всегда используя __VENV_PROMPT__.
bpo-37642: Позволяет чистой Python-реализации
datetime.timezone
представлять субминутные смещения, близкие к границам минимума и максимума, в частности, в диапазонах (23:59, 24:00) и (-23:59, 24:00). Исправление от Ngalim Siregarbpo-36161: Разрешить параметры с именами
posix
иttyname_r
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36324: Сделайте внутренние атрибуты для statistics.NormalDist() частными.
bpo-37555: Разрешить параметры с именами
NonCallableMock._call_matcher
и_Call
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29446: Заставьте
from tkinter import *
импортировать только ожидаемые объекты.bpo-16970: Добавление ошибки при передаче недопустимого значения в nargs Исправление от Robert Leenders
bpo-34443: Разрешить параметры с именами
enum
и__qualname
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37491: Исправление
IndexError
при разборе заголовков электронной почты с неожиданно заканчивающимися строковыми значениями без кавычек. Исправление от Abhilash Raj.bpo-37587: Сделать json.loads быстрее для длинных строк. (Исправлено Марко Паолини)
bpo-18378: Распознать «UTF-8» как допустимое значение для LC_CTYPE в locale._parse_localename.
bpo-37579: Разрешить параметры с именами
NotImplemented
и__eq__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21478: Запись вызовов родителя при присоединении автоспецифицированного объекта к макету с помощью
unittest.mock.attach_mock()
. Исправление от Karthikeyan Singaravelan.bpo-37531: «python3 -m test -jN –timeout=TIMEOUT» теперь убивает рабочий процесс, если он работает дольше TIMEOUT секунд.
bpo-37482: Исправьте сериализацию отображаемого имени в полях адреса отправителя или получателя, содержащих как кодированные слова, так и специальные символы.
bpo-36993: Улучшено сообщение об ошибке для поврежденных zip-файлов с плохими дополнительными данными zip64. Исправление от Daniel Hillier.
bpo-37502: pickle.loads() больше не вызывает ошибку TypeError, когда аргумент buffers установлен в None
bpo-37520: Исправлено поведение zipfile.Path.parent, когда объект пути идентифицирует подкаталог.
bpo-18374: Разрешить параметры с именами
.col_offset
иast.BinOp
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37424: Исправляет возможное зависание при использовании таймаута на
subprocess.run()
при захвате вывода. Если дочерний процесс порождал своих собственных дочерних процессов или иным образом связывал свои дескрипторы stdout или stderr с другим процессом, мы могли зависнуть после достижения таймаута и убийства нашего дочернего процесса при попытке чтения конечного вывода из труб.bpo-37421: Разрешить параметры с именами
multiprocessing.util.get_temp_dir()
иget_temp_dir()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37481: Разрешить параметры с именами
bdist_wininst
иbdist_wheel
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37479: Разрешить параметры с именами
Enum.__str__
иEnum.__format__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37440: http.client теперь включает аутентификацию TLS 1.3 после рукопожатия для контекста по умолчанию или если в HTTPSConnection передан файл cert_file.
bpo-37437: Обновите версию vendorized expat до 2.2.7.
bpo-37428: SSLContext.post_handshake_auth = True больше не устанавливает флаг проверки SSL_VERIFY_POST_HANDSHAKE для клиентских соединений. Хотя эта опция документирована как игнорируемая для клиентов, OpenSSL неявно включает проверку цепочки сертификатов, когда флаг установлен.
bpo-37420: Разрешить параметры с именами
os.sched_setaffinity()
иmask
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37412: Разрешить параметры с именами
os.getcwdb()
и PEP 529 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37406: Модуль sqlite3 теперь выдает ошибку TypeError, а не ValueError, если тип аргумента операции не str: execute(), executemany() и вызов соединения.
bpo-29412: Исправление ошибки IndexError при разборе неожиданно заканчивающегося значения заголовка. Исправление от Abhilash Raj.
bpo-36546: Аргумент dist для функции statistics.quantiles() теперь является только позиционным. Текущее название не отражает того, что аргументом может быть как набор данных, так и распределение. Пометка параметра как позиционного позволяет избежать путаницы и дает возможность изменить название позже.
bpo-37394: Исправлена ошибка, приводившая к отказу модуля
queue
, если модуль ускорителя был недоступен. Исправление от Пабло Галиндо.bpo-37376: Разрешить параметры с именами
pprint
иtypes.SimpleNamespace
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26967: Разрешить параметры с именами
ArgumentParser
иallow_abbrev=False
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37212:
unittest.mock.call()
теперь сохраняет порядок аргументов ключевых слов в выводе repr. Исправление от Karthikeyan Singaravelan.bpo-37372: Исправление ошибки распаковки объектов datetime.time из Python 2 с seconds>=24. Исправление от Джастина Бланшара.
bpo-37345: Разрешить параметры с именами
hasattr(socket, 'IPPROTO_UDPLITE')
иsocket.IPPROTO_UDPLITE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37358: Оптимизация
functools.partial
с помощью vectorcall.bpo-37347: Разрешить параметры с именами
sqlite3.Connection.create_aggregate()
иsqlite3.Connection.create_function()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37163: Аргумент obj в
dataclasses.replace()
теперь только позиционный.bpo-37085: Добавляет в модуль сокета необязательные константы Linux SocketCAN Broadcast Manager, используемые в качестве флагов для настройки поведения BCM. Исправление Карла Динга.
bpo-37328:
HTMLParser.unescape
удален. Он был недокументированным и устаревшим, начиная с Python 3.4.bpo-37305: Добавьте .webmanifest -> application/manifest+json в список распознаваемых типов файлов и заголовков типов содержимого
bpo-37320: Разрешить параметры с именами
aifc.openfp()
иaifc.open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37315: Разрешить параметры с именами
5.0
иmath.factorial()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37312: Разрешить параметры с именами
_dummy_thread
иdummy_threading
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33972: Электронное письмо с одной частью, но типом содержимого
multipart/*
, больше не вызывает ошибку AttributeError.bpo-37280: Использование пула потоков для чтения из файла для режима отката sendfile.
bpo-37279: Исправление поддержки asyncio sendfile, когда sendfile отправляет дополнительные данные в режиме fallback.
bpo-19865: Разрешить параметры с именами
ctypes.create_unicode_buffer()
иwchar_t
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37266: В субинтерпретаторе порождение потока демона теперь вызывает исключение. Потоки демонов никогда не поддерживались в субинтерпретаторах. Ранее финализация субинтерпретатора завершалась с фатальной ошибкой Python, если поток демона был все еще запущен.
bpo-37210: Разрешить параметры с именами
pickle
и_pickle
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21872: Исправление
lzma
: модуль неполноценно распаковывает данные. При распаковке файла формата FORMAT_ALONE, не имеющего маркера конца, иногда не удавалось вывести от одного до десятка последних байт. Исправление от Ma Lin.bpo-35922: Разрешить параметры с именами
RobotFileParser.crawl_delay()
иRobotFileParser.request_rate()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35766: Измените формат feature_version на кортеж (major, minor).
bpo-36607: Разрешить параметры с именами
RuntimeError
иasyncio.all_tasks()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-18748: Разрешить параметры с именами
_pyio.IOBase
иclosed
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36402: Исправление состояния гонки при завершении работы Python при ожидании потоков. Ждите, пока состояние потоков Python всех недемонских потоков не будет удалено (join all non-daemon threads), а не просто ждите, пока недемонские потоки Python завершатся.
bpo-37206: Значения по умолчанию, которые не могут быть представлены как объекты Python, больше не представляются неправильно как
None
в сигнатурах функций.bpo-37111: Разрешить параметры с именами
encoding
иerrors
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-12144: Разрешить параметры с именами
expires
иCookieJar.make_cookies()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34886: Разрешить параметры с именами
subprocess.run()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37173: Сообщение об исключении для
inspect.getfile()
теперь корректно сообщает о переданном классе, а не о модуле builtins.bpo-37178: Приведите math.perm() к виду с одним аргументом, который означает то же самое, что и math.factorial().
bpo-37178: Для math.perm(n, k) пусть k по умолчанию равно n, что дает тот же результат, что и факториал.
bpo-37165: Переделал _collections._count_elements для использования клиники аргументов.
bpo-34767: Разрешить параметры с именами
collections.deque
иasyncio.Lock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37158: Ускорение работы statistics.fmean() за счет перехода от функции к генератору.
bpo-34282: Убрать метод
Enum._convert
, устаревший в версии 3.8.bpo-37150: Разрешить параметры с именами
argparse._ActionsContainer.add_argument
иtype
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28724: Разрешить параметры с именами
socket.send_fds()
иsocket.recv.fds()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35621: Поддержка запуска подпроцессов asyncio при выполнении цикла событий в потоке на UNIX.
bpo-36520: Длинные заголовки писем с символами UTF-8 теперь правильно кодируются при сворачивании. Исправление Джеффри Кинчера.
bpo-30835: Исправлена ошибка в разборе электронной почты, когда сообщение с недопустимыми байтами в content-transfer-encoding многочастного сообщения могло вызвать ошибку AttributeError. Исправление Эндрю Доннеллана.
bpo-31163: методы rename и replace экземпляра pathlib.Path теперь возвращают новый экземпляр Path.
bpo-25068:
urllib.request.ProxyHandler
теперь переводит ключи переданного словаря в нижний регистр.bpo-26185: Разрешить параметры с именами
repr()
иZipInfo
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21315: Заголовки электронной почты, содержащие кодированные слова RFC2047, разбираются, несмотря на отсутствие пробельных символов, и дефект зарегистрирован. Отсутствие пробельных символов после кодированных слов также зарегистрировано как дефект.
bpo-31904: Перенос test_datetime на VxWorks: пропуск тестов zoneinfo на VxWorks
bpo-35805: Добавьте парсер для заголовка Message-ID и добавьте его в стандартный HeaderRegistry. Это должно предотвратить складывание Message-ID с использованием кодированных слов RFC 2048.
bpo-36871: Убедитесь, что при проверке mock-объекта на вызовы методов используется подпись метода, а не подпись конструктора класса. Исправление от Karthikeyan Singaravelan.
bpo-35070: posix.getgrouplist() теперь работает корректно, если пользователь принадлежит к дополнительным группам NGROUPS_MAX. Исправление Джеффри Кинчера.
bpo-31783: Исправление состояния гонки в ThreadPoolExecutor, когда рабочие потоки создаются при завершении работы интерпретатора.
bpo-36582: Разрешить параметры с именами
UserString.encode()
иbytes
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32424: Утрачиваем xml.etree.ElementTree.Element.copy() в пользу copy.copy().
Патч Гордона П. Хемсли
bpo-36564: Исправление бесконечного цикла в логике сворачивания заголовков электронной почты, который срабатывал, когда максимальная длина_строки_политики электронной почты была недостаточно длинной, чтобы включить в сообщение необходимую разметку и любые значения. Исправление от Paul Ganssle
bpo-36543: Удалены методы Element.getchildren(), Element.getiterator() и ElementTree.getiterator() и модуль xml.etree.cElementTree.
bpo-36409: Удалите старый API plistlib, устаревший в Python 3.4
bpo-36302: distutils сортирует списки исходных файлов так, чтобы файлы Extension .so по умолчанию собирались более воспроизводимо
bpo-36250: Разрешить параметры с именами
ValueError
иsignal
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36046: Разрешить параметры с именами
user
иgroup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32627: Исправление ошибки компиляции при конфликте включенных заголовков
_uuid
.bpo-35800: Утратить
smtpd.MailmanProxy
, готовый к удалению в будущем.bpo-35168:
shlex.shlex.punctuation_chars
теперь является свойством, доступным только для чтения.bpo-8538: Разрешить параметры с именами
--foo
и--no-foo
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20504: Разрешить параметры с именами
cgi
иContent-Length
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25988: Разрешить параметры с именами
collections.abc
иcollections
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-11122: Distutils не будет проверять наличие rpmbuild только в указанных путях.
bpo-34775: Обработка разделения PurePath теперь возвращает NotImplemented вместо того, чтобы вызывать ошибку TypeError, когда передается что-то, отличное от экземпляра str или PurePath. Исправление Роджера Айуди.
bpo-34749:
binascii.a2b_base64()
теперь работает в 2 раза быстрее. Патч от Сергея Федосеева.bpo-34519: Добавлены дополнительные псевдонимы для HP Roman 8. Исправление от Michael Osipov.
bpo-28009: Исправление uuid.getnode() на платформах с „.“ в качестве разделителя MAC Addr, а также исправление для формата MAC Addr, который опускает ведущий 0 в значениях MAC Addr. В настоящее время AIX - единственная известная платформа с такими настройками. Исправление сделано Майклом Фелтом.
bpo-30618: Добавить
readlink()
. Патч от Гиртса Фолкманиса.bpo-32498: Заставил
urllib.parse.unquote()
принимать байты в дополнение к строкам. Исправление Стейна Карлсена.bpo-33348: Разрешить параметры с именами
*
и**
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32689: Обновите функцию
shutil.move()
, чтобы разрешить использование объектов Path в качестве исходного аргумента. Исправление Эмили Морхаус и Максвелла «5.13b» Маккиннона.bpo-32820: Добавлено
__format__
в классы IPv4 и IPv6. Всегда выводит полностью заполненную нулями строку. Поддерживает модификаторы b/x/n (bin/hex/родной формат). Родной формат для IPv4 - bin, родной формат для IPv6 - hex. Также поддерживает модификаторы „#“ и „_“.bpo-27657: Исправьте urllib.parse.urlparse() с числовыми путями. Строка типа «path:80» теперь разбирается не как путь, а как схема («path») и путь («80»).
bpo-4963: Исправлено недетерминированное поведение, связанное с отображением расширения mimetypes и повторной инициализацией модуля.
Документация¶
bpo-21767: Явное упоминание поддержки abc в functools.singledispatch
bpo-38816: Разрешить параметры с именами
fork()
иfork()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38351: Модернизируйте примеры
email
с %-форматирования на f-строки.bpo-38778: Разрешить параметры с именами
RuntimeError
иos.fork()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38592: Добавьте бразильский португальский в переключатель языков на сайте Python Documentation.
bpo-38294: Добавьте список символов, которые больше не будут экранироваться, в документацию re.escape
bpo-38053: Модернизирована документация по plistlib
bpo-26868: Исправьте пример использования
PyModule_AddObject()
для правильной обработки ошибок.bpo-36797: Исправление неработающей ссылки в справочнике по API distutils.
bpo-37977: Предупреждайте сильнее и четче о небезопасности огурцов
bpo-37979: Добавлена ссылка на dateutil.parser.isoparse в документации по datetime.fromisoformat. Исправление от Paul Ganssle
bpo-12707: Утрачиваем методы info(), geturl(), getcode() в пользу свойств headers, url и status, соответственно, для HTTPResponse и addinfourl. Также устаревает атрибут code для addinfourl в пользу атрибута status. Исправление от Ashwin Ramaswami
bpo-37937: Разрешить параметры с именами
frame.f_trace
иsys.settrace()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37878: Сделать
PyThreadState_DeleteCurrent()
Внутренний.bpo-37759: Начало редактирования Whatsnew 3.8
bpo-37726: Перестаньте рекомендовать getopt в руководстве по разбору аргументов командной строки и продвигайте argparse.
bpo-32910: Удалите специфическое для реализации поведение того, как работает деактивация venv.
bpo-37256: Разрешить параметры с именами
Request
иurllib.request
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37284: Добавить краткое примечание, указывающее на то, что любые новые
sys.implementation
требуемые атрибуты должны пройти через процесс PEP.bpo-30088: Документировано, что конструктор
mailbox.Maildir
не пытается проверить корректность расположения папки maildir. Исправление Святослава Сидоренко.bpo-37521: Исправьте примеры
importlib
, чтобы все вновь созданные модули с помощью importlib.util.module_from_spec() сразу вставлялись в sys.modules, а не после вызова loader.exec_module().Спасибо Бенджамину Минцу за обнаружение ошибки.
bpo-37456: Слеш („/“) теперь является частью синтаксиса.
bpo-37487: Исправьте описание индекса PyList_GetItem, чтобы он включал 0.
bpo-37149: Замените неработающую ссылку на справочник по Tkinter 8.5 Джона Шипмана, New Mexico Tech, ссылкой на копию archive.org.
bpo-37478: В описание функции os.chdir() добавлены возможные исключения.
bpo-34903: Документировано, что в
datetime.datetime.strptime()
ведущий ноль в некоторых двузначных форматах является необязательным. Исправление Майка Глина.bpo-36260: Добавьте «подводные камни» распаковки в документацию модуля zipfile.
bpo-37004: В документацию к difflib добавлено примечание, явно предупреждающее о том, что результаты метода отношения SequenceMatcher могут зависеть от порядка входных строк.
bpo-36960: Реструктурирована документация
datetime
с целью сделать ее более удобной для пользователя и улучшить читабельность. Исправление Брэда Соломона.bpo-36487: Проясните в документации по C-API, что такое «основной» интерпретатор.
bpo-23460: Документация по форматированию десятичных строк с помощью спецификатора
:g
была обновлена, чтобы отразить правильную точку отсечения экспоненциальной нотации. Автор оригинального патча - Туомас Суутари.bpo-35803: Разрешить параметры с именами
tempfile
и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33944: Добавлено примечание о предполагаемом использовании кода в файлах .pth.
bpo-34293: Исправление Doc/Makefile относительно переменной окружения PAPER и сборок PDF
bpo-25237: Добавьте документацию для модулей tkinter
Тесты¶
bpo-38614: Исправьте test_communicate() из test_asyncio.test_subprocess: используйте
support.LONG_TIMEOUT
(5 минут), а не просто 1 минуту.bpo-38614: Разрешить параметры с именами
test.support
иLOOPBACK_TIMEOUT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38502: Разрешить параметры с именами
os.setsid()
иos.killpg()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35998: Исправьте состояние гонки в test_asyncio.test_start_tls_server_1(). Ранее существовало состояние гонки между функцией test main(), которая заменяет протокол, и тестовым протоколом ServerProto, который отправляет ANSWER после получения HELLO. Теперь только функция test main() отвечает за отправку данных, ServerProto больше не отправляет данные.
bpo-38470: Исправление
test_compileall.test_compile_dir_maxlevels()
на Windows без поддержки длинных путей: создание только 3 подкаталогов вместо от 20 до 100 подкаталогов.bpo-37531: По таймауту regrtest больше не пытается снова вызвать
popen.communicate()
: он может висеть до тех пор, пока не завершатся все дочерние процессы, использующие каналы stdout и stderr. Убейте рабочий процесс и проигнорируйте его вывод. Измените также таймаут faulthandler главного процесса с 1 минуты до 5 минут, для самых медленных билдботов Python.bpo-38239: Исправление test_gdb для сборок Link Time Optimization (LTO).
bpo-38275: test_ssl теперь лучше справляется с отключенными версиями TLS/SSL. Криптографическая политика OpenSSL и настройки времени выполнения распознаются, и тесты для отключенных версий пропускаются. Тесты также принимают больше минимальных_версий TLS для платформ, которые переопределяют стандартные строгие настройки OpenSSL.
bpo-38271: Закрытые ключи для test_ssl были зашифрованы с помощью 3DES в традиционном формате PKCS#5. 3DES и алгоритм дайджеста PKCS#5 блокируются некоторыми строгими криптополитиками. Вместо этого используйте формат PKCS#8 с шифрованием AES256.
bpo-38270: test.support теперь имеет вспомогательную функцию для проверки доступности функции хэш-дайджеста. Несколько тестов рефакторингуются, избегая MD5 и используя вместо него SHA256. Другие тесты помечены для использования MD5 и пропускаются, когда MD5 отключен.
bpo-37123: Многопроцессорный тест test_mymanager() теперь также ожидает -SIGTERM, а не только exitcode 0. BaseManager._finalize_manager() посылает SIGTERM процессу менеджера, если его остановка занимает более 1 секунды, что случается на медленных билдботах.
bpo-38212: Многопроцессорные тесты: увеличьте таймаут test_queue_feeder_donot_stop_onexc() с 1 до 60 секунд.
bpo-38117: Тест с OpenSSL 1.1.1d
bpo-38018: Увеличение покрытия кода для multiprocessing.shared_memory.
bpo-37805: Добавлены тесты для json.dump(…, skipkeys=True). Исправление от Donghee Na.
bpo-37531: Улучшение таймаута многопроцессного regrtest: запись сообщения при убийстве рабочего процесса, отлов исключений popen.kill() и popen.wait(), установка таймаута на второй вызов popen.communicate().
bpo-37876: Добавьте тесты для кодека ROT-13.
bpo-36833: Разрешить параметры с именами
PyDateTime_xxx_GET_xxx()
иdatetime
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37558: Исправьте обработку имен test_shared_memory_cleaned_after_process_termination
bpo-37526: Разрешить параметры с именами
test.support.catch_threading_exception()
иthreading.Thread
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37421: test_concurrent_futures теперь явно останавливает экземпляр ForkServer, если он запущен.
bpo-37421: тесты многопроцессорности теперь останавливают экземпляр ForkServer, если он запущен: закрывают дескриптор файла «alive», чтобы попросить сервер остановиться, а затем удаляют его UNIX-адрес.
bpo-37421: test_distutils.test_build_ext() теперь может удалять временный каталог в Windows: не импортируйте только что собранное расширение C («xx») в текущий процесс, а тестируйте его в отдельном процессе.
bpo-37421: test_concurrent_futures теперь очищает мультипроцессинг, чтобы сразу удалить временные каталоги, созданные multiprocessing.util.get_temp_dir().
bpo-37421: test_winconsoleio больше не сливает временный файл: используйте tempfile.TemporaryFile(), чтобы удалить его по завершении теста.
bpo-37421: многопроцессорные тесты теперь явно вызывают
_run_finalizers()
для немедленного удаления временных каталогов, созданных тестами.bpo-37421: Разрешить параметры с именами
urlcleanup()
иurlretrieve()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37472: Удалить
Lib/test/outstanding_bugs.py
.bpo-37199: Исправление сбоев при тестировании, когда IPv6 недоступен или отключен.
bpo-19696: Замените устаревший метод «random.choose» на «random.choice» в файле «test_pkg_import.py».
bpo-37335: Удалите больше не нужный код из тестов на принудительное использование локали c
bpo-37421: Исправьте test_shutil, чтобы он больше не сливал временные файлы.
bpo-37411: Исправьте test_wsgiref.testEnviron(), чтобы она больше не зависела от переменных окружения (не выходила из строя, если установлена переменная «X»).
bpo-37400: Исправьте test_os.test_chown(): для получения групп используйте os.getgroups(), а не grp.getgrall(). Переименуйте также тест в test_chown_gid().
bpo-37359: Разрешить параметры с именами
test_python_*
иpython3 -m test --cleanup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37362: test_gdb больше не терпит неудачу, если получает «неожиданное» сообщение на stderr: теперь он игнорирует stderr. Цель test_gdb - проверить, что команды python-gdb.py работают так, как ожидается, а не тестировать gdb.
bpo-35998: Avoid TimeoutError in test_asyncio: test_start_tls_server_1()
bpo-37278: Исправьте test_asyncio ProactorLoopCtrlC: присоединяйтесь к потоку, чтобы предотвратить утечку запущенного потока и утечку ссылки.
bpo-37261: Разрешить параметры с именами
test.support.catch_unraisable_exception()
иunraisable
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37069: regrtest теперь использует
sys.unraisablehook()
, чтобы пометить тест как «измененный в окружении» (ENV_CHANGED), если он выдает «неустранимое исключение». Кроме того, в этом случае regrtest записывает в журнал предупреждение.Используйте
python3 -m test --fail-env-changed
для перехвата невыполнимых исключений в тестах.bpo-37252: Разрешить параметры с именами
test_close
иtest_events_mask_overflow
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37169: Перепишите
_PyObject_IsFreed()
модульные тесты.bpo-37153: Разрешить параметры с именами
test_venv.test_multiprocessing()
иpool.terminate()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34001: Заставьте test_ssl работать с LibreSSL. LibreSSL обрабатывает минимальную и максимальную версию TLS иначе, чем OpenSSL.
bpo-36919: Сделайте реализацию
test_source_encoding.test_issue2301
независимой. Теперь тест будет работать как для CPython, так и для IronPython.bpo-30202: Разрешить параметры с именами
test.test_importlib.test_abc
иfind_spec()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28009: Измените логику test_uuid, чтобы проверить, когда программа доступна И может быть использована для получения MACADDR в качестве основы для UUID. Исправление от M. Felt
bpo-34596: Возврат к причине по умолчанию, когда
unittest.skip()
не вызывается. Исправление от Naitree Zhu.
Построить¶
bpo-38809: В Windows скрипты сборки теперь распознают и используют python.exe из активной виртуальной среды.
bpo-38684: Исправьте сборку _hashlib, когда Blake2 отключен, но OpenSSL его поддерживает.
bpo-38468: Разрешить параметры с именами
getvar()
иsysconfig.get_config_var()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37415: Исправьте проверку заголовка stdatomic.h для компилятора ICC: в реализации ICC отсутствует тип atomic_uintptr_t, который необходим Python.
bpo-38301: В семействе Solaris мы должны обязательно использовать
-D_REENTRANT
. Исправление от Jesús Cea Avión.bpo-36002: Разрешить параметры с именами
llvm-profdata
иllvm-ar
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37936: Файл
.gitignore
систематически сохраняет «укорененные», с непереходящим слешем, все правила, которые должны применяться к файлам в определенном месте репозитория. Раньше, когда нужный файл игнорировался в корне репозитория, мы чаще всего случайно игнорировали также файлы и каталоги с тем же именем в любом месте дерева.bpo-37760: Разрешить параметры с именами
Tools/unicode/makeunicodedata.py
иstr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37936: Файл
.gitignore
больше не применяется к файлам, которые на самом деле отслеживаются в Git-репозитории. Исправление Грега Прайса.bpo-37725: Измените цель makefile «clean», чтобы он также очищал данные программной оптимизации (PGO). Раньше приходилось использовать «make clean» и «make profile-removal», или «make clobber».
bpo-37707: Пометить некоторые отдельные тесты для пропуска при использовании –pgo. Отмеченные тесты значительно увеличивают время выполнения задачи PGO и, скорее всего, не помогут улучшить оптимизацию конечного исполняемого файла.
bpo-36044: Уменьшить количество юнит-тестов, выполняемых для задачи генерации PGO. Это ускоряет задачу примерно в 15 раз. Запуск полного набора юнит-тестов является медленным. Это изменение может привести к несколько менее оптимизированной сборке, так как будет выполняться не так много ветвей кода. Если вы готовы ждать более медленной сборки, старое поведение можно восстановить с помощью „./configure […] PROFILE_TASK=«-m test –pgo-extended»“. Мы не даем никаких гарантий относительно того, какой набор задач PGO приведет к более быстрой сборке. Пользователям, которым это важно, следует провести собственные бенчмарки, поскольку результаты могут зависеть от окружения, рабочей нагрузки и цепочки инструментов компилятора.
bpo-37468: Разрешить параметры с именами
make install
иwininst-*.exe
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37189: Разрешить параметры с именами
PyRun_XXX()
иPyRun_String()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25361: Разрешает использование инструкций SSE2 в 32-битной сборке Windows.
bpo-36210: Обновление обнаружения дополнительных модулей расширения для AIX. ossaudiodev и spwd не применимы для AIX и больше не сообщаются как отсутствующие. Сторонняя упаковка ncurses (с поддержкой ASIS) конфликтует с официально поддерживаемой библиотекой AIX curses, поэтому настройте AIX на использование libcurses.a. Однако пропустите попытку собрать _curses_panel.
патч от M Felt
Windows¶
bpo-38589: Исправление ярлыка справки HTML, когда Windows не установлена на диск C
bpo-38453: Убедитесь, что ntpath.realpath() правильно разрешает относительные пути.
bpo-38519: Восстанавливает внутренние заголовки C, которые отсутствовали в пакетах nuget.org и Microsoft Store.
bpo-38492: Удалите
pythonw.exe
зависимость от среды выполнения Microsoft C++.bpo-38344: Исправьте сообщение об ошибке в файле activate.bat
bpo-38359: Убедитесь, что программа запуска
pyw.exe
читает правильный ключ реестра.bpo-38355: Разрешить параметры с именами
ntpath.realpath
иsys.executable
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38117: Обновление поставляемого OpenSSL до версии 1.1.1d
bpo-38092: Снижение накладных расходов при использовании многопроцессорной обработки в виртуальной среде Windows.
bpo-38133: Позволяет программе запуска py.exe находить установки из Microsoft Store и улучшает отображение активных виртуальных сред.
bpo-38114:
pip.ini
больше не входит в пакет Nuget.bpo-32592: Установите Windows 8 в качестве минимально необходимой версии для поддержки API
bpo-36634:
os.cpu_count()
теперь возвращает активные, а не максимальные процессоры.bpo-36634: venv activate.bat теперь работает, когда существующие переменные содержат символы двойных кавычек.
bpo-38081: Разрешить параметры с именами
os.path.realpath()
и'NUL'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38087: Исправьте чувствительность к регистру в test_pathlib и test_ntpath.
bpo-38088: Исправляет проблему, когда distutils не находил vcruntime140.dll при установленном только наборе инструментов v142.
bpo-37283: Убедитесь, что настройки командной строки и unattend.xml отменяют ранее обнаруженные состояния в программе установки Windows.
bpo-38030: Исправление
os.stat()
сбоев в работе блочных устройств на Windowsbpo-38020: Разрешить параметры с именами
os.readlink()
иrealpath()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37705: Улучшите реализацию
winerror_to_errno()
.bpo-37549:
os.dup()
больше не работает для стандартных потоков на Windows 7.bpo-1311: Разрешить параметры с именами
nul
иexists()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-9949: Включите поддержку следующих симлинков в
os.realpath()
.bpo-37834: Разрешить параметры с именами
os.lstat()
иos.stat()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36266: Добавление имени модуля в форматированное сообщение об ошибке, когда происходит сбой загрузки DLL при импорте модуля в
_PyImport_FindSharedFuncptrWindows()
. Исправление от Srinivas Nyayapati.bpo-25172: Разрешить параметры с именами
crypt
иImportError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37778: Исправлены значки, используемые для ассоциаций файлов с пакетом Microsoft Store.
bpo-37734: Исправьте использование значений реестра для запуска Python из приложения Microsoft Store.
bpo-37702: Исправление утечки памяти в Windows при создании объекта SSLContext или запуске
urllib.request.urlopen('https://...')
.bpo-37672: Разрешить параметры с именами
pip.ini
иPIP_USER
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-10945: Официальный отказ от поддержки создания инсталляторов bdist_wininst на системах, отличных от Windows.
bpo-37445: Разрешить параметры с именами
FORMAT_MESSAGE_IGNORE_INSERTS
иFormatMessageW()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37369: Исправлен путь для
sys.executable
при запуске из Microsoft Store.bpo-37380: Не собирайте незавершенные процессы с
subprocess._active
в Windows, чтобы очистить их позже. Исправление Руслана Куприева.bpo-37351: Удаляет libpython38.a из стандартного дистрибутива Windows.
bpo-35360: Обновите сборки Windows для использования SQLite 3.28.0.
bpo-37267: В Windows
os.dup()
больше не создает наследуемый fd при работе с символьным файлом.bpo-36779: Убедитесь, что
time.tzname
корректен в Windows, когда активная кодовая страница установлена в CP_UTF7 или CP_UTF8.bpo-32587: Сделайте
winreg.REG_MULTI_SZ
поддерживающим строки нулевой длины.bpo-28269: Разрешить параметры с именами
strcasecmp()
и_stricmp()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36590: Добавьте встроенную поддержку Bluetooth RFCOMM в модуль сокетов.
macOS¶
bpo-38117: Обновление OpenSSL до версии 1.1.1d в программе установки macOS.
bpo-38089: Переведите Azure Pipelines на последние версии VM и сделайте тесты для macOS необязательными
bpo-18049: Увеличьте размер стека потоков по умолчанию с 5 МБ до 16 МБ на macOS, чтобы он соответствовал размеру стека главного потока. Это позволит избежать сбоев при глубокой рекурсии в потоках.
bpo-34602: Избегайте сбоев в тестовом наборе на macOS, больше не вызывая resource.setrlimit для увеличения размера стека процесса во время выполнения. Изменение во время выполнения больше не требуется, поскольку интерпретатор собирается с большим размером стека по умолчанию.
bpo-35360: Обновите программу установки macOS для использования SQLite 3.28.0.
bpo-34631: Обновление OpenSSL до версии 1.1.1c в программе установки macOS.
IDLE¶
bpo-26353: Прекратите добавлять новую строку при сохранении окна оболочки IDLE.
bpo-4630: Добавляет опцию переключения мигания курсора IDLE для окон оболочки, редактора и вывода. Смотрите Settings, General, Window Preferences, Cursor Blink. Исправление от Zackery Spytz.
bpo-38598: Не пытайтесь компилировать оболочку IDLE или окна вывода
bpo-36698: IDLE больше не терпит неудач при записи некодируемых символов в stderr. Теперь он экранирует их обратным слешем, как обычный интерпретатор Python. Добавлено поле
errors
в стандартные потоки.bpo-35379: При выходе из IDLE перехватывайте любую ошибку AttributeError. Одна из них возникает, когда EditorWindow.close вызывается дважды. Выводить обратную трассировку при запуске IDLE из терминала бесполезно и раздражает.
bpo-38183: Чтобы избежать проблем, test_idle игнорирует каталог пользовательских конфигураций. Он больше не пытается создать или получить доступ к .idlerc или любым файлам в нем. Пользователи должны запустить IDLE, чтобы обнаружить проблемы с сохранением настроек.
bpo-38077: IDLE больше не добавляет „argv“ в пространство имен пользователя при инициализации. Эта ошибка затрагивала только версии 3.7.4 и 3.8.0b2 - 3.8.0b4.
bpo-38041: Строки перезапуска оболочки теперь заполняют всю ширину окна, всегда начинаются с „=“ и не заворачиваются без необходимости. Строка по-прежнему будет заворачиваться, если имя включенного файла длинное относительно ширины.
bpo-35771: Чтобы избежать случайных сбоев test_idle на медленных машинах, увеличьте значение
hover_delay
в test_tooltip.bpo-37824: Правильно обрабатывайте предупреждения о вводе данных пользователем в оболочке IDLE. Прекратите превращать SyntaxWarnings в SyntaxErrors.
bpo-37929: Диалог настроек IDLE теперь корректно закрывается при отсутствии окна оболочки.
bpo-37902: Добавляет прокрутку колесиком мыши для браузеров модулей, путей и стеков IDLE. Исправление Джорджа Чжана.
bpo-37849: Исправлено появление слишком высокого или низкого списка завершений, когда он отображался над текущей строкой.
bpo-36419: Рефакторинг автозаполнения IDLE и улучшение тестирования.
bpo-37748: Измените порядок меню «Выполнить». Поместите самый распространенный выбор, «Запустить модуль», в начало.
bpo-37692: Улучшен пример конфигурации подсветки с примером взаимодействия с оболочкой и улучшенными метками для элементов оболочки.
bpo-37628: Диалог настроек больше не расширяется с увеличением размера шрифта.
bpo-37627: Инициализирует диалоговое окно Customize Run с аргументами командной строки, которые были введены в последний раз. По желанию пользователь может отредактировать их перед отправкой.
bpo-33610: Исправление того, что контекст кода не показывал правильный контекст при первом включении.
bpo-37530: Оптимизация контекста кода для уменьшения ненужной фоновой активности. Изменения шрифта и выделения теперь происходят вместе с изменением текста, а не со случайной задержкой.
bpo-27452: Разрешить параметры с именами
config.py
иRemoveFile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37325: Исправлен порядок обхода фокуса вкладки для диалогов источника справки и пользовательского запуска.
bpo-37321: Оба сообщения об ошибках подключения к подпроцессам теперь ссылаются на раздел „Startup failure“ документа IDLE.
bpo-17535: Добавляет необязательные номера строк для окон редактора IDLE. Окна открываются без номеров строк, если не установлено иное на вкладке Общие диалогового окна конфигурации.
bpo-26806: Чтобы компенсировать стековые кадры, добавляемые IDLE, и избежать возможных проблем с низкими лимитами рекурсии, добавьте 30 к лимитам в процессе выполнения пользовательского кода. Вычитайте 30 при сообщении о пределах рекурсии, чтобы сделать это добавление в основном прозрачным.
bpo-37177: Правильно «прикрепляйте» диалоги поиска к главному окну, чтобы они вели себя как другие диалоги и не прятались за главным окном.
bpo-37039: Настройте «Высоту масштабирования» для отдельных экранов, мгновенно увеличив окно при первом использовании конкретного экрана. Изменение настроек экрана может привести к отмене сохраненной высоты. Пока окно максимизировано, «Высота масштаба» не действует.
bpo-35763: Сделайте напоминание о том, что „/“ означает только позиционное значение, менее навязчивым, добавляя его только тогда, когда есть место в первой строке.
bpo-5680: Добавьте „Run… Customized» в меню Run для запуска модуля с пользовательскими настройками. Все введенные «аргументы командной строки» добавляются в sys.argv. Можно подавить обычный перезапуск главного модуля Shell.
bpo-36390: Соберите функции меню Format в format.py. Объедините методы paragraph.py, rstrip.py и format из editor.py.
Инструменты/демоверсии¶
bpo-38118: Обновите файл подавления Valgrind, чтобы игнорировать ложное срабатывание в
PyUnicode_Decode()
при использовании встроенной в GCC функции strcmp().bpo-38347: pathfix.py: При рекурсивной работе считать, что все файлы, заканчивающиеся на „.py“, являются скриптами Python.
bpo-37803: Разрешить параметры с именами
--help
и--version
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37942: Улучшен конвертер ArgumentClinic для плавающих чисел.
bpo-37704: Удалить
Tools/scripts/h2py.py
: используйте cffi для доступа к C API в Python.bpo-37675: 2to3 теперь работает при запуске из заархивированной стандартной библиотеки.
bpo-37034: Argument Clinic теперь использует имя аргумента при ошибках с аргументом, содержащим только ключевое слово, вместо его позиции. Автор исправления - Rémi Lapeyre.
bpo-37064: Добавьте опцию -k к сценарию pathscript.py: сохранять флаги шебанга. Добавьте опцию -a к сценарию pathscript.py: добавить флаги.
C API¶
bpo-37633: Переэкспортируйте некоторые обертки совместимости функций для макросов в
pythonrun.h
.bpo-38644: Разрешить параметры с именами
Py_EnterRecursiveCall()
иPy_LeaveRecursiveCall()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38650: Глобальная переменная
PyStructSequence_UnnamedField
теперь является константой и ссылается на постоянную строку.bpo-38540: Разрешить параметры с именами
PyArg_Parse()
и"es#"
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38395: Исправление сбоя в объектах
weakref.proxy
из-за некорректного управления временем жизни при вызове некоторых связанных методов, которые могут удалить последнюю ссылку на объект, на который ссылается прокси. Исправление от Pablo Galindo.bpo-36389: Разрешить параметры с именами
_PyObject_CheckConsistency()
иvisit_decref()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38266: Верните удаление PyThreadState_DeleteCurrent() с документацией.
bpo-38303: Обновление модуля расширения audioop для использования стабильного ABI (PEP-384). Исправление от Тайлера Кифта.
bpo-38234: Разрешить параметры с именами
Py_SetPath()
иsys.executable
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38234: Разрешить параметры с именами
Py_SetPath()
иPy_SetPythonHome()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38205: Разрешить параметры с именами
Py_UNREACHABLE()
иPy_FatalError()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-38140: Сделайте смещения dict и weakref непрозрачными для типов кучи C, передавая смещения через PyMemberDef
bpo-15088: Разрешить параметры с именами
PyGen_NeedsFinalizing
и PEP 442 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36763: Разрешить параметры с именами
PySys_AddXOption()
иPyConfig.xoptions
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37926: Исправление сбоя в
PySys_SetArgvEx(0, NULL, 0)
.bpo-37879: Исправьте subtype_dealloc, чтобы он не выдавал decref типа, когда базовый тип является типом кучи C
bpo-37645: Добавьте
_PyObject_FunctionStr()
, чтобы получить удобное строковое представление объекта, похожего на функцию. Исправление от Jeroen Demeyer.bpo-29548: Разрешить параметры с именами
PyEval_CallObject
иPyEval_CallFunction
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37151: Разрешить параметры с именами
PyCFunction_Call
иPyObject_Call()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37540: Протокол vectorcall теперь требует, чтобы вызывающая сторона передавала только строки в качестве имен ключевых слов.
bpo-37207: Разрешить параметры с именами
type
иtp_vectorcall
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21120: Исключите Python-ast.h, ast.h и asdl.h из ограниченного API.
bpo-37483: Добавьте новую функцию
_PyObject_CallOneArg
для вызова объекта с одним позиционным аргументом.bpo-36763: Добавить функцию
PyConfig_SetWideStringList()
.bpo-37337: Разрешить параметры с именами
_PyObject_VectorcallMethod()
и_PyObject_CallMethodNoArgs()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28805: Соглашение о вызове
METH_FASTCALL
было задокументировано.bpo-37221: Разрешить параметры с именами
PyCode_NewWithPosOnlyArgs()
иPyCode_New()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37215: Исправление проблемы с dtrace, введенной bpo-36842
bpo-37194: Разрешить параметры с именами
PyObject_CallNoArgs()
иPyObject_CallFunctionObjArgs(func, NULL)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37170: Исправьте ошибку с броском в
PyLong_AsUnsignedLongLongMask()
.bpo-35381: Разрешить параметры с именами
DirEntryType
иScandirIteratorType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34331: Используйте существительное единственного/ множественного числа в сообщении об ошибке при инстанцировании абстрактного класса с непереопределенным абстрактным методом(ами).
Python 3.8.0 beta 1¶
Дата выхода: 2019-06-04
Безопасность¶
bpo-35907: Разрешить параметры с именами CVE-2019-9948 и
local-file://
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33529: Предотвращает бесконечный цикл функции fold, используемой при кодировании заголовков электронной почты, когда в заголовке слишком много символов, отличных от ASCII.
bpo-33164: Обновлена реализация blake2, которая использует безопасную реализацию memset, предоставляемую платформой.
Ядро и встроенные модули¶
bpo-35814: Разрешите распаковку в правой части аннотированных назначений. В частности, теперь разрешено использовать
t: Tuple[int, ...] = x, y, *z
.bpo-37126: Все объекты structseq теперь отслеживаются сборщиком мусора. Исправление от Пабло Галиндо.
bpo-37122: Сделать атрибут co_argcount объектов кода представляющим общее количество позиционных аргументов (включая только позиционные аргументы). Значение co_posonlyargcount может быть использовано для различения аргументов, которые являются только позиционными, а разница (co_argcount - co_posonlyargcount) - это количество позиционных аргументов или аргументов-ключей. Исправление от Pablo Galindo.
bpo-20092: Разрешить параметры с именами
int
иfloat
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37087: Добавляет поддержку нативного идентификатора потока (TID) в OpenBSD.
bpo-26219: Разрешить параметры с именами
LOAD_GLOBAL
иLOAD_GLOBAL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37072: Исправление сбоя в PyAST_FromNodeObject(), когда флаги равны NULL.
bpo-37029: Освобождение большого количества мелких объектов могло занимать время, квадратичное от числа арен, из-за использования линейного поиска для сохранения списка пригодных арен
obmalloc.c
, отсортированного в порядке убывания числа свободных пулов памяти. Теперь это делается без поиска, и время в худшем случае остается линейным по числу арен. Для программ, в которых это имеет заметное значение (обычно с более чем 100 тысячами одновременно существующих мелких объектов), это может значительно сократить время освобождения памяти.bpo-26423: Разрешить параметры с именами
wrap_lenfunc()
иsizeof(long) < sizeof(Py_ssize_t)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37050: Улучшите AST для «отладочных» f-строк, которые используют „=“ для вывода источника вычисляемого выражения. Удалите expr_text из узла FormattedValue, а вместо него используйте узел Constant string (возможно, объединенный с соседними константными выражениями внутри f-строки).
bpo-22385: Разрешить параметры с именами
bytes.hex
иbytearray.hex
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26836: Добавить
os.memfd_create()
.bpo-37032: Разрешить параметры с именами
replace()
иtypes.CodeType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37007: Разрешить параметры с именами
socket.if_nameindex()
иsocket.if_nametoindex()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36829: Разрешить параметры с именами
PyErr_WriteUnraisable()
иPyErr_NormalizeException()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36878: Разрешить параметры с именами
# type: ignore
и# type: ignoreé
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36878: Разрешить параметры с именами
# type: ignore
и# type: ignore[E1000]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-2180: Рассматривайте продолжение строки в EOF как
SyntaxError
by Anthony Sottile.bpo-36907: Разрешить параметры с именами
f(**kwargs)
иkwargs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36946: Исправление возможного переполнения знаковых целых чисел при работе с фрагментами.
bpo-36826: Добавьте поддержку вида NamedExpression в ast_unparse.c
bpo-1875: Теперь при появлении синтаксических ошибок в блоках кода, которые будут оптимизированы (например, если условия всегда ложны), возникает сообщение
SyntaxError
. Исправление Пабло Галиндо.bpo-36027: Разрешить вычисление модульных инверсий через трехаргументные
pow
: теперь второй аргумент может быть отрицательным в случае, когда первый и третий аргументы относительно просты.bpo-36861: Обновление базы данных Unicode до версии 12.1.0.
bpo-28866: Избегайте кэширования атрибутов классов, тип которых определяет mro(), чтобы избежать проблемы недействительности кэша.
bpo-36851: Стек
FrameType
теперь корректно очищается, если выполнение завершается возвратом и стек не пуст.bpo-34616: Разрешить параметры с именами
compile()
иast.PyCF_ALLOW_TOP_LEVEL_AWAIT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36842: Реализуйте PEP 578, добавив sys.audit, io.open_code и связанные с ними API.
bpo-27639: Корректный тип возврата для операций нарезки UserList. Исправления от Michael Blahay, Erick Cervantes и vaultah
bpo-36737: Переместите PyRuntimeState.warnings в состояние для каждого интрепретатора (через «состояние модуля»).
bpo-36793: Разрешить параметры с именами
__str__
иbool
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36817: Разрешить параметры с именами
=
и!s
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24048: Сохраните живое исключение во время работы import.c
remove_module()
.bpo-27987: pymalloc возвращает блоки памяти, выровненные по 16, а не по 8 байт, на 64-битных платформах, чтобы соответствовать x86-64 ABI. Последние компиляторы чаще предполагают такое выравнивание. Исправление от Inada Naoki.
bpo-36601: Из внутреннего обработчика сигналов C в Python была удалена давно уже не имеющая смысла проверка на наличие
getpid() == main_pid
.bpo-36594: Исправление некорректного использования
%p
в строках формата. Исправление от Zackery Spytz.bpo-36045: Разрешить параметры с именами
builtins.help()
иasync
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36084: Добавляет идентификатор родного потока (TID) в объекты threading.Thread (поддерживаемые платформы: Windows, FreeBSD, Linux, macOS)
bpo-36035: Добавлено исправление неработающих симлинков в сочетании с pathlib
bpo-35983: Разрешить параметры с именами
tp_dealloc
иtp_dealloc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20602: Разрешить параметры с именами
sys.flags
иsys.float_info
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26826: Разрешить параметры с именами
copy_file_range()
иos
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32388: Удалите требование кросс-версионной бинарной совместимости в tp_flags.
bpo-31862: Порт binascii для многофазной инициализации PEP 489. Исправление Марселя Плча.
Библиотека¶
bpo-37128: Добавлено
math.perm()
.bpo-37120: Добавьте SSLContext.num_tickets для управления количеством билетов сессии TLSv1.3.
bpo-12202: Исправьте обработку ошибок в
msilib.SummaryInformation.GetProperty()
. Исправление от Zackery Spytz.bpo-26835: Модуль fcntl теперь содержит константы запечатывания файлов для запечатывания memfds.
bpo-29262: Разрешить параметры с именами
get_origin()
иget_args()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-12639: Разрешить параметры с именами
msilib.Directory.start_component()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36999: Добавьте метод
asyncio.Task.get_coro()
для публичного раскрытия объекта coroutine задачи.bpo-35246: Заставьте
asyncio.create_subprocess_exec()
принимать аргументы типа path.bpo-35279: Разрешить параметры с именами
ThreadPoolExecutor
иcpu_count() * 5
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37076: Разрешить параметры с именами
_thread.start_new_thread()
иsys.unraisablehook()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33725: На macOS модуль
multiprocessing
теперь по умолчанию использует метод запуска spawn.bpo-37054: Разрешить параметры с именами
_pyio.BytesIO
и_pyio.TextIOWrapper
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37058: Разрешить параметры с именами
Protocol
и@runtime_checkable
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36933: Разрешить параметры с именами
sys.set_coroutine_wrapper
иsys.get_coroutine_wrapper
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37047: Разрешить параметры с именами
unittest.mock.AsyncMock
иunittest.mock.MagicMock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37049: Разрешить параметры с именами
TypedDict
иtyping
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37046: Разрешить параметры с именами
Literal
иtyping
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37045: Разрешить параметры с именами
Final
и@final
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37035: Не регистрировать исключения на основе OSError, если произошла фатальная ошибка в транспорте asyncio. Пир может сгенерировать практически любой OSError, пользователь не может избежать этих исключений, исправив собственный код. Ошибки все равно передаются в пользовательский код, просто их логирование бессмысленно и загрязняет журналы asyncio.
bpo-37001: Разрешить параметры с именами
symtable.symtable()
иcompile()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37028: Реализуйте asyncio REPL
bpo-37027: Возвращаем безопасный для использования объект прокси-сокета из transport.get_extra_info(„socket“)
bpo-32528: Сделайте asyncio.CancelledError базовым исключением.
Это позволит устранить распространенную ошибку, которую допускают многие пользователи asyncio: предложение «except Exception», нарушающее отмену Tasks.
В дополнение к этому изменению мы перестаем наследовать asyncio.TimeoutError и asyncio.InvalidStateError от их аналогов concurrent.futures.*. Этим исключениям нет смысла участвовать в цепочке наследования.
bpo-1230540: Разрешить параметры с именами
threading.excepthook()
иthreading.Thread.run()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36996: Ручка
unittest.mock.patch()
, используемая в качестве декоратора для асинхронных функций.bpo-37008: Разрешить параметры с именами
next()
иunittest.mock.mock_open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27737: Разрешить кодирование заголовков только через пробелы в
email.header
. - by Batuhan Taskayabpo-36969: Команда PDB
args
теперь отображает только позиционные аргументы. Исправление предоставлено Rémi Lapeyre.bpo-36969: PDB-команда
args
теперь отображает аргументы только с ключевыми словами. Исправление предоставлено Rémi Lapeyre.bpo-36983: Разрешить параметры с именами
typing.__all__
иChainMap
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36972: Разрешить параметры с именами
hex()
иoct()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32972: Реализуйте
unittest.IsolatedAsyncioTestCase
для облегчения тестирования кода на основе asyncio.bpo-36952: Разрешить параметры с именами
fileinput.input()
иfileinput.FileInput
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36952: Разрешить параметры с именами
collections
иcollections.abc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36949: Реализуйте __repr__ для объектов WeakSet.
bpo-36948: Разрешить параметры с именами
NameError
иurllib.request.URLopener.retrieve()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33524: Исправление сворачивания заголовка электронной почты, когда max_line_length равно 0 или None и заголовок содержит неаскриптивные символы. Внесено Лихтом Такеучи (@Licht-T).
bpo-24564: Разрешить параметры с именами
shutil.copystat()
иerrno.EINVAL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаОригинальный патч был создан Джампаоло Родолой, обновлен Йингом Вангом.
bpo-36888: Дочерние процессы Python теперь могут получить доступ к статусу своего родительского процесса с помощью multiprocessing.process.parent_process
bpo-36921: Разрешить параметры с именами
@coroutine
иasync def
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25652: Разрешить параметры с именами
__rmod__
иUserString
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36916: Удалите сообщение о необработанном исключении в задаче, когда writer.write() используется без await и writer.drain() завершается с исключением.
bpo-36889: Разрешить параметры с именами
asyncio.Stream
иasyncio.StreamReader
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36845: Добавлена проверка целочисленных префиксов при построении IP-сетей и интерфейсов в модуле ipaddress.
bpo-23378: Добавьте действие расширения для argparser.
bpo-36867: Исправлена ошибка, из-за которой экземпляр SharedMemoryManager и его родительский процесс использовали два отдельных процесса resource_tracker.
bpo-23896: Добавляет грамматику в lib2to3.pygram, которая содержит exec как функцию, а не как оператор.
bpo-36895: Разрешить параметры с именами
time.clock()
иtime.perf_counter()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35545: Исправление отбрасывания asyncio диапазонов IPv6 при внутреннем разрешении имен хостов
bpo-36887: Добавьте новую функцию
math.isqrt()
для вычисления квадратных корней из целых чисел.bpo-34632: Представляем модуль
importlib.metadata
с (предварительной) поддержкой чтения метаданных из сторонних пакетов.bpo-36878: Разрешить параметры с именами
type_comments=True
иast.parse
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36778: Разрешить параметры с именами
cp65001
иutf_8
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36867: Модуль multiprocessing.resource_tracker заменяет модуль multiprocessing.semaphore_tracker. Кроме семафоров, resource_tracker также отслеживает сегменты общей памяти.
bpo-30262: Разрешить параметры с именами
Cache
иStatement
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24538: В
shutil.copystat()
сначала скопируйте расширенные атрибуты файла, а затем разрешения файла, поскольку расширенные атрибуты могут быть установлены на целевом устройстве только тогда, когда оно еще доступно для записи.bpo-36829: Разрешить параметры с именами
sys.unraisablehook()
иgc.collect()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36832: Представляем
zipfile.Path
, pathlib-совместимую обертку для обхода zip-файлов.bpo-36814: Исправлена проблема, при которой os.posix_spawnp() некорректно вызывала ошибку TypeError, когда file_actions было равно None.
bpo-33110: Корректно обрабатывайте исключения, вызванные функциями, добавленными concurrent.futures add_done_callback, когда Future уже завершилось.
bpo-26903: Разрешить параметры с именами
max_workers
иProcessPoolExecutor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36813: Разрешить параметры с именами
QueueListener
иqueue.task_done()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36806: Запрещает создание потоковых объектов asyncio, таких как StreamReader, StreamWriter, Process и их протоколов вне пакета asyncio.
bpo-36802: Обеспечьте синхронные и асинхронные вызовы для StreamWriter.write() и StreamWriter.close()
bpo-36801: Правильно обрабатывайте закрытие SSL-соединения при вызове asyncio StreamWriter.drain().
bpo-36785: Реализуйте PEP 574 (протокол pickle 5 с внеполосными буферами).
bpo-36772: functools.lru_cache() теперь можно использовать как прямой декоратор в дополнение к его существующему использованию в качестве функции, возвращающей декоратор.
bpo-6584: Разрешить параметры с именами
BadGzipFile
иgzip
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36748: Разрешить параметры с именами
TextIOWrapper
иTextIOWrapper
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-8138: Разрешить параметры с именами
wsgiref.simple_server.SimpleServer
иwsgiref.simple_server.WSGIServer
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22640:
py_compile.compile()
теперь поддерживает беззвучный режим. Автор патча - Джоанна Нанджекьеbpo-29183: Разрешить параметры с именами
wsgiref.handlers.BaseHandler
иclose()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36548: Улучшена работа с флагами регулярных выражений.
bpo-36542: Сигнатуру функций Python теперь можно переопределить, указав атрибут
__text_signature__
.bpo-36533: Переинициализируйте блокировки logging.Handler в дочерних процессах с развилкой вместо того, чтобы пытаться получить их все в родительском процессе перед развилкой только для того, чтобы освободить в дочернем процессе. Шаблон приобретения/освобождения приводил к тупиковым ситуациям в коде, в котором были реализованы любые цепочки обработчиков логирования, зависящих друг от друга, поскольку порядок приобретения блокировок не может быть гарантирован.
bpo-35252: Выбрасывайте TypeError вместо AssertionError при использовании аннотации недопустимого типа с singledispatch.
bpo-35900: Разрешите методам редукции возвращать кортеж из 6 элементов, где 6-й элемент указывает на пользовательский метод установки состояния, который вызывается вместо обычного метода
__setstate__
.bpo-35900: включите регистрацию обратных вызовов для функций и классов в _pickle.c, используя новый атрибут Pickler’s
reducer_override
bpo-36368: Исправлена ошибка, приводящая к краху экземпляров SharedMemoryManager в интерактивных сессиях после отправки ctrl-c (KeyboardInterrupt)
bpo-31904: Исправьте ошибку mmap для VxWorks
bpo-27497: Разрешить параметры с именами
csv.DictWriter.writeheader()
иcsv.Writer.writerow()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36239: При разборе файлов .mo теперь игнорируются комментарии, начинающиеся и заканчивающиеся символами #-#-#-#-#.
bpo-26707: Разрешает plistlib читать и записывать двоичные plist-файлы, которые были созданы как файл KeyedArchive. В частности, это позволяет plistlib обрабатывать токены 0x80 как объекты UID.
bpo-31904: Добавьте поддержку модуля posix для VxWorks.
bpo-35125: Asyncio: Удалите внутренний обратный вызов при внешней отмене в щите
bpo-35721: Разрешить параметры с именами
asyncio.SelectorEventLoop.subprocess_exec()
иPopen
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31855: Результаты
unittest.mock.mock_open()
теперь учитывают аргумент read([size]). Исправление предоставлено Rémi Lapeyre.bpo-35431: Реализуйте
math.comb()
, возвращающий биномиальный коэффициент, который вычисляет количество способов выбрать k предметов из n предметов без повторений и без порядка. Исправлено Яшем Аггарвалом и Келлером Фуксом.bpo-26660: Разрешить параметры с именами
TemporaryDirectory
иTemporaryDirectory.cleanup()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34271: Добавьте отладочные помощники в модуль ssl. Теперь можно делать дамп ключевого материала и отслеживать протокол TLS. Контексты по умолчанию и stdlib также поддерживают переменную окружения SSLKEYLOGFILE.
bpo-26467: Добавлен AsyncMock для поддержки использования unittest для имитации корутинов asyncio. Исправление Лизы Роуч.
bpo-33569: dataclasses.InitVar: Раскрывает тип, используемый для создания переменной init.
bpo-34424: Исправлена сериализация сообщений, содержащих закодированные строки, когда policy.linesep имеет значение многосимвольной строки. Исправление от Jens Troeger.
bpo-34303: Производительность
functools.reduce()
немного улучшена. Патч от Сергея Федосеева.bpo-33361: Исправлена ошибка в
codecs.StreamRecoder
, когда при поиске старые данные могли оставаться в буфере и нарушать последующие вызовы чтения. Исправление от Аммара Аскара.bpo-22454: Разрешить параметры с именами
shlex
иshlex.join()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31922:
asyncio.AbstractEventLoop.create_datagram_endpoint()
: Не подключать UDP-сокет, если разрешена трансляция. Это позволяет получать ответы после UDP-трансляции.bpo-24882: Измените ThreadPoolExecutor, чтобы он использовал существующие незадействованные потоки, прежде чем запускать новые.
bpo-31961: Разрешить параметры с именами
subprocess.Popen()
и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33123: Разрешить параметры с именами
pathlib.Path.unlink
иFileNotFoundError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32941: Разрешить параметры с именами
mmap.mmap
иmmap.mmap.madvise()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22102: Добавлена поддержка ZIP-файлов с дисками, установленными в 0. Такие файлы обычно создаются встроенными инструментами в Windows, когда используется расширение ZIP64. Исправление от Франциско Фасиони.
bpo-32515: trace.py теперь может запускать модули через python3 -m trace -t –module module_name
bpo-32299: Изменен
unittest.mock.patch.dict()
для возврата исправленного словаря при использовании в качестве менеджера контекста. Исправление Вадима Цандера.bpo-27141: Разрешить параметры с именами
__copy__()
иcollections.UserList
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31829: Разрешить параметры с именами
\r
и\0
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23395: Разрешить параметры с именами
_thread.interrupt_main()
иSIGINT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-36896: Уточните, что некоторые типы имеют нестабильную сигнатуру конструктора в разных версиях Python.
bpo-36686: Улучшите документацию по аргументам stdin, stdout и stderr функции
asyncio.subprocess_exec
, чтобы указать, какие значения поддерживаются. Также упомяните, что декодирование в виде текста не поддерживается.Добавьте несколько тестов, чтобы проверить, что различные значения, переданные в аргументы std*, действительно работают.
bpo-36984: Улучшенная версия добавила ссылки в модуль
typing
- автор Anthony Sottile.bpo-36868: Что нового теперь упоминает SSLContext.hostname_checks_common_name вместо SSLContext.host_flags.
bpo-35924: Добавьте в документацию
curses.addstr()
примечание, предупреждающее, что многострочные строки могут вызывать segfault’ы из-за ошибки ncurses.bpo-36783: Добавлена документация C API для Time_FromTimeAndFold и PyDateTime_FromDateAndTimeAndFold в соответствии с PEP 495. Исправление от Edison Abahurire.
bpo-36797: Большая часть устаревшей документации по distutils была либо сокращена, либо более четко обозначена как сохраняемая только до тех пор, пока документация по setuptools не охватит ее самостоятельно.
bpo-22865: Добавьте подробности в документацию по функции
pty.spawn
.bpo-35397: Устраните устаревание и добавьте документ urllib.parse.unwrap(). Исправление предоставлено Rémi Lapeyre.
bpo-32995: Добавлена контекстная переменная в глоссарий.
bpo-33519: Разрешить параметры с именами
copy()
иMutableSequence
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33482: Заставьте
codecs.StreamRecoder.writelines
принимать список байтов.bpo-25735: Добавлена документация для func factorial, чтобы указать, что она возвращает целочисленные значения
bpo-20285: Расширьте object.__doc__ (docstring), чтобы сделать его более понятным. Измените pydoc.py так, чтобы в help(object) перечислялись методы объекта (для других классов help опускает методы базового класса объекта).
Тесты¶
bpo-37069: Разрешить параметры с именами
test.support.catch_unraisable_exception()
иtest.support.captured_stderr()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-37098: Исправьте test_memfd_create на старых ядрах Linux.
bpo-37081: Тест с OpenSSL 1.1.1c
bpo-36829: Разрешить параметры с именами
test.support.catch_unraisable_exception()
иsys.unraisablehook()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36915: Главный процесс regrtest теперь всегда удаляет все временные каталоги рабочих процессов, даже если они терпят крах или если они убиты по прерыванию клавиатуры (CTRL+c).
bpo-36719: «python3 -m test -jN …» теперь продолжает выполнение следующих тестов при падении рабочего процесса (состояние CHILD_ERROR). Ранее набор тестов останавливался немедленно. Используйте –failfast для остановки при первой ошибке.
bpo-36816: Обновите Lib/test/selfsigned_pythontestdotnet.pem, чтобы он соответствовал новому TLS-сертификату self-signed.pythontest.net.
bpo-35925: Пропускать сетевые тесты httplib и nntplib, если в противном случае они окажутся неудачными из-за современной ОС или дистрибутива с политикой OpenSSL по умолчанию, отвергающей соединения с серверами со слабыми сертификатами.
bpo-36782: Добавьте тесты для нескольких функций C API в модуле
datetime
. Исправление Эдисона Абахурире.bpo-36342: Исправьте test_multiprocessing в test_venv, если на платформе не работает sem_open.
Построить¶
bpo-36721: Разрешить параметры с именами
--embed
иpython3-config --libs --embed
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаpython-3.8-embed
: Разрешить параметры с именамиpkg-config python-3.8-embed --libs
и-lpython3.8
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаС другой стороны,
pkg-config python3.8 --libs
больше не содержит-lpython3.8
. Расширения C не должны быть связаны с libpython (за исключением Android, случай обрабатывается скриптом); это изменение специально несовместимо с обратной стороной.bpo-36786: «make install» теперь запускает compileall параллельно.
Windows¶
bpo-36965: включение STATUS_CONTROL_C_EXIT без зависимости от компилятора MSC
bpo-35926: Обновление до OpenSSL 1.1.1b для Windows.
bpo-29883: Добавляет поддержку Windows для UDP-транспортов для Proactor Event Loop. Исправление от Adam Meily.
bpo-33407: Макрос
Py_DEPRECATED()
был реализован для MSVC.
macOS¶
bpo-36231: Поддержка сборки Python на macOS без установленного /usr/include. Начиная с macOS 10.14, системные заголовочные файлы доступны только в SDK, предоставляемом либо инструментами командной строки, либо приложением Xcode.
IDLE¶
bpo-35610: Замените теперь уже ненужный .context_use_ps1 на .prompt_last_line. Это завершает изменения, начатые в bpo-31858.
bpo-37038: Сделайте idlelib.run исполняемым; добавьте условие тестирования.
bpo-36958: Выведите любой аргумент, отличный от None или int, переданный в SystemExit или sys.exit().
bpo-36807: При сохранении файла вызывайте os.fsync(), чтобы биты сбрасывались, например, на USB-накопитель.
bpo-32411: В browser.py удалите лишнюю сортировку по номеру строки, поскольку словарь был создан в порядке возрастания номера строки.
Инструменты/демоверсии¶
bpo-37053: Корректная обработка строк типа u «bar» в Tools/parser/unparse.py. Исправление от Chih-Hsuan Yen.
C API¶
bpo-36763: Реализуйте PEP 587 «Конфигурация инициализации Python».
bpo-36379: Исправление сбоев при попытке использовать параметр modulo, когда
__ipow__
реализован на C.bpo-37107: Разрешить параметры с именами
PyObject_CallMethodObjArgs()
и_PyObject_CallMethodIdObjArgs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36974: Реализовать PEP 590: Vectorcall: протокол быстрого вызова для CPython. Это новый протокол для оптимизации вызовов пользовательских вызываемых объектов.
bpo-36763: Разрешить параметры с именами
Py_Main()
иPy_Exit(exitcode)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36922: Разрешить параметры с именами
Py_TPFLAGS_METHOD_DESCRIPTOR
иLOAD_METHOD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36728: Разрешить параметры с именами
PyEval_ReInitThreads()
иPyOS_AfterFork_Child()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.8.0 alpha 4¶
Дата выхода: 2019-05-06
Безопасность¶
bpo-36742: Исправлена ошибка обработки символов предварительной нормализации в urlsplit().
bpo-30458: Адрес CVE-2019-9740, запрещая передачу URL-путей со встроенными пробелами или управляющими символами в основной запрос http-клиента. Такие потенциально вредоносные URL с инъекцией заголовка теперь вызывают исключение http.client.InvalidURL.
bpo-35755: Разрешить параметры с именами
shutil.which()
иos.confstr("CS_PATH")
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-36722: В отладочной сборке импорт теперь также ищет расширения C, скомпилированные в режиме релиза, и расширения C, скомпилированные в стабильном ABI.
bpo-32849: Исправьте код инициализации Python на FreeBSD, чтобы он правильно определял, когда дескриптор файла stdin (fd 0) недействителен.
bpo-36623: Удалите заголовки парсера и связанные с ними объявления функций, которые не имеют реализаций после удаления pgen.
bpo-20180:
dict.pop()
теперь на 33 % быстрее благодаря Argument Clinic. Исправление от Inada Naoki.bpo-36611: Разрешить параметры с именами
tracemalloc
иPYMEM_DEBUG_SERIALNO
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36588: Разрешить параметры с именами
sys.platform
и'aix'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36549: Измените str.capitalize, чтобы использовать заглавную букву для первого символа вместо прописной.
bpo-36540: Реализуйте PEP 570 (параметры Python только для позиционирования). Исправление от Пабло Галиндо.
bpo-36475: Разрешить параметры с именами
PyEval_AcquireLock()
иPyEval_AcquireThread()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36504: Исправьте переполнение знаковых целых чисел в _ctypes.c
PyCArrayType_new()
.bpo-20844: Исправление запуска скрипта с кодировкой cookie и окончанием строки LF, что может привести к ошибке в Windows.
bpo-24214: Исправлена поддержка обработчика ошибок surrogatepass в инкрементном декодере UTF-8.
bpo-36452: Разрешить параметры с именами
dict
иkeys()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36459: Разрешить параметры с именами
PyMem_FREE()
иtok_nextc()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36433: Исправлено сообщение TypeError в вызове classmethoddescr_call.
bpo-36430: Исправьте возможную утечку ссылок в
itertools.count()
.bpo-36440: Включать имена узлов в сообщения
ParserError
вместо числовых идентификаторов. Исправление А. Скробова.bpo-36143: Регенерируйте
keyword
из файла грамматики и токенов с помощью pgen. Исправление от Пабло Галиндо.bpo-18372: Разрешить параметры с именами
PyObject_GC_Track()
иpickle
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-35952: Исправьте pythoninfo, когда компилятор отсутствует.
bpo-28238: Разрешить параметры с именами
.find*()
и{*}tag
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26978:
pathlib.path.link_to()
теперь реализована. Она создает жесткую ссылку, указывающую на путь.bpo-1613500: Разрешить параметры с именами
fileinput.FileInput
и'w'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36734: Разрешить параметры с именами
faulthandler.c
иstack_t current_stack
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-13611: Пакеты xml.etree.ElementTree получили поддержку сериализации C14N 2.0. Исправление Стефана Бехнеля.
bpo-36669: Добавьте поддержку недостающего оператора умножения матриц в weakref.proxy.
bpo-36676: XMLParser() в xml.etree.ElementTree предоставляет контекст префикса пространства имен для цели парсера, если он определяет методы обратного вызова «start_ns()» и/или «end_ns()». Исправление Стефана Бехнеля.
bpo-36673: TreeBuilder и XMLPullParser в xml.etree.ElementTree получили поддержку разбора комментариев и инструкций обработки. Исправление Стефана Бехнеля.
bpo-36650: C-версия functools.lru_cache() воспринимала вызовы с пустым словарем
**kwargs
как отличные от вызовов без ключевых слов. Это не приводило к неправильному ответу, но вызывало неожиданный пропуск кэша.bpo-28552: Разрешить параметры с именами
distutils.sysconfig
иsys.executable
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35755: Разрешить параметры с именами
shutil.which()
иdistutils.spawn.find_executable
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25430: улучшить производительность
IPNetwork.__contains__()
bpo-30485: Выражения пути в xml.etree.ElementTree теперь могут обходиться без явных префиксов пространства имен для тегов (или нотации «{namespace}tag»), передавая пространство имен по умолчанию с пустым строковым префиксом.
bpo-36613: Исправьте
asyncio
wait(), не удаляющий обратный вызов при исключенииbpo-36598: Исправьте
isinstance
проверку Mock-объектов со спецификацией, когда код выполняется под трассировкой. Исправление от Karthikeyan Singaravelan.bpo-18748: Разрешить параметры с именами
-X
иdev
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36575: Разрешить параметры с именами
_lsprof
иtime.perf_counter()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33461: Разрешить параметры с именами
json.loads
иDeprecationWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36559: Модуль random теперь предпочитает внутренний модуль _sha512, а не hashlib для seed(version=2), чтобы оптимизировать время импорта.
bpo-17561: Установите backlog=None по умолчанию для socket.create_server.
bpo-34373: Исправление обработки ошибок
time.mktime()
на AIX для года до 1970.bpo-36232: Улучшено сообщение об ошибке при попытке открыть существующую базу данных DBM, которая на самом деле не существует. Исправление от Marco Rougeth.
bpo-36546: Добавить statistics.quantiles()
bpo-36050: Оптимизированный
http.client.HTTPResponse.read()
для большого отклика. Исправление от Inada Naoki.bpo-36522: Если debuglevel установлен в значение >0 в
http.client
, выведите все значения для заголовков с несколькими значениями для одного и того же имени заголовка. Исправление от Matt Houglum.bpo-36492: Отменена передача обязательных аргументов типа func в качестве аргументов ключевых слов в функциях, которые должны принимать произвольные аргументы ключевых слов и передавать их в другие функции. Теперь произвольные аргументы-ключи (даже с именами «self» и «func») могут передаваться этим функциям, если требуемые аргументы передаются как позиционные аргументы.
bpo-27181: Добавить statistics.geometric_mean().
bpo-30427: Разрешить параметры с именами
os.path.normcase()
иos.fspath()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36385: Прекращение отклонения октетов IPv4 из-за их неоднозначной восьмеричности. Ведущие нули игнорируются, и больше не предполагается, что они указывают на восьмеричные октеты. Октеты всегда являются десятичными числами. Октеты по-прежнему должны состоять не более чем из трех цифр, включая ведущие нули.
bpo-36434: Ошибки при записи в ZIP-файл больше не препятствуют его правильному закрытию.
bpo-36407: Исправлена неправильная запись отступов для секции CDATA в xml.dom.minidom. Автор исправления - Владимир Сурьянинов.
bpo-36326: inspect.getdoc() теперь может находить документацию для объектов-членов, когда __slots__ является словарем.
bpo-36366: Разрешить параметры с именами
stop()
иunittest.mock.patch()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36348: Метод
imap.IMAP4.logout()
больше не игнорирует произвольные исключения.bpo-31904: Добавлена поддержка модуля времени и исправлены ошибки test_time для VxWorks.
bpo-36227: Разрешить параметры с именами
default_namespace
иxml_declaration
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36004: Разрешить параметры с именами
datetime.date.fromisocalendar()
иdatetime.datetime.fromisocalendar()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35936: Разрешить параметры с именами
modulefinder
иimp
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35376:
modulefinder
корректно обрабатывает модули, имеющие то же имя, что и плохой пакет. Исправление авторства Брандта Бухера.bpo-17396:
modulefinder
больше не аварийно завершается при возникновении синтаксических ошибок в последующем импорте. Исправление авторства Брандта Бухера.bpo-35934: Разрешить параметры с именами
create_server()
иhas_dualstack_ipv6()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23078: Разрешить параметры с именами
classmethod()
иstaticmethod()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35416: Исправление потенциальных предупреждений о ресурсах в distutils. Исправление от Mickaël Schoentgen.
bpo-25451: Добавьте методы прозрачности в
tkinter.PhotoImage
. Исправление от Zackery Spytz.bpo-35082: Не возвращайте удаленные атрибуты при вызове dir на
unittest.mock.Mock
.bpo-34547:
wsgiref.handlers.BaseHandler
теперь изящно обрабатывает внезапные обрывы клиентских соединений. Исправление от Петтера Страндмарка.bpo-31658: Разрешить параметры с именами
xml.sax.parse()
и path-like с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34139: Удалите устаревший сокет unix-датаграммы перед связыванием
bpo-33530: Реализована функция Happy Eyeballs в
asyncio.create_connection()
. Добавлены два новых аргумента, happy_eyeballs_delay и interleave, для задания поведения Happy Eyeballs.bpo-33291: Не вызывайте ошибку AttributeError при вызове функций inspect isgeneratorfunction, iscoroutinefunction, isasyncgenfunction на методе, созданном из произвольного вызываемого объекта. Вместо этого возвращайте False.
bpo-31310: Исправьте multiprocessing.semaphore_tracker, чтобы он повторно использовался дочерними процессами
bpo-31292: Разрешить параметры с именами
setup.py check --restructuredtext
иinclude
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-36625: Удалите устаревшие комментарии из документаций в fractions.Fraction
bpo-30840: Относительный импорт документов
bpo-36523: Добавьте docstring для io.IOBase.writelines().
bpo-36425: Новый перевод документации: Simplified Chinese.
bpo-36345: Разрешить параметры с именами
Tools/scripts/serve.py
и :dir:`literalinclude` с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36345: Разрешить параметры с именами
Tools/scripts/serve.py
иwsgiref
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36157: Добавлена документация для PyInterpreterState_Main().
bpo-33043: Обновлена страница docs.python.org с добавлением ссылки „Contributing to Docs“ в конце страницы (между „Reporting Bugs“ и „About Documentation“). Обновлена страница „Found a Bug“ с дополнительными ссылками и информацией в разделе Documentation Bugs.
bpo-35581: @typing.type_check_only теперь позволяет в заглушках типов помечать функции и классы, недоступные во время выполнения.
bpo-33832: Добавьте запись в глоссарий для „магического метода“.
bpo-32913: Добавлен пример re.Match.groupdict в regex HOWTO.
Тесты¶
bpo-36719: Разрешить параметры с именами
--findleaks
и-jN/--multiprocess N
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36725: При использовании многопроцессорного режима (-jN) regrtest теперь лучше сообщает об ошибках при сбое рабочего процесса, а также немедленно завершает работу при сбое рабочего потока или при его прерывании.
bpo-36454: Измените test_time.test_monotonic(), чтобы он проверял только нижнюю границу времени, прошедшего после команды sleep, а не верхнюю. Это предотвратит ненужные провалы тестов на медленных билдботах. Исправление Виктора Стиннера.
bpo-32424: Улучшение тестового покрытия для xml.etree.ElementTree. Исправление Гордона П. Хемсли.
bpo-32424: Исправление опечатки в тесте test_cyclic_gc() для xml.etree.ElementTree. Исправление от Gordon P. Hemsley.
bpo-36635: Добавьте новый модуль
_testinternalcapi
для тестирования внутреннего API на языке C.bpo-36629: Разрешить параметры с именами
test_imap4_host_default_value()
иtest_imaplib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36611: Разрешить параметры с именами
test_sys.test_getallocatedblocks()
иtracemalloc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36560: Исправление поиска утечек по ссылкам в regrtest: вычисление дельт (количества ссылок, выделенных блоков памяти, количества дескрипторов файлов) во время прогрева, чтобы убедиться, что все инициализировано перед началом поиска утечек по ссылкам.
bpo-36565: Исправьте охоту за ссылками (
python3 -m test -R 3:3
), когда в Python нет встроенного модуля abc.bpo-31904: Перенос test_resource в VxWorks: пропускать тесты, устанавливающие RLIMIT_FSIZE и RLIMIT_CPU.
bpo-31904: Исправьте test_tabnanny на VxWorks: скорректируйте сообщение об ошибке ENOENT.
bpo-36436: Исправьте
_testcapi.pymem_buffer_overflow()
: сбой выделения памяти.bpo-31904: Исправьте test_utf8_mode на VxWorks: Python всегда использует UTF-8 на VxWorks.
bpo-36341: Исправление тестов, которые могли выдать ошибку PermissionError при вызове bind() на сокетах AF_UNIX.
Построить¶
bpo-36747: Удалите устаревшие скрипты scriptsinstall Makefile target.
bpo-21536: В Unix расширения C больше не связаны с libpython, за исключением Android и Cygwin.
Теперь статически связанный Python может загрузить расширение на C, созданное с помощью общей библиотеки Python.
libpython
: Разрешить параметры с именамиRTLD_LOCAL
иRTLD_GLOBAL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаБыли изменены distutils, python-config и python-config.py.
bpo-36707: Разрешить параметры с именами
./configure --with-pymalloc
иm
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36635: Разрешить параметры с именами
PyAPI_FUNC(type)
иPyAPI_DATA(type)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31904: Не собирайте расширение
_crypt
на VxWorks.bpo-36618: Разрешить параметры с именами
-fmax-type-align=8
иCFLAGS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36605: Разрешить параметры с именами
make tags
иmake TAGS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36465: Разрешить параметры с именами
Py_DEBUG
иPy_TRACE_REFS
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36577: setup.py теперь снова корректно сообщает о недостающих заголовках и библиотеках OpenSSL.
bpo-36544: Исправление регрессии, введенной в bpo-36146 при рефакторинге setup.py
bpo-36508: Разрешить параметры с именами
python-config --ldflags
иLINKFORSHARED
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36503: Удалите ссылки на «aix3» и «aix4». Исправление М. Фелта.
Windows¶
bpo-35920: Добавлены platform.win32_edition() и platform.win32_is_iot(). Добавлена поддержка кросс-компиляции пакетов для Windows ARM32. Пропущены тесты, работа которых на Windows IoT Core ARM32 не ожидается.
bpo-36649: Удаление пробелов в конце ключей реестра при установке через магазин.
bpo-34144: Исправлен activate.bat для корректного обновления кодовой страницы, когда chcp.com возвращает точки в выводе. Исправление от Lorenz Mende.
bpo-36509: Добавлен макет preset-iot для контейнеров Windows IoT ARM. Этот макет не содержит компонентов пользовательского интерфейса, таких как tkinter или IDLE. Он также не содержит файлов для поддержки on-target сборок, поскольку сборки Windows ARM32 должны быть кросс-компилированы при использовании MSVC.
bpo-35941: функция enum_certificates модуля ssl теперь возвращает в запросе сертификаты из всех доступных хранилищ сертификатов внутри windows, вместо того чтобы возвращать только сертификаты из общесистемного хранилища сертификатов. Сюда входят сертификаты из следующих хранилищ сертификатов: локальная машина, локальная машина предприятия, групповая политика локальной машины, текущий пользователь, групповая политика текущего пользователя, службы, пользователи. Функция ssl.enum_crls() изменена таким же образом, чтобы возвращать все списки отзыва сертификатов в хранилищах списков отзыва сертификатов windows.
bpo-36441: Исправлено создание venv при установке отладочных двоичных файлов.
bpo-36085: Включите лучшее разрешение DLL в Windows, используя безопасные пути поиска DLL и добавив
os.add_dll_directory()
.bpo-36010: Добавьте модуль стандартной библиотеки venv в дистрибутив nuget для Windows.
bpo-29515: Добавьте следующие константы модуля сокетов в Windows: IPPROTO_AH IPPROTO_CBT IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP IPPROTO_FRAGMENT IPPROTO_GGP IPPROTO_HOPOPTS IPPROTO_ICLFXBM IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP IPPROTO_IGP IPPROTO_IPV4 IPPROTO_IPV6 IPPROTO_L2TP IPPROTO_MAX IPPROTO_ND IPPROTO_NONE IPPROTO_PGM IPPROTO_PIM IPPROTO_PUP IPPROTO_RDP IPPROTO_ROUTING IPPROTO_SCTP IPPROTO_ST
bpo-35947: Добавлена текущая версия libffi в cpython-source-deps. Измените _ctypes для использования текущей версии libffi под Windows.
bpo-34060: Сообщать о нагрузке на систему при запуске тестового набора на Windows. Исправление Аммара Аскара. Основано на предыдущей работе Джереми Клота.
bpo-31512: В обновлении Windows 10 Creators Update пользователи без высшего уровня подготовки теперь могут создавать симлинки, если на компьютере включен режим разработчика.
macOS¶
IDLE¶
bpo-36429: Исправление запуска IDLE с помощью pyshell. Добавьте псевдоним idlelib.pyshell сверху; удалите псевдоним pyshell снизу. Удалите устаревшую команду __name__==“__main__“.
Инструменты/демоверсии¶
bpo-14546: Исправьте обработку аргументов в Tools/scripts/lll.py.
C API¶
bpo-36763: Исправьте утечку памяти в
Py_SetStandardStreamEncoding()
: освободите память, если функция вызывается дважды.bpo-36641: Разрешить параметры с именами PyDoc_VAR(name) и PyDoc_STRVAR(name, str) с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-36389: Разрешить параметры с именами
CLEANBYTE
иDEADDYTE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36443: Разрешить параметры с именами
Py_DecodeLocale()
иPy_Initialize()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36025: Разрешить параметры с именами
PyDate_FromTimestamp()
иTypeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35810: Измените
PyObject_Init
, чтобы корректно увеличивать refcount объектов Type, выделенных из кучи. Также исправлены refcount’ы выделенных из кучи типов, которые либо делали это вручную, либо не уменьшали refcount’ы типа в tp_dealloc
Python 3.8.0 alpha 3¶
Дата выхода: 2019-03-25
Безопасность¶
bpo-36216: Изменяет urlsplit(), чтобы вызывать ошибку ValueError, когда URL содержит символы, разлагающиеся при кодировке IDNA (NFKC-нормализация) на символы, которые влияют на разбор URL.
bpo-35121: Не отправляйте cookies домена A без атрибута Domain в домен B, если домен A совпадает по суффиксу с доменом B, при использовании cookiejar с политикой
http.cookiejar.DefaultCookiePolicy
. Исправление от Karthikeyan Singaravelan.
Ядро и встроенные модули¶
bpo-36421: Исправьте возможное двойное decref в _ctypes.c’s
PyCArrayType_new()
.bpo-36412: Исправление возможного сбоя при создании нового словаря.
bpo-36398: Исправление возможного сбоя в
structseq_repr()
.bpo-36256: Исправление ошибки в парсермодуле при разборе состояния в DFA, в котором есть две или более дуг с метками одного типа. Исправление Пабло Галиндо.
bpo-36365: repr(structseq) больше не ограничивается 512 байтами.
bpo-36374: Исправление возможного разыменования нулевого указателя в
merge_consts_recursive()
. Исправление от Zackery Spytz.bpo-36236: При инициализации Python текущий каталог больше не добавляется к
sys.path
, если он был удален.bpo-36352: Инициализация Python теперь не обрезает пути, а выдает ошибку, если путь слишком длинный.
bpo-36301: Инициализация Python теперь не выполняется, если при запуске произошел сбой декодирования конфигурационного файла
pybuilddir.txt
.bpo-36333: Исправление утечки в _PyRuntimeState_Fini. Вклад внес Стефан Виртель.
bpo-36332: Встроенный
compile()
теперь может работать с объектами AST, содержащими выражения присваивания. Исправление от Пабло Галиндо.bpo-36282: Улучшено сообщение об ошибке при слишком большом количестве позиционных аргументов в некоторых встроенных функциях.
bpo-30040: Новый пустой dict пока использует меньше памяти. Он использовал больше памяти, чем пустая диктанта, созданная
dict.clear()
. А создание и удаление пустой дикты происходит примерно в 2 раза быстрее. Исправление от Inada Naoki.bpo-36262: Разрешить параметры с именами
_Py_dg_strtod()
иfloat(str)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36252: Обновление баз данных Unicode до версии 12.0.0.
bpo-36218: Исправление сегфайта, возникающего при сортировке списка неоднородных значений. Исправление внесли Rémi Lapeyre и Elliot Gorokhovsky.
bpo-36188: Устранены остатки обработки несвязанных методов в Python 2 в объектах методов и документации. Исправление от Martijn Pieters
bpo-36124: Добавьте новый dict, специфичный для интерпретатора, и предоставьте его в C-API через PyInterpreterState_GetDict(). Это параллельно PyThreadState_GetDict(). Однако модули расширения должны продолжать использовать PyModule_GetState() для своего внутреннего состояния, специфичного для каждого конкретного интерпретатора.
bpo-35975: Разрешить параметры с именами
feature_version
иast.parse()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31904: Используйте UTF-8 в качестве системной кодировки на VxWorks.
bpo-36048: Разрешить параметры с именами
__index__()
и__int__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35808: Отказ от pgen и использование модифицированной версии pgen2 для генерации парсера. Исправление от Пабло Галиндо.
Библиотека¶
bpo-36401: В документации класса, создаваемой pydoc, теперь есть отдельный раздел для свойств, доступных только для чтения.
bpo-36320: В классе typing.NamedTuple() был устаревший атрибут _field_types в пользу атрибута __annotations__, который несет ту же информацию. Кроме того, оба атрибута были преобразованы из OrderedDict в обычный dict.
bpo-34745: Исправление
asyncio
проблем с памятью ssl, вызванных круговыми ссылкамиbpo-36324: Добавьте метод в statistics.NormalDist для вычисления обратного кумулятивного нормального распределения.
bpo-36321: collections.namedtuple() неправильно указал имя атрибута. Чтобы быть согласованным с typing.NamedTuple, имя атрибута должно было быть «_field_defaults», а не «_fields_defaults». Для обратной совместимости теперь создаются оба варианта написания. В будущем ошибочная версия может быть удалена.
bpo-36297: Кодек «unicode_internal» удален. Он был устаревшим, начиная с версии Python 3.3. Исправление от Inada Naoki.
bpo-36298: Вызывать ошибку ModuleNotFoundError в pyclbr, когда модуль не может быть найден. Спасибо „mental“ за сообщение об ошибке.
bpo-36268: Переключает формат по умолчанию, используемый для записи таров с
tarfile
, на современный стандарт POSIX.1-2001 pax, а не на специфический для данного производителя GNU. Внесено C.A.M. Герлахом.bpo-36285: Исправление целочисленных переполнений в модуле массивов. Исправление от Stephan Hohe.
bpo-31904: Добавьте поддержку модуля _signal для VxWorks.
bpo-36272:
logging
больше не игнорирует RecursionError. Исправление предоставлено Rémi Lapeyre.bpo-36280: Добавьте поле kind в ast.Constant. Оно равно „u“, если литерал имеет префикс „u“ (т.е. юникодный литерал в стиле Python 2), иначе None.
bpo-35931: Разрешить параметры с именами
pdb
иdebug
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36251: Исправьте строки формата, используемые для stderrprinter и re.Match reprs. Исправление от Stephan Hohe.
bpo-36235: Разрешить параметры с именами
CFLAGS
иcustomize_compiler()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35807: Обновите ensurepip для установки pip 19.0.3 и setuptools 40.8.0.
bpo-36179: Исправление двух маловероятных утечек ссылок в _hashopenssl. Утечки происходят только в случаях работы вне памяти.
bpo-36169: Добавьте метод overlap() в statistics.NormalDist. Вычисляет коэффициент перекрытия для двух нормальных распределений.
bpo-36103: Размер буфера по умолчанию, используемый
shutil.copyfileobj()
, изменен с 16 до 64 килобайт на платформах, отличных от Windows, чтобы уменьшить накладные расходы на системные вызовы. Внесено Инадой Наоки.bpo-36130: Разрешить параметры с именами
pdb
иskip=...
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35652: shutil.copytree(copy_function=…) ошибочно передает DirEntry вместо строки пути.
bpo-35178: Разрешить параметры с именами
warnings.formatwarning()
иline
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36106: Устранение потенциального столкновения имен с sinpi() из libm. Исправление от Дмитрия Пасечника.
bpo-36091: Очистите ссылку на генератор async в Lib/types. Исправление Генри Чена.
bpo-36043: Разрешить параметры с именами
FileCookieJar
и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35899: Enum исправлен для корректной обработки пустых строк и строк с нелатинскими символами (т.е. „α“, „א“) без сбоев. Автор оригинального патча - Maxwell. При содействии Стефана Виртела.
bpo-21269: Разрешить параметры с именами
args
иkwargs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30670: Разрешить параметры с именами
pprint.pp
иpprint.pprint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35843: Разрешить параметры с именами
__getitem__
и_NamespacePath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35802: Разрешить параметры с именами
os.stat
иos.lstat
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35715: Ликвидирует возвращаемое значение ProcessPoolExecutor _process_worker после того, как он больше не нужен, чтобы освободить память.
bpo-35493: Разрешить параметры с именами
multiprocessing.connection.wait()
иmultiprocessing.Pool
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35661: Сохраните подсказку venv в файле pyvenv.cfg.
bpo-35121: Не устанавливайте cookie для запроса, если путь запроса совпадает с префиксом атрибута path cookie, но не заканчивается на «/». Исправление от Karthikeyan Singaravelan.
bpo-21478: Вызовы дочерней функции, созданной с помощью
unittest.mock.create_autospec()
, должны распространяться на родительскую. Исправление от Karthikeyan Singaravelan.bpo-35198: Исправление компиляции расширений C++ на AIX
Документация¶
bpo-36329: Разрешить параметры с именами
Tools/scripts/serve.py
иmake -C Doc/ serve
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36138: Улучшение документации о преобразовании datetime.timedelta в скаляры.
bpo-21314: В раздел Core Language FAQ по программированию добавлена новая запись, объясняющая использование слэша(/) в сигнатуре функции. Исправление Лисандроса Николау
Тесты¶
bpo-36234: test_posix.PosixUidGidTests: добавлены тесты на недопустимый тип uid/gid (str). Первоначальный патч написан Дэвидом Малкольмом.
bpo-29571: Разрешить параметры с именами
test_re.test_locale_flag()
иlocale.getpreferredencoding()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36123: Исправьте состояние гонки в test_socket.
Построить¶
bpo-36356: Исправление утечек, которые приводили к сбою сборки при конфигурации с санитаром адресов.
bpo-36146: Разрешить параметры с именами
TEST_EXTENSIONS
иsetup.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36146: Исправьте setup.py на macOS: добавьте
/usr/include/ffi
только для каталогов _ctypes, а не для всех расширений.bpo-31904: Разрешить системе сборки кросс-сборку для VxWorks RTOS.
Windows¶
bpo-36312: Исправлены декодеры для следующих кодовых страниц: 50220, 50221, 50222, 50225, 50227, 50229, 57002 - 57011, 65000 и 42.
bpo-36264: Разрешить параметры с именами
HOME
иos.path.expanduser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24643: Исправление коллизий имен из-за
#define timezone _timezone
в PC/pyconfig.h.
IDLE¶
bpo-36405: Использование распаковки диктов в idlelib.
bpo-36396: Удалите параметр fgBg из idlelib.config.GetHighlight(). Этот параметр использовался только дважды и изменял тип возвращаемого значения.
bpo-36176: Исправлены цвета автозаполнения и всплывающих подсказок IDLE. Предотвращает конфликты с темными темами Linux (и немного затемняет фон всплывающих подсказок).
bpo-23205: Для модуля grep добавлены тесты для findfiles, исправлена функция findfiles на функцию уровня модуля и исправлена функция findfiles на использование os.walk.
bpo-23216: Добавьте документацию в модули поиска IDLE.
bpo-36152: Удалите colorizer.ColorDelegator.close_when_done и соответствующий аргумент .close(). В IDLE с 2007 года оба аргумента всегда равны None или False.
bpo-32129: Избегайте размытой иконки приложения IDLE на macOS с Tk 8.6. Исправление Кевина Уолцера.
bpo-36096: Рефакторинг переменных класса в переменные экземпляра в колоризаторе.
bpo-30348: Увеличение тестового покрытия idlelib.autocomplete на 30%. Исправление от Louie Lu
Инструменты/демоверсии¶
C API¶
bpo-36381: Разрешить параметры с именами
DeprecationWarning
иPY_SSIZE_T_CLEAN
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36142: Весь заголовок coreconfig.h теперь исключен из Py_LIMITED_API. Переместите определения функций в новый внутренний заголовок pycore_coreconfig.h.
Python 3.8.0 alpha 2¶
Дата выхода: 2019-02-25
Ядро и встроенные модули¶
bpo-36052: Разрешить параметры с именами
SyntaxError
и__debug__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36012: Удвоена скорость записи переменных класса. При обновлении атрибута, не относящегося к дундеру, происходил ненужный вызов слотов обновления.
bpo-35942: Разрешить параметры с именами
__fspath__
иPathLike
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-36016:
gc.get_objects
теперь могут принимать необязательный параметр, указывающий поколение, из которого нужно получить объекты. Исправление Пабло Галиндо.bpo-1054041: Когда основной интерпретатор завершает работу из-за не пойманного KeyboardInterrupt, процесс теперь завершается соответствующим образом, чтобы его родительский процесс определил, что SIGINT или ^C завершили процесс. Это позволяет оболочкам и пакетным сценариям понять, что пользователь попросил их остановиться.
bpo-35992: Исправление того, что
__class_getitem__()
не вызывался для класса с пользовательским несабскриптовым метаклассом.bpo-35993: Исправление падения на форке при использовании субинтерпретаторов. Внесено Стефаном Виртелом
bpo-35991: Исправьте потенциальную двойную свободу в Modules/_randommodule.c.
bpo-35961: Исправление сбоя в slice_richcompare(): используйте сильные ссылки, а не украденные ссылки для двух временных внутренних кортежей.
bpo-35911: Разрешить параметры с именами
cell.__new__
иcell
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-12822: Разрешить параметры с именами
pthread_cond_timedwait
иpthread_condattr_setclock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-15248: Теперь компилятор выдает синтаксические предупреждения в случае, когда перед кортежем или списком может быть пропущена запятая.
bpo-35886: Реализация PyInterpreterState была перенесена во внутренние заголовочные файлы (охраняемые Py_BUILD_CORE).
bpo-31506: Разрешить параметры с именами
object.__new__
иobject.__init__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35724: Обработка сигналов теперь гарантированно происходит относительно основного интерпретатора.
bpo-33608: Мы добавили новый внутренний _Py_AddPendingCall(), который работает относительно предоставленного интерпретатора. Это позволяет нам использовать существующую реализацию для того, чтобы попросить другой интерпретатор выполнить работу, которая не может быть выполнена в текущем интерпретаторе, например, decref объекта, которым владеет другой интерпретатор. Существующая Py_AddPendingCall() работает только относительно основного интерпретатора.
bpo-33989: Разрешить параметры с именами
list.sort()
иob_type->tp_richcompare == NULL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-35512:
unittest.mock.patch.dict()
, используемый в качестве декоратора со строковой целью, разрешает цель во время вызова функции, а не во время построения декоратора. Исправление от Karthikeyan Singaravelan.bpo-36018: Добавьте statistics.NormalDist, инструмент для создания и работы с нормальными распределениями случайных величин. Имеет составной класс, который рассматривает среднее и стандартное отклонение данных измерений как единое целое.
bpo-35904: Добавлена statistics.fmean() в качестве более быстрого варианта существующей функции mean() с плавающей точкой.
bpo-35918: Удален неработающий метод
has_key
из файла multiprocessing.managers.SyncManager.dict. Внесено Реми Лапейром.bpo-18283: Добавьте поддержку байтов в
shutil.which()
.bpo-35960: Исправление
dataclasses.field()
отбрасывания пустых объектов отображения, переданных в качестве метаданных.bpo-35500: Записывайте ожидаемые и фактические параметры вызова в отдельные строки в ошибках утверждения
unittest.mock.Mock.assert_called_with()
. Внесено Сьюзан Су.bpo-35931: Разрешить параметры с именами
pdb
иdebug
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24209: В скрипте http.server полагайтесь на getaddrinfo для привязки к предпочтительному адресу на основе параметра bind. Теперь привязка по умолчанию или привязка к имени может привязывать к IPv6 или двойному стеку, в зависимости от окружения.
bpo-35321: Разрешить параметры с именами
__spec__.origin
и_frozen_importlib
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35378: Исправлена проблема со ссылкой внутри
multiprocessing.Pool
, из-за которой пул оставался живым, если он был удален без явного закрытия или завершения. В итераторы пула добавлена новая сильная ссылка, связывающая время жизни пула с временем жизни его итераторов, чтобы пул не уничтожался, если итератор пула еще жив.bpo-34294: Разрешить параметры с именами
re.search()
иre.findall()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35615:
weakref
: Исправление RuntimeError при копировании WeakKeyDictionary или WeakValueDictionary, из-за того что некоторые ключи или значения исчезали во время итерации.bpo-35606: Разрешить параметры с именами
math.prod()
иsum()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32417: Разрешить параметры с именами
datetime.datetime
иdatetime.timedelta
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35153: Разрешить параметры с именами
xmlrpc.client.ServerProxy
иxmlrpc.client.Transport
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34572: Исправьте реализацию pickle.loads на C, чтобы использовать механизмы блокировки importlib и тем самым избежать использования частично загруженных модулей. Исправление Тима Берджесса.
Документация¶
Тесты¶
bpo-27313: Избегайте сбоя test_ttk_guionly ComboboxTest в macOS Cocoa Tk.
bpo-36019: Добавьте test.support.TEST_HTTP_URL и замените ссылки http://www.example.com на эту новую константу. Внесено Стефаном Виртелом.
bpo-36037: Исправьте test_ssl для строгой конфигурации OpenSSL, подобной строгой криптополитике RHEL8. При необходимости используйте более старую версию TLS для минимальной версии TLS в SSL-контексте сервера, чтобы протестировать версию TLS старше, чем минимальная версия TLS по умолчанию.
bpo-35798: Добавлено
test.support.check_syntax_warning()
.bpo-35505: Сделайте test_imap4_host_default_value независимым от того, запущен ли локальный IMAP-сервер.
bpo-35917: мультипроцессинг: предоставить юнит-тесты для классов SyncManager и SharedMemoryManager + все разделяемые типы, которые должны поддерживаться ими. (патч от Giampaolo Rodola)
bpo-35704: Пропустите
test_shutil.test_unpack_archive_xztar
, чтобы предотвратить ошибку MemoryError на 32-битных AIX, когда значение MAXDATA меньше 0x20000000.Патч от Майкла Фелта (aixtools)
bpo-34720: Утверждение m_state != NULL для имитации функций обхода GC, которые некорректно обрабатывают создание модуля, если состояние модуля не было создано.
Windows¶
bpo-35976: Добавлена поддержка сборки ARM в файлы сборки Windows в PCBuild.
bpo-35692:
pathlib
больше не возникает при проверке существования файлов и каталогов на дисках, которые не готовыbpo-35872: Использует базовый исполняемый файл Python при вызове venv в виртуальной среде
bpo-35873: Предотвращает наследование путей venv дочерними процессами
bpo-35299: Исправьте определение sysconfig директории источника и работу distutils с pyconfig.h во время профилирования PGO
IDLE¶
Python 3.8.0 alpha 1¶
Дата выхода: 2019-02-03
Безопасность¶
bpo-35746: CVE-2019-5010: Исправление дерефа NULL-указателя в модуле ssl. Парсер сертификатов некорректно обрабатывал точки распространения CRL с пустыми DP или URI. Вредоносный или некачественный сертификат может привести к segfault. Об уязвимости (TALOS-2018-0758) сообщили Колин Рид и Николя Эдет из Cisco.
bpo-34812: Разрешить параметры с именами
-I
иmultiprocessing
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34791: xml.sax и xml.dom.domreg больше не используют переменные окружения для переопределения реализаций парсера, когда sys.flags.ignore_environment задан аргументами -E или -I.
bpo-17239: Парсеры xml.sax и xml.dom.minidom больше не обрабатывают внешние сущности по умолчанию. Внешние объявления DTD и ENTITY больше не загружают файлы и не создают сетевые соединения.
bpo-34623: CVE-2018-14647: Модуль _elementtree с ускорением C теперь инициализирует соль рандомизации хэша из _Py_HashSecret вместо CSPRNG по умолчанию в libexpat.
bpo-34405: Обновлено до OpenSSL 1.1.0i для сборок Windows.
bpo-33871: Исправлена отправка части файла в
os.sendfile()
на macOS. Использование аргумента trailers могло привести к отправке большего количества байт из входного файла, чем было указано.bpo-32533: Исправлена потокобезопасность обработки ошибок в _ssl.
bpo-33136: Защита модуля ssl от LibreSSL CVE-2018-8970. X509_VERIFY_PARAM_set1_host() вызывается с явным namelen. Новый тест гарантирует, что NULL-байты не допускаются.
bpo-33001: Минимальное исправление для предотвращения выхода за пределы буфера в os.symlink на Windows
bpo-32981: Разрешить параметры с именами CVE-2018-1060 и CVE-2018-1061 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-28414: Модуль ssl теперь позволяет пользователям выполнять собственное en/decoding IDN при использовании SNI.
Ядро и встроенные модули¶
bpo-35877: Сделайте скобки необязательными для именованных выражений в операторе while. Исправление от Karthikeyan Singaravelan.
bpo-35814: В аннотированных присваиваниях разрешены те же выражения правой стороны, что и в обычных. В частности, теперь разрешено
x: Tuple[int, int] = 1, 2
(без скобок справа).bpo-35766: Добавляет опцию разбора комментариев типов PEP 484 в модуль ast. (По умолчанию отключена.) Это объединяет ключевую функциональность стороннего форка этого модуля, [typed_ast](https://github.com/python/typed_ast).
bpo-35713: Реорганизуйте инициализацию Python, чтобы раньше получать рабочие исключения и sys.stderr.
bpo-33416: Добавляет информацию о положении конечной строки и конечного столбца в узлы Python AST. Это изменение несовместимо с обратным развитием на уровне C.
bpo-35720: Исправлена незначительная утечка памяти в функции pymain_parse_cmdline_impl в Modules/main.c
bpo-35634: Разрешить параметры с именами
func(**kwargs)
иkwargs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35623: Исправление сбоя при сортировке очень длинных списков. Исправление от Stephan Hohe.
bpo-35214: добавлена инструментация сборки clang Memory Sanitizer для борьбы с ложными срабатываниями от posix, socket, time, test_io и test_faulthandler.
bpo-35560: Исправление ошибки утверждения в
format()
в отладочной сборке для форматирования с плавающей запятой с форматом «n», нулевой подстановкой и малой шириной. Релизная сборка не затронута. Исправление от Karthikeyan Singaravelan.bpo-35552: Разрешить параметры с именами
%s
и%V
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35504: Исправление сегфайтов и
SystemError
при удалении некоторых атрибутов. Исправление от Zackery Spytz.bpo-35504: Исправлена ошибка SystemError при удалении атрибута characters_written из OSError.
bpo-35494: Улучшены сообщения о синтаксических ошибках для несбалансированных круглых скобок в f-строке.
bpo-35444: Исправлена обработка ошибок в методах pickling, когда не удавалось найти встроенный «getattr». Ускорена работа итераторов пикинга.
bpo-35436: Исправление различных проблем с обработкой ошибок выделения памяти. Исправление от Zackery Spytz.
bpo-35423: Отделите триггер обработки сигналов в цикле eval от механизма «ожидающих вызовов». Семантических изменений нет, а разница в производительности незначительна.
bpo-35357: Имена внутренних атрибутов unittest.mock._Call и unittest.mock.MagicProxy (name, parent & from_kall) теперь имеют префикс _mock_, чтобы избежать столкновений с широко используемыми атрибутами объектов. Исправлена незначительная опечатка в имени тестовой функции.
bpo-35372: Исправлен декодер кодовых страниц для ввода длиной более 2 ГБ, содержащих недекодируемые байты.
bpo-35336: Исправьте переменную окружения PYTHONCOERCECLOCALE=1: принудительное использование локали C только в том случае, если локаль LC_CTYPE равна «C».
bpo-31241: Атрибуты lineno и col_offset узлов AST для списков, генераторов выражений и кортежей теперь указывают на открывающую скобку или квадратную скобку. Для кортежей без скобок они указывают на позицию первого элемента.
bpo-33954: Разрешить параметры с именами
str.format()
иfloat.__format__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35269: Исправление возможного segfault, связанного с вновь созданным coroutine. Исправление от Zackery Spytz.
bpo-35224: Реализуйте PEP 572 (выражения присваивания). Автор патча - Эмили Морхаус.
bpo-32492: Ускорение доступа к атрибутам
namedtuple()
в 1,6 раза с помощью быстрого пути на C для дескрипторов имен. Исправление Пабло Галиндо.bpo-35214: Исправлен выход за границы памяти при разборе усеченной юникодной управляющей последовательности в конце строки, такой как
'\N'
. При этом считывался один байт, выходящий за пределы выделенной памяти.bpo-35214: В модули интерпретатора и расширений добавлены аннотации, чтобы они корректно работали под управлением санитара памяти clang. Новый флаг configure –with-memory-sanitizer был добавлен, чтобы облегчить выполнение тестовых сборок такого рода.
bpo-35193: Исправление ошибки в оптимизаторе peephole байткода, когда он мог считывать байты за пределы массива при удалении недостижимого кода. Эта ошибка присутствовала во всех выпусках Python 3.6 и 3.7 до настоящего момента.
bpo-35169: Улучшены сообщения об ошибках при запрещенных присваиваниях.
bpo-34022: Исправлена работа с файлами байткода на основе хэшей в
zipimport
. Исправление от Элвиса Пранскевичуса.bpo-28401: Отладочные сборки больше не будут пытаться импортировать модули расширения, созданные для ABI, так как они никогда не были совместимы. Исправление Стефано Ривера.
bpo-29341: Уточните в документах методов
os
, что объекты типа path также принимаются в качестве входных параметров.bpo-35050: Разрешить параметры с именами
socket
иAF_ALG
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29743: Разрешить параметры с именами
ValueError
иOverflowError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-16806: Разрешить параметры с именами
lineno
иcol_offset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35029: Разрешить параметры с именами
SyntaxWarning
иSyntaxError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34983: Раскрытие
symtable.Symbol.is_nonlocal()
в модуле symtable. Исправление от Пабло Галиндо.bpo-34974: Разрешить параметры с именами
bytes
иbytearray
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34939: Разрешить аннотированные имена в пространстве имен модуля, которые объявлены глобальными до того, как произойдет аннотирование. Исправление Пабло Галиндо.
bpo-34973: Разрешить параметры с именами
bytes()
иlist
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34876: Разрешить параметры с именами
def
иasync def
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34879: Исправление возможного разыменования нулевого указателя в bytesobject.c. Исправление от Zackery Spytz.
bpo-34784: Исправьте реализацию PyStructSequence_NewType для создания StructSequences, выделяемых из кучи.
bpo-32912: Разрешить параметры с именами
SyntaxWarning
иDeprecationWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34854: Исправлен сбой при компиляции строковых аннотаций, содержащих лямбду с аргументом «только ключ», не имеющим значения по умолчанию.
bpo-34850: Разрешить параметры с именами
SyntaxWarning
иis
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34824: Исправление возможного разыменования нулевого указателя в Modules/_ssl.c. Исправление от Zackery Spytz.
bpo-30156: Разрешить параметры с именами
property_descr_get()
иsys.getobjects()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34762: Исправьте C API contextvars для использования типов указателей PyObject*.
bpo-34751: Хэш-функция для кортежей теперь основана на xxHash, что дает лучшие результаты по коллизиям в (ранее) патологических случаях. Кроме того, на 64-битных системах это улучшает хэши кортежей в целом. Исправление сделано Йеруном Демейером при значительном участии Тима Питерса.
bpo-34735: Исправьте утечку памяти в Modules/timemodule.c. Исправление от Zackery Spytz.
bpo-34683: Исправлена ошибка, когда некоторые ошибки SyntaxError указывали на места, которые были смещены на один.
bpo-34651: Разрешить форк только основного интерпретатора. Это позволяет избежать возможности влияния на основной интерпретатор, что критично для работы среды выполнения.
bpo-34653: Удалите неиспользуемую функцию PyParser_SimpleParseStringFilename.
bpo-32236: Разрешить параметры с именами
open()
иbuffering=1
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34641: Дальнейшее ограничение синтаксиса левой части аргументов ключевых слов в вызовах функций. В частности, теперь запрещено использовать
f((keyword)=arg)
.bpo-34637: Сделайте аргумент start для sum() видимым в качестве аргумента ключевого слова.
bpo-1621: Не предполагайте поведения переполнения знаковых целых чисел (неопределенное поведение C) при изменении размера хэш-таблицы.
bpo-34588: Исправьте ошибку «off-by-one» в функции обрезки рекурсивных вызовов при форматировании обратных трасс.
bpo-34485: В Windows локаль LC_CTYPE теперь устанавливается в предпочитаемую пользователем локаль при запуске. Ранее при запуске локаль LC_CTYPE была «C», но менялась при вызове setlocale(LC_CTYPE, «») или setlocale(LC_ALL, «»).
bpo-34485: Стандартные потоки, такие как sys.stdout, теперь используют обработчик ошибок «surrogateescape» вместо «strict» на локали POSIX (когда локаль C не принудительно и отключен режим UTF-8).
bpo-34485: Исправьте обработчик ошибок стандартных потоков, таких как sys.stdout: PYTHONIOENCODING=«:» теперь игнорируется вместо установки обработчика ошибок на «strict».
bpo-34485: Теперь Python получает кодировку локали вместе с кодом на C, чтобы инициализировать кодировку стандартных потоков, таких как sys.stdout. Более того, теперь кодировка инициализируется именем кодека Python, чтобы получить нормализованное имя кодировки и убедиться, что кодек загружен. Это изменение позволяет избежать импорта модулей _bootlocale и _locale при запуске по умолчанию.
bpo-34527: Во FreeBSD функции Py_DecodeLocale() и Py_EncodeLocale() теперь также заставляют использовать кодировку ASCII, если локаль LC_CTYPE равна «POSIX», а не только если локаль LC_CTYPE равна «C».
bpo-34527: Режим UTF-8 теперь включен и в локали «POSIX», а не только в локали «C».
bpo-34403: На HP-UX с локалью C или POSIX функция sys.getfilesystemencoding() теперь возвращает «ascii» вместо «roman8» (когда режим UTF-8 отключен и локаль C не принудительно установлена).
bpo-34523: Кодировка файловой системы Python теперь считывается раньше во время инициализации Python.
bpo-12458: Трассировки теперь показывают правильный номер строки для подвыражений в многострочных выражениях. В возвратах теперь отображается номер первой строки для многострочных выражений, а не номер строки последнего подвыражения.
bpo-34408: Предотвращение разыменования нулевого указателя и утечки ресурсов в
PyInterpreterState_New()
.bpo-34400: Исправьте неопределенное поведение в parsetok.c. Исправление от Zackery Spytz.
bpo-33073: Добавлена функция as_integer_ratio для ints, чтобы сделать их более совместимыми с float.
bpo-34377: Разрешить параметры с именами
_PyObject_Free
и_PyObject_Realloc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34353: Добавлена опция «socket» в
stat.filemode()
реализации Python, чтобы соответствовать реализации C.bpo-34320: Исправление
dict(od)
не копировало порядок итераций OrderedDict.bpo-34113: Исправлен сбой в отладочных сборках, когда стек опкодов корректировался отрицательными числами. Исправление от Константина Петрисора.
bpo-34100: Компилятор теперь рекурсивно объединяет константы в кортежах и фразенсетах. Атрибуты кода, такие как
co_names
, также объединяются.bpo-34151: Немного улучшена производительность операций конкатенации, повторения и нарезки списков. Патч от Сергея Федосеева.
bpo-34170: -X dev: теперь можно переопределить аллокатор памяти с помощью PYTHONMALLOC, даже если включен режим разработчика.
bpo-33237: Улучшено сообщение
AttributeError
для частично инициализированного модуля.bpo-34149: Исправьте функции min и max для получения поведения по умолчанию, когда ключ равен None.
bpo-34125: Профилирование несвязанных встроенных методов теперь работает при указании
**kwargs
.bpo-34141: Оптимизирована выборка атомарных типов (None, bool, int, float, bytes, str).
bpo-34126: Исправление сбоев при профилировании некоторых некорректных вызовов несвязанных методов. Исправление от Jeroen Demeyer.
bpo-24618: Исправлено чтение недопустимой памяти при создании объекта кода со слишком маленьким кортежем varnames или слишком большим количеством аргументов.
bpo-34068: Разрешить параметры с именами
io.IOBase.close()
иclosed
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34087: Исправление переполнения буфера при преобразовании юникода в числовые значения.
bpo-34080: Исправлена утечка памяти в компиляторе, когда он выдавал некоторые необычные ошибки при токенизации.
bpo-34066: Разрешить параметры с именами
open()
иwith open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34042: Исправьте dict.copy() для сохранения корректного общего количества ссылок (как сообщает sys.gettotalrefcount()).
bpo-33418: Исправлена потенциальная утечка памяти в объекте функции при создании цикла ссылок.
bpo-33985: Реализуйте атрибут contextvars.ContextVar.name.
bpo-33956: Обновление копии вендоризованной библиотеки Expat до версии 2.2.5.
bpo-24596: Разрешить параметры с именами
PyRun_SimpleFileExFlags()
иPyErr_Print()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33451: Закройте непосредственно выполняемые файлы pyc перед вызовом
PyEval_EvalCode()
.bpo-1617161: Разрешить параметры с именами
BuiltinMethodType
иModuleType
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33824: Исправление «LC_ALL=C python3.7 -V»: корректный сброс парсера командной строки при изменении кодировки после чтения конфигурации Python.
bpo-33803: Исправление сбоя в hamt.c, вызванного включением GC tracking для объекта, у которого не все поля были установлены в NULL.
bpo-33738: Разрешить параметры с именами
PyIter_Check()
иPyIndex_Check()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33786: Исправьте асинхронные генераторы для корректной обработки GeneratorExit в athrow()
bpo-30167: Разрешить параметры с именами
PyRun_SimpleFileExFlags
и__cached__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33706: Исправление сбоя в инициализации Python при разборе опций командной строки. Спасибо Кристофу Гольке за сообщение об ошибке и исправление!
bpo-33597: Уменьшите размер
PyGC_Head
с 3 до 2 слов.bpo-30654: Исправлен сброс обработчика SIGINT на SIG_DFL при выключении интерпретатора, даже если ранее был установлен пользовательский обработчик. Исправление от Филиппа Керлинга.
bpo-33622: Разрешить параметры с именами
__del__
иgc.garbage
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33462: Сделайте представления dict и dict обратимыми. Исправление от Rémi Lapeyre.
bpo-23722: Разрешить параметры с именами
RuntimeError
и__classcell__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33499: Разрешить параметры с именами
PYTHONPYCACHEPREFIX
и-X
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33509: Исправьте параметр module_globals в warnings.warn_explicit(): не падайте, если module_globals не является dict.
bpo-31849: Исправьте предупреждение о сравнении знака/незнака в pyhash.c.
bpo-33475: Исправлены различные ошибки при преобразовании аннотаций в строки и оптимизированы круглые скобки в строковом представлении.
bpo-20104: Разрешить параметры с именами
setpgroup
иresetids
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33391: Исправьте утечку в функции set_symmetric_difference().
bpo-33363: Разрешить параметры с именами
async with
иasync for
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28055: Исправление не выровненных доступов в siphash24(). Исправление от Rolf Eike Beer.
bpo-33128: Исправление ошибки, из-за которой PathFinder дважды появлялся в sys.meta_path. Автор исправления - Пабло Галиндо Сальгадо.
bpo-33331: Модули, импортированные последними, теперь очищаются первыми при завершении работы интерпретатора.
bpo-33312: Исправлены предупреждения clang ubsan (undefined behavior sanitizer) в dictobject.c путем корректировки объявления внутренней структуры общих ключей struct _dictkeysobject.
bpo-33305: Улучшены сообщения об ошибках синтаксиса для недопустимых числовых литералов.
bpo-33306: Улучшены сообщения о синтаксических ошибках для несбалансированных круглых скобок.
bpo-33234: Конструктор списка будет предварительно определять размер и не перераспределять его, если известна длина входных данных.
bpo-33270: Ставить имена для всех объектов анонимного кода. Исправление от Zackery Spytz.
bpo-30455: Код на C и Python, а также документация, связанная с токенами, теперь генерируются из одного исходного файла
Grammar/Tokens
.bpo-33176: Добавьте метод
toreadonly()
к просмотру памяти.bpo-33231: Исправьте потенциальную утечку памяти в
normalizestring()
.bpo-33205: Разрешить параметры с именами
round_up_to_power_2(used*2+hashtable_size/2)
иround_up_to_power_2(used*3)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29922: Разрешить параметры с именами
__aenter__()
и__aexit__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33199: Исправление
ma_version_tag
в реализации dict не инициализируется при копировании из dict с общим доступом к ключу.bpo-33053: При использовании ключа -m путь sys.path[0] теперь явно расширяется как начальный рабочий каталог, а не остается пустым (что позволяет импортировать из текущего рабочего каталога на момент импорта).
bpo-33138: Изменено стандартное сообщение об ошибке для непикетируемых и некопируемых типов. Теперь оно говорит «cannot pickle» вместо «can’t pickle» или «cannot serialize».
bpo-33018: Улучшение согласованности ошибок, вызываемых
issubclass()
при вызове с неклассом и абстрактным базовым классом в качестве первого и второго аргументов соответственно. Исправление Джоша Бронсона.bpo-33083:
math.factorial
больше не принимает аргументы, которые не являются int-подобными. Исправление Пабло Галиндо.bpo-33041: Добавлен новый опкод
END_ASYNC_FOR
и исправлены следующие проблемы:Установка глобальных
StopAsyncIteration
больше не нарушает циклыasync for
.Переход в цикл
async for
теперь отключен.Выход из цикла
async for
больше не приводит к повреждению стека.
bpo-25750: Исправление редкого сбоя Python из-за неправильного подсчета ссылок в
type_getattro()
, если дескриптор удаляет себя из класса. Исправление от Jeroen Demeyer.bpo-33041: Исправлена генерация байткода для «async for» со сложной целью. Остановка итерации StopAsyncIteration, поднятая при присваивании или распаковке, теперь будет распространяться вместо остановки итерации.
bpo-33026: Исправлено выскакивание из блока «с» при установке f_lineno.
bpo-33005: Исправление падения при форке при использовании пользовательского аллокатора памяти (например, при использовании переменной окружения PYTHONMALLOC). _PyGILState_Reinit() и _PyInterpreterState_Enable() теперь используют стандартный RAW-распределитель памяти для выделения нового мьютекса интерпретатора на форке.
bpo-32911: Разрешить параметры с именами bpo-29463 и
docstring
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-17288: Предотвращение переходов из событий трассировки „return“ и „exception“.
bpo-32946: Импорт имен из уже импортированного модуля с помощью «from … import …» теперь выполняется на 30% быстрее, если модуль не является пакетом.
bpo-32932: Сделайте сообщение об ошибке более наглядным, если в
__all__
есть объекты, не являющиеся строками.bpo-32925: Разрешить параметры с именами
x in [a, b]
иfor x in [a, b]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32889: Разрешить параметры с именами
Py_ADDRESS_IN_RANG
иaddress_in_range
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32836: Не используйте временные переменные в случаях понимания списков/диктов/наборов
bpo-31356: Удалите новый API, добавленный в bpo-31356 (менеджер контекста gc.ensure_disabled()).
bpo-32305: Разрешить параметры с именами
__file__
и__spec__.origin
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32303: Разрешить параметры с именами
__spec__.loader
и__loader__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32711: Исправьте предупреждающие сообщения для Python/ast_unparse.c. Исправление от Stéphane Wirtel
bpo-32583: Исправление возможного падения встроенных декодеров Unicode, вызванного ошибками записи за пределы границ при использовании настраиваемых обработчиков ошибок декодирования.
bpo-32489: Разрешить параметры с именами
continue
иfinally
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-17611: Разрешить параметры с именами
break
иcontinue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. АасландаBREAK_LOOP
: Разрешить параметры с именамиCONTINUE_LOOP
иSETUP_LOOP
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32285: Новая функция unicodedata.is_normalized, которая может проверить, находится ли строка в определенной нормальной форме.
bpo-10544: Выражения Yield теперь запрещены в комплексных и генераторных выражениях, за исключением выражения для крайнего итерируемого.
bpo-32117: Распаковка итераций теперь разрешена без круглых скобок в операторах yield и return, например
yield 1, 2, 3, *rest
. Спасибо Дэвиду Катберту за это изменение и Джордану Чепмену за добавленные тесты.bpo-31902: Разрешить параметры с именами
col_offset
иast.AsyncFor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25862: Разрешить параметры с именами
tell()
иio.TextIOWrapper
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21983: Исправление сбоя в
ctypes.cast()
в случае, если аргумент type является структурированным типом данных ctypes. Исправление от Эрика Суна и Орена Милмана.bpo-31577: Исправление сбоя в
os.utime()
в случае плохого аргумента ns. Исправление от Орена Милмана.bpo-29832: Удалите ссылки на „getsockaddrarg“ из различных сообщений об ошибках сокетов. Исправление от Орена Милмана.
Библиотека¶
bpo-35845: Добавьте параметр „order“ в memoryview.tobytes().
bpo-35864: Метод _asdict() для collections.namedtuple теперь возвращает обычный dict, а не OrderedDict.
bpo-35537: ExitStack теперь используется внутри subprocess.Popen для очистки файловых дескрипторов pipe. В обычной работе поведение не изменилось. Но если закрытие одного хэндла приведет к исключению, то теперь остальные будут закрыты вместо утечки (патч от Giampaolo Rodola).
bpo-35847: RISC-V требовалось CTYPES_PASS_BY_REF_HACK. Исправления ctypes Структура test_pass_by_value.
bpo-35813: Подмодуль общей памяти добавлен в многопроцессорную обработку, чтобы избежать необходимости сериализации между процессами
bpo-35780: Исправление ошибок lru_cache(), возникающих в рекурсивном, реентерабельном или многопоточном коде. Эти ошибки могли приводить к появлению бесхозных ссылок и застреванию кэша в состоянии с меньшим, чем заданное максимальное количество ссылок. Исправлена обработка отрицательного maxsize, который должен был восприниматься как ноль. Исправление ошибок при переключении флага состояния «полный». Исправление неправильного упорядочивания ссылок при возникновении ошибок. Синхронизация кода на C и чистого кода на Python для пути экономии места в функциях с одним позиционным аргументом. В этом распространенном случае накладные расходы пространства на запись в кэш lru сокращаются почти вдвое. Исправлен подсчет промахов в кэше. В случаях ошибок подсчет промахов не совпадал с фактическим количеством вызовов базовой пользовательской функции.
bpo-35537: Разрешить параметры с именами
os.posix_spawn()
иos.posix_spawnp()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23846:
asyncio.ProactorEventLoop
теперь перехватывает и регистрирует ошибки отправки, когда self-pipe переполнен.bpo-34323: Разрешить параметры с именами
asyncio
иIocpProactor.close()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35674: Добавьте новую функцию
os.posix_spawnp()
. Исправление от Joannah Nanjekye.bpo-35733: Разрешить параметры с именами
ast.Constant(boolean)
иast.Num
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35726: QueueHandler.prepare() теперь создает копию записи перед ее изменением и постановкой в очередь, чтобы избежать влияния на другие обработчики в цепочке.
bpo-35719: Ускорение работы многоаргументных
math
функций atan2(), copysign(), remainder() и hypot() в 1,3–2,5 раза.bpo-35717: Исправление исключения KeyError, возникающего при использовании перечислений и компиляции. Заплатка предоставлена Rémi Lapeyre.
bpo-35699: Исправлено обнаружение Visual Studio Build Tools 2017 в distutils
bpo-32710: Исправление утечек памяти в asyncio ProactorEventLoop при сбое операции с перекрытием.
bpo-35702: Константа
time.CLOCK_UPTIME_RAW
теперь доступна для macOS 10.12.bpo-32710: Разрешить параметры с именами
ReadFile()
иWSASend()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35682: Исправление
asyncio.ProactorEventLoop.sendfile()
: не пытайтесь установить результат внутреннего будущего, если оно уже выполнено.bpo-35283: Добавьте предупреждение об устаревании для метода
threading.Thread.isAlive()
. Исправление от Donghee Na.bpo-35664: Улучшение производительности operator.itemgetter() на 33% за счет оптимизированной обработки аргументов и добавления быстрого пути для распространенного случая единственного неотрицательного целочисленного индекса в кортеже (что является типичным случаем использования в стандартной библиотеке).
bpo-35643: Исправлена ошибка SyntaxWarning: invalid escape sequence в Modules/_sha3/cleanup.py. Исправление от Mickaël Schoentgen.
bpo-35619: Разрешить параметры с именами
help()
иpydoc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28503: Разрешить параметры с именами
crypt
иcrypt_r()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35614: Исправлена функция help() для метаклассов. Исправление от Sanyam Khurana.
bpo-35568: Разрешить параметры с именами
raise(signum)
иraise_signal
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35588: Разрешить параметры с именами
divmod()
иfractions.Fraction
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35585: Ускоряет построение перечислений по значению, например http.HTTPStatus(200).
bpo-30561: random.gammavariate(1.0, beta) теперь вычисляет тот же результат, что и random.expovariate(1.0 / beta). Это синхронизирует два алгоритма и устраняет некоторые идиосинкразии в старой реализации. Однако при этом поток случайных величин получается не таким, как раньше.
bpo-35537: Разрешить параметры с именами
subprocess
иos.posix_spawn()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35526: Откладываем «шутку» barry_as_FLUFL.mandatory до версии Python 4.0
bpo-35523: Разрешить параметры с именами
ctypes
иimport ctypes
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31784: Разрешить параметры с именами
uuid.uuid1()
иtime.time_ns()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35513: Разрешить параметры с именами
TextTestRunner
иunittest.runner
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35502: Исправлена утечка ссылок в
xml.etree.ElementTree.TreeBuilder
в случае незавершенного построения дерева (в частности, когда возникала ошибка при разборе XML).bpo-35348: Разрешить параметры с именами
platform.architecture()
иfile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35491: Разрешить параметры с именами
multiprocessing
иPool.__repr__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35477: Разрешить параметры с именами
multiprocessing.Pool.__enter__()
иwith pool:
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31446: Копирует командную строку, переданную CreateProcessW, поскольку эта функция может изменять содержимое входного буфера.
bpo-35471: Python 2.4 отказался от поддержки MacOS 9. Модуль macpath был устаревшим в Python 3.7. Теперь модуль удален.
bpo-23057: Разблокировать цикл событий Proactor при получении прерывания от клавиатуры в Windows
bpo-35052: Исправьте xml.dom.minidom cloneNode() в документе с сущностью: передавайте правильные аргументы обработчику пользовательских данных сущности.
bpo-20239: Разрешить повторное удаление назначений атрибутов
unittest.mock.Mock
. Исправление Пабло Галиндо.bpo-17185: Разрешить параметры с именами
__signature__
иinspect
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35445: Ошибки памяти при создании posix.environ больше не игнорируются.
bpo-35415: Проверьте аргумент fileno= для socket.socket().
bpo-35424: Разрешить параметры с именами
multiprocessing.Pool
иResourceWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35330: Разрешить параметры с именами
Mock
иside_effect
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35346: Удалите поддержку Mac OS 9 и Rhapsody из модуля
platform
. Последний релиз Rhapsody состоялся в 2000 году. Последний выпуск Mac OS 9 состоялся в 2001 году.bpo-10496: Разрешить параметры с именами
check_environ()
иdistutils.utils
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-10496: Разрешить параметры с именами
posixpath.expanduser()
иHOME
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35389: Разрешить параметры с именами
platform.libc_ver()
иos.confstr('CS_GNU_LIBC_VERSION')
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35394: Добавьте пустые слоты в абстрактные протоколы asyncio.
bpo-35310: Разрешить параметры с именами
select.select()
иselect.select()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35380: Включите TCP_NODELAY в Windows для цикла событий proactor asyncio.
bpo-35341: Разрешить параметры с именами
collections.OrderedDict
иtyping
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35371: Исправлено возможное падение
os.utime()
на Windows при передаче неверных аргументов.bpo-35346: Разрешить параметры с именами
platform.uname()
иstderr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35066: Ранее вызов метода strftime() на объекте datetime с завершающим „%“ в строке формата приводил к исключению. Однако это происходило только при использовании модуля datetime C; реализация на python не соответствовала такому поведению. Теперь Datetime совместим с PEP-399 и не будет выбрасывать исключение при наличии в строке форматирования символа „%“.
bpo-35345: Разрешить параметры с именами
platform.popen
иos.popen()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35344: Разрешить параметры с именами
platform.platform()
иplatform.mac_ver()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35312: Сделайте
lib2to3.pgen2.parse.ParseError
пригодным для маринования в обе стороны. Исправление Энтони Соттила.bpo-35308: Разрешить параметры с именами
webbrowser
иBROWSER
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24746: Избегайте удаления пробельных символов в конце doctest fancy diff. Оригинальный патч от R. David Murray & Jairo Trad. Исправлено Саньямом Кхураной.
bpo-28604: Разрешить параметры с именами
locale.localeconv()
иLC_CTYPE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35277: Обновите ensurepip для установки pip 18.1 и setuptools 40.6.2.
bpo-24209: Добавляет поддержку IPv6 при прямом вызове http.server.
bpo-35226: Разрешить параметры с именами
unittest.mock.call
иmock_calls
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29564: Модуль предупреждений теперь предлагает включить tracemalloc, если указан источник, модуль tracemalloc доступен, но tracemalloc не отслеживает выделение памяти.
bpo-35189: Модифицируйте следующую функцию fnctl, чтобы повторить попытку, если она прервана сигналом (EINTR): flock, lockf, fnctl
bpo-30064: Используйте add_done_callback() в sock_* asyncio API для ранней отписки читателя/писателя при калькировании.
bpo-35186: Разрешить параметры с именами
setup.py upload
иbdist_rpm
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35152: Разрешите отправлять более 2 ГБ одновременно при многопроцессорном соединении на системах, отличных от Windows.
bpo-35062: Исправьте неправильный разбор аргумента translate в
_io.IncrementalNewlineDecoder
.bpo-35065: Разрешить параметры с именами
StreamReaderProtocol._untrack_reader
и_untrack_reader
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34160: ElementTree и minidom теперь сохраняют порядок атрибутов, указанный пользователем.
bpo-35079: Улучшите документ difflib.SequenceManager.get_matching_blocks, добавив „non-overlapping“ и заменив „!=“ на „<“.
bpo-33710: Разрешить параметры с именами
l*gettext()
иgettext
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35017: Разрешить параметры с именами
socketserver.BaseServer.serve_forever()
иshutdown()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35024: Разрешить параметры с именами
importlib
иwrote <bytecode path>
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35047: Разрешить параметры с именами
unittest.mock
иassert_not_called
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31047: Исправление ошибки
ntpath.abspath
, когда он не удалял концевой разделитель в Windows. Исправление Тима Грэма.bpo-35053: tracemalloc теперь пытается обновить traceback, когда объект повторно используется из «свободного списка» (оптимизация для ускорения создания объектов, используется, например, встроенным типом списка).
bpo-31553: Добавьте опцию –json-lines в json.tool. Исправление от hongweipeng.
bpo-34794: Исправлена утечка в Tkinter при передаче Python-обёртки вокруг Tcl_Obj обратно в Tcl/Tk.
bpo-34909: Enum: исправление подклассификации внуков, когда родитель смешивается с конкретными типами данных.
bpo-35022: Разрешить параметры с именами
unittest.mock.MagicMock
и__fspath__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35008: Разрешить параметры с именами
__setstate__()
иxml.etree.ElementTree.Element
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23420: Проверьте значение параметра „-s“ в cProfile CLI. Исправление от Роберта Куски
bpo-33947: классы данных теперь обрабатывают рекурсивные репризы без возникновения ошибки RecursionError.
bpo-34890: Разрешить параметры с именами
inspect.iscoroutinefunction()
иinspect.isgeneratorfunction()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34521: Разрешить параметры с именами
socket.CMSG_SPACE()
иsocket.CMSG_LEN()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31522: Параметр from_ функции
mailbox.mbox.get_string
теперь может быть успешно установлен в значение не по умолчанию.bpo-34970: Защитите задачи слабой манипуляции множествами в
asyncio.all_tasks()
bpo-34969: gzip: Добавьте –fast, –best в gzip CLI, эти параметры будут использоваться для быстрого метода сжатия (быстро) или лучшего метода сжатия (медленнее, но меньше файл). Также измените уровень сжатия по умолчанию на 6 (компромисс).
bpo-16965: Разрешить параметры с именами
execfile
и'rb'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34966:
pydoc
теперь поддерживает псевдонимы не только на методы, определенные в конечном классе, но и на наследуемые методы. Документная строка не дублируется для псевдонимов.bpo-34926: Разрешить параметры с именами
mimetypes.MimeTypes.guess_type()
и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23831: Разрешить параметры с именами
moveto()
иtkinter.Canvas
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34941: Разрешить параметры с именами
find()
иfindtext()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32680: Разрешить параметры с именами
smtplib.SMTP
иsock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34769: Исправление того, что генераторы async не завершались, когда цикл событий находился в режиме отладки, а сборщик мусора работал в другом потоке.
bpo-34936: Разрешить параметры с именами
TclError
иtkinter.Spinbox.selection_element()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34829: Разрешить параметры с именами
selection_from
иselection_range
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34911: Добавлен аргумент secure_protocols в http.cookiejar.DefaultCookiePolicy для настройки протоколов, а также для добавления поддержки по умолчанию wss, безопасного протокола websocket.
bpo-34922: Разрешить параметры с именами
digest()
иhexdigest()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34925: 25-процентное ускорение разбора аргументов для функций в модуле bisect.
bpo-34900: Исправлено
unittest.TestCase.debug()
при использовании для вызова тестовых методов с подтестами. Исправление Бруно Оливейры.bpo-34844: Улучшение logging.Formatter - Обеспечение совпадения стилей и fmt в logging.Formatter - Добавлен метод validate в каждом классе стилей формата: StrFormatStyle, PercentStyle, StringTemplateStyle. - Этот метод вызывается в конструкторе класса logging.Formatter - Также повторно поднимаем KeyError в методе format каждого класса стиля, чтобы было немного понятно, что это ошибка с недействительными полями формата.
bpo-34897: Настройте проверку test.support.missing_compiler_executable так, чтобы номинальное имя команды «» игнорировалось. Исправление Майкла Фелта.
bpo-34871: Разрешить параметры с именами
sys.modules
и__text_signature__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34898: Разрешить параметры с именами
mtime
иgzip.compress
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28441: Разрешить параметры с именами
sys.executable
и.exe
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34866: Разрешить параметры с именами
max_num_fields
иcgi.FieldStorage
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34711: http.server гарантирует, что он сообщает HTTPStatus.NOT_FOUND, когда локальный путь заканчивается на «/» и не является каталогом, даже если базовая ОС (например, AIX) принимает такой путь как корректную ссылку на файл. Исправление Майкла Фелта.
bpo-34872: Исправьте самоотмену в реализации asyncio.Task на C
bpo-34849: Не регистрируйте ожидание
selector.select
в итерации цикла asyncio. Ожидание - это нормальное явление для любой программы asyncio, регистрация его времени просто добавляет шум в журналы без какой-либо полезной информации.bpo-34022: Разрешить параметры с именами
SOURCE_DATE_EPOCH
иpy_compile.compile()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34819: Разрешить параметры с именами
Executor.map()
иas_completed()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34758: Добавьте .wasm -> application/wasm в список распознаваемых типов файлов и заголовков типов содержимого
bpo-34789:
xml.sax.make_parser()
теперь принимает любую итерабельную переменную в качестве аргумента parser_list. Исправление Андреса Дельфино.bpo-34334: Разрешить параметры с именами
QueueHandler
иexc_text
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34687: В Windows asyncio теперь по умолчанию использует ProactorEventLoop, а не SelectorEventLoop.
bpo-5950: Поддержка чтения zip-файлов с архивными комментариями в
zipimport
.bpo-32892: Разрешить параметры с именами
ast.Constant
иNum
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34728: Разрешить параметры с именами
loop
иasyncio.sleep
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34738: ZIP-файлы, созданные
distutils
, теперь будут содержать записи для каталогов.bpo-34659: Добавьте необязательный инициальный аргумент в itertools.accumulate().
bpo-29577: Поддержка нескольких классов-миксинов при создании Enums.
bpo-34670: Добавьте SSLContext.post_handshake_auth и SSLSocket.verify_client_post_handshake для функции аутентификации после рукопожатия в TLS 1.3.
bpo-32718: Сценарий Activate.ps1 от venv работает с PowerShell Core 6.1 и теперь доступен для всех операционных систем.
bpo-31177: Исправлена ошибка, не позволявшая использовать
reset_mock
для экземпляров mock с удаленными атрибутамиbpo-34672: Разрешить параметры с именами
'Z'
иtime.strftime()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34666: Разрешить параметры с именами
asyncio.StreamWriter.awrite
иasyncio.StreamWriter.aclose()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-6721: Приобретайте часто используемые внутренние блокировки модуля логирования при выполнении fork()ing, чтобы избежать тупиковых ситуаций в дочернем процессе.
bpo-34658: Исправление редкого необработанного интерпретатором исключения состояния SystemError, наблюдавшегося только при использовании subprocess с prexec_fn, когда обработчик after_parent был зарегистрирован с помощью os.register_at_fork и системный вызов fork завершился неудачей.
bpo-34652: Убедитесь, что
os.lchmod()
никогда не определяется в Linux.bpo-34638: Хранит слабую ссылку на читателя потока, чтобы разорвать цикл сильных ссылок между читателем и протоколом. Это позволяет обнаружить и закрыть сокет, если поток будет удален (собран мусор) без вызова
close()
.bpo-34536: Разрешить параметры с именами
Enum._missing_
иValueError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34636: Ускорение повторного сканирования многих несовпадающих символов для s w и d в объектах байтов. (микрооптимизация)
bpo-24412: Разрешить параметры с именами
addModuleCleanup()
иaddClassCleanup()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34630: Не регистрировать ошибки SSL-сертификата в коде asyncio (регистрация ошибок соединения и так пропускается).
bpo-32490: Предотвращение дублирования имен файлов в сообщениях исключений
subprocess
. Исправление от Zackery Spytz.bpo-34363: dataclasses.asdict() и .astuple() теперь корректно обрабатывают namedtuples.
bpo-34625: Обновите версию библиотеки vendorized expat до 2.2.6.
bpo-32270: Модуль подпроцесса больше не закрывает ошибочно перенаправленные fds, даже если они находились в pass_fds за пределами стандартного набора {0, 1, 2}.
bpo-34622: Разрешить параметры с именами
asyncio.CancelledError
иasyncio.InvalidStateError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34610: Исправлен итератор
multiprocessing.managers.DictProxy
.bpo-34421: Исправление протоколирования distutils для строк, отличных от ASCII. Это вызывало проблемы с установкой под Windows.
bpo-34604: Разрешить параметры с именами
pwd.getpwnam
иgrp.getgrnam
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30977: Заставьте uuid.UUID использовать
__slots__
, чтобы уменьшить занимаемую им память. Основано на оригинальном патче от Wouter Bolsterlee.bpo-34574: Итераторы OrderedDict больше не исчерпываются при pickling. Исправление от Сергея Федосеева.
bpo-8110: Разрешить параметры с именами
subprocess
иsys.platform == 'win32'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34530: Разрешить параметры с именами
distutils.spawn.find_executable()
иos.defpath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34563: В Windows исправьте multiprocessing.Connection для очень большого чтения: исправьте _winapi.PeekNamedPipe() и _winapi.ReadFile() для чтения, превышающего INT_MAX (обычно
2**31-1
).bpo-34558: Исправьте опечатку в Lib/ctypes/_aix.py
bpo-34282: Разрешить параметры с именами
Enum._convert
иEnumMeta._convert_
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22872: Разрешить параметры с именами
ValueError
иmultiprocessing.Queue.put()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34515: Разрешить параметры с именами
lib2to3.pgen2.tokenize
и PEP 3131 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-13312: Предотвращает возможное целочисленное переполнение (неопределенное поведение) в коде обработки года модуля времени при передаче очень низкого отрицательного значения года.
bpo-34472: Улучшена совместимость с потоковыми файлами в
zipfile
. Ранее необязательная подпись не записывалась, и некоторые приложения ZIP не поддерживались. Исправление от Silas Sewell.bpo-34454: Исправление сбоя в методах .fromisoformat() типов datetime, когда им передается юникод с кодовыми точками, не кодируемыми в форматеUTF-8. В частности, datetime.fromisoformat() теперь принимает суррогатные кодовые точки юникода, используемые в качестве разделителя. Отчет и тесты Алексея Избышева, исправление Пола Гансла.
bpo-6700: Исправление inspect.getsourcelines для фреймов/трассировок на уровне модуля. Исправление Владимира Матвеева.
bpo-34171: Разрешить параметры с именами
trace
иtrace.cover
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34441: Разрешить параметры с именами
ABC
и__subclasses__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34427: Разрешить параметры с именами
a.extend(a)
иMutableSequence
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34412: Заставьте
signal.strsignal()
работать на HP-UX. Патч от Михаила Осипова.bpo-20849: shutil.copytree теперь принимает новый ключевой аргумент
dirs_exist_ok
. Исправление Джоша Бронсона.bpo-31715: Разрешить параметры с именами
.mjs
иapplication/javascript
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34384: Разрешить параметры с именами
os.readlink()
и path-like с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22602: Декодер UTF-7 теперь выдает
UnicodeDecodeError
для неправильно сформированных последовательностей, начинающихся с «+» (как указано в RFC 2152). Исправление от Zackery Spytz.bpo-2122: Разрешить параметры с именами
mmap.flush()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34341: При добавлении в ZIP-архив с расширением ZIP64 больше не увеличивается размер дополнительных полей существующих записей.
bpo-34333: Исправьте %-форматирование в
pathlib.PurePath.with_suffix()
при форматировании сообщения об ошибке.bpo-18540: Разрешить параметры с именами
imaplib.IMAP4
иimaplib.IMAP4_SSL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26502: Реализуйте метод
traceback.FrameSummary.__len__()
, чтобы сохранить совместимость со старым API кортежей.bpo-34318: Разрешить параметры с именами
assertRaises()
иassertRaisesRegex()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-9372: Разрешить параметры с именами
__getitem__()
иxml.dom.pulldom.DOMEventStream
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33613: Исправление состояния гонки в
multiprocessing.semaphore_tracker
, когда трекер получает SIGINT до того, как успевает зарегистрировать обработчики сигналов для его игнорирования.bpo-34248: Разрешить параметры с именами
dbm.gnu.open()
иdbm.ndbm.open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33089: Добавьте math.dist() для вычисления евклидова расстояния между двумя точками.
bpo-34246:
smtplib.SMTP.send_message()
больше не изменяет содержимое аргумента mail_options. Исправление Пабло С. Блюма де Агиара.bpo-31047: Исправление
ntpath.abspath
для недействительных путей в windows. Исправление от Franz Woellert.bpo-32321: Добавьте обратную связь чистого Python для functools.reduce. Исправление Роберта Райта.
bpo-34270: Разрешить параметры с именами
get_name()
иset_name()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34263: цикл событий asyncio не будет передавать таймауты длиннее одного дня в epoll/select и т. д.
bpo-34035: Исправление нескольких ошибок AttributeError в методах zipfile seek(). Исправление от Mickaël Schoentgen.
bpo-32215: Устранение регрессии производительности в
sqlite3
, когда оператор DML появлялся в строке, отличной от остальной части SQL-запроса.bpo-34075: Откажитесь от передачи экземпляров, не являющихся ThreadPoolExecutor, в
AbstractEventLoop.set_default_executor()
.bpo-34251: Разрешить параметры с именами
msilib.Win64
иdistutils
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-19891: Игнорировать ошибки, вызванные отсутствующим/незаписываемым homedir, при записи истории во время выхода из интерактивной сессии. Исправление Энтони Соттила.
bpo-33089: Улучшена функция math.hypot() для поддержки более чем двух измерений.
bpo-34228: tracemalloc: Переменная окружения PYTHONTRACEMALLOC=0 и опция командной строки -X tracemalloc=0 теперь позволяют явно отключить tracemalloc при запуске.
bpo-13041: Разрешить параметры с именами
shutil.get_terminal_size()
иargparse.HelpFormatter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34213: Разрешить замороженным классам данных иметь поле с именем «object». Ранее это противоречило внутреннему использованию «object».
bpo-34052: Разрешить параметры с именами
sqlite3.Connection.create_aggregate()
иsqlite3.Connection.create_function()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34197: Разрешить параметры с именами
csv
иbool
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32788: Разрешить параметры с именами
TypeError
и__adapt__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21446: Разрешить параметры с именами
reload
иimportlib.reload()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-940286: метод pydoc
Helper.showtopic()
теперь корректно выводит перекрестные ссылки на тему.bpo-34164: Разрешить параметры с именами
base64.b32decode()
иbase64.Error
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33729: Исправлены проблемы с разбором аргументов в
hashlib
.bpo-34097: ZipFile может застегивать файлы старше 1980-01-01 и новее 2107-12-31, используя новый параметр
strict_timestamps
, ценой установки временной метки на предел.bpo-34108: Удаление лишнего CR в рефакторе 2to3.
bpo-34070: Убедитесь, что при открытии файла с помощью
buffering=-1
проверяется только, является ли хэндл tty.bpo-27494: Исправлено bpo-27494. 2to3 теперь не принимает запятую в конце выражений генератора.
bpo-33967: functools.singledispatch теперь выдает TypeError вместо IndexError, когда не передаются позиционные аргументы.
bpo-34041: Добавьте параметр deterministic в метод
sqlite3.Connection.create_function()
. Исправление от Сергея Федосеева.bpo-34056: Разрешить параметры с именами
imp.load_module
иget_data()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34054: Разрешить параметры с именами
time.monotonic()
иtime.time()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34043: Оптимизация производительности распаковки tarfile примерно на 15% при использовании gzip.
bpo-34044: Разрешить параметры с именами
subprocess.Popen
иSTARTUPINFO
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34010: Исправлена регрессия производительности при чтении потоков с помощью tarfile. Буферизованное чтение должно использовать список, а не добавлять к объекту байт.
bpo-34019: webbrowser: Исправление аргументов, передаваемых браузеру Opera при открытии нового URL с помощью модуля
webbrowser
. Исправление от Bumsik Kim.bpo-34003: csv.DictReader теперь создает дикты вместо OrderedDicts. Исправление Майкла Селика.
bpo-33978: Закрытие существующих обработчиков логирования перед реконфигурацией через fileConfig и dictConfig. Исправление от Karthikeyan Singaravelan.
bpo-14117: Внесите небольшие изменения в turtledemo. Пример „wikipedia“ теперь стал „rosette“, описывая то, что он рисует. Уменьшен вывод „penrose“. Устранен вывод „1024“ для „tree“.
bpo-33974: Разрешить параметры с именами
"
и\
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27500: Исправьте getaddrinfo для корректного разрешения IPv6-адресов.
bpo-24567: Улучшение функции random.choices() для обработки субнормальных входных весов, которые иногда могут вызвать ошибку IndexError.
bpo-33871: Разрешить параметры с именами
os.readv()
иos.writev()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25007: Разрешить параметры с именами
copy.copy()
иcopy.deepcopy()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33929: мультипроцессинг: Исправлено состояние гонки в Popen из multiprocessing.popen_spawn_win32. Теперь дочерний процесс дублирует конец трубы для чтения, а не «крадет» его. Ранее конец трубы для чтения «похищался» дочерним процессом, но при этом происходила утечка хэндла, если дочерний процесс завершался до того, как он успевал похитить хэндл у родительского процесса.
bpo-33899: Модуль Tokenize теперь неявно выдает NEWLINE при получении входных данных, не содержащих завершающей новой строки. Теперь это поведение соответствует тому, что делает внутренний токенизатор языка C. Внесено Аммаром Аскаром.
bpo-33897: Добавлен ключевой аргумент „force“ в logging.basicConfig().
bpo-33695: Разрешить параметры с именами
shutil.copytree()
иos.scandir()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33916: bz2 и lzma: Когда Decompressor.__init__() вызывается дважды, освободите старую блокировку, чтобы не допустить утечки памяти.
bpo-32568: Сделайте select.epoll() и его документацию согласованными в отношении sizehint и flags.
bpo-33833: Исправлена ошибка в asyncio, когда ProactorSocketTransport регистрировал AssertionError, если принудительно закрывался во время записи.
bpo-33663: Преобразование длины содержимого в строку перед помещением в заголовок.
bpo-33721: Разрешить параметры с именами
os.path
иexists()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26544: Исправлена реализация
platform.libc_ver()
. Она почти всегда возвращала версию „2.9“ для glibc.bpo-33843: Разрешить параметры с именами
cgi.escape
иcgi.parse_qs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33842: Удалите
tarfile.filemode
, который устарел с Python 3.3.bpo-30167: Предотвращение исключения site.main(), если установлен PYTHONSTARTUP. Исправление от Стива Вебера.
bpo-33805: Улучшение сообщения об ошибке dataclasses.replace(), когда InitVar не указан
bpo-33687: Разрешить параметры с именами
os.chmod()
иuu.decode()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33812: Экземпляр Datetime d с tzinfo не None, но с d.tzinfo.utcoffset(d), возвращающим None, теперь рассматривается методом astimezone() как наивный.
bpo-32108: В configparser не очищайте секцию, если она назначена самой себе.
bpo-27397: Заставьте модуль электронной почты правильно обрабатывать строки base64 недействительной длины.
bpo-33578: Реализуйте методы состояния многобайтовых кодеров/декодеров
bpo-30805: Избегайте состояния гонки с помощью отладочного протоколирования
bpo-33476: Исправьте _header_value_parser.py, когда в группе адресов отсутствовала финальная „;“. Внесено Энрике Перес-Терроном
bpo-33694: asyncio: Исправление состояния гонки, приводящего к потере данных при pause_reading()/resume_reading() при использовании ProactorEventLoop.
bpo-32493: Разрешить параметры с именами
uuid_enc_be
иconfigure.ac
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33792: Добавьте asyncio.WindowsSelectorEventLoopPolicy и asyncio.WindowsProactorEventLoopPolicy.
bpo-33274: W3C DOM Level 1 определяет возвращаемое значение функции Element.removeAttributeNode() как «Узел Attr, который был удален». xml.dom.minidom теперь соответствует этому требованию.
bpo-33778: Обновите базу данных
unicodedata
до версии 11.0.0 Unicode.bpo-33165: Добавлен параметр stacklevel в вызовы протоколирования, чтобы позволить использовать обертки/помощники для API протоколирования.
bpo-33770: улучшите сообщение об исключении base64 для кодированных входных данных недопустимой длины
bpo-33769: asyncio/start_tls: Исправьте сообщение об ошибке; отмените обратные вызовы в случае необработанной ошибки; пометьте SSLTransport как закрытый, если он был прерван.
bpo-33767: Разрешить параметры с именами
+
и*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33734: asyncio/ssl: Исправление ошибки AttributeError, увеличение таймаута рукопожатия по умолчанию
bpo-31014: Исправлено создание контроллера для
webbrowser
, когда пользователь указывает путь к записи в переменной окружения BROWSER. Основано на исправлении Джона Стилла.bpo-2504: Добавьте gettext.pgettext() и варианты.
bpo-33197: Добавьте свойство описания для _ParameterKind
bpo-32751: При отмене задания из-за таймаута
asyncio.wait_for()
теперь будет ждать, пока отмена не завершится.bpo-32684: Исправьте сбор, чтобы он распространял отмену самого себя даже при return_exceptions.
bpo-33654: Поддержка переключения типов протоколов в SSLTransport.set_protocol().
bpo-33674: Приостановите транспорт как можно раньше, чтобы еще больше снизить риск вызова data_received() до connection_made().
bpo-33671: Разрешить параметры с именами
shutil.copyfile()
иshutil.copy()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33674: Исправьте состояние гонки в SSLProtocol.connection_made() из asyncio.sslproto: немедленно начинайте рукопожатие вместо использования call_soon(). Ранее функция data_received() могла быть вызвана до начала хендшейка, что приводило к зависанию или сбою хендшейка.
bpo-31647: Исправлена ошибка, при которой вызов write_eof() на _SelectorSocketTransport после того, как он уже закрыт, приводил к ошибке AttributeError.
bpo-32610: Заставьте asyncio.all_tasks() возвращать только отложенные задачи.
bpo-32410: Избегайте блокировки файлового ввода-вывода в коде отката sendfile
bpo-33469: Исправление RuntimeError после закрытия цикла, в котором использовался run_in_executor
bpo-33672: Исправление сбоя Task.__repr__ при использовании фальшивых корутинов Cython
bpo-33654: Исправьте transport.set_protocol() для поддержки переключения между asyncio.Protocol и asyncio.BufferedProtocol. Исправьте loop.start_tls() для работы с asyncio.BufferedProtocols.
bpo-33652: Пикули переменных типов и подзаписанные дженерики теперь защищены от будущего и совместимы со старыми версиями Python.
bpo-32493: Исправлено
uuid.uuid1()
на FreeBSD.bpo-33238: Разрешить параметры с именами
InvalidStateError
иconcurrent.futures
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33618: Доработка и документирование предварительной и экспериментальной поддержки TLS 1.3 с OpenSSL 1.1.1
bpo-33625: Разрешить параметры с именами
grp.getgrnam
иgrp.getgrgid
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33623: Исправление возможного SIGSGV при создании asyncio.Future в __del__.
bpo-11874: Используйте лучший регекс при разбиении использования на оборачиваемые части. Позволяет избежать ошибок утверждения при использовании пользовательских строк metavar.
bpo-30877: Исправлена ошибка в Python-реализации декодера JSON, из-за которой кэш разобранных строк не очищался после завершения декодирования. Основано на исправлении от c-fos.
bpo-33604: Удаление HMAC по умолчанию в md5, помеченное для удаления в 3.8 (удаление изначально планировалось в 3.6, перенесено в 3.8 в PR 7062).
bpo-33582: Выдать предупреждение об устаревании для inspect.formatargspec
bpo-21145: Добавьте декоратор
functools.cached_property
для вычисляемых свойств, кэшируемых в течение жизни экземпляра.bpo-33570: Изменение настроек набора шифров TLS 1.3 для совместимости с OpenSSL 1.1.1-pre6 и более новыми версиями. В OpenSSL 1.1.1 шифры TLS 1.3 будут включены по умолчанию.
bpo-28556: Разрешить параметры с именами
typing.Union
иUnion[Manager, Employee]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-12486:
tokenize.generate_tokens()
теперь документирован как общедоступный API для токенизации юникодных строк. Ранее он присутствовал, но не был задокументирован.bpo-33540: Разрешить параметры с именами
block_on_close
иForkingMixIn
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33548: tempfile._candidate_tempdir_list должен учитывать общие места TEMP
bpo-33109: подпарсеры argparse снова не требуются по умолчанию, возвращая изменение в поведении, введенное bpo-26510 в 3.7.0a2.
bpo-33541: Разрешить параметры с именами
_strptime.LocaleTime.__pad
и_LocaleTime__pad
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33536: dataclasses.make_dataclass теперь проверяет недопустимые имена полей и дубликаты полей. Также добавлена проверка на недопустимые спецификации полей.
bpo-33542: Запретите
uuid.get_node
использовать DUID вместо MAC в Windows. Исправление от Цви Эффронаbpo-26819: Исправление состояния гонки с
ReadTransport.resume_reading
в цикле событий проактора Windows.Исправление сбоя в
typing.get_type_hints()
, когда ClassVar предоставлялся как строковая прямая ссылка.bpo-33516: Разрешить параметры с именами
unittest.mock.MagicMock
и__round__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28612: Разрешить параметры с именами
RobotFileParser
иRobotFileParser.site_maps()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28167: Удалите platform.linux_distribution, который был устаревшим с версии 3.5.
bpo-33504: Разрешить параметры с именами
configparser
иcollections.OrderedDict
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33505: Оптимизация asyncio.ensure_future() за счет переупорядочивания проверок if: 1,17x быстрее.
bpo-33497: Добавляет параметр errors в cgi.parse_multipart и заставляет кодировку в FieldStorage использовать заданные ошибки (необходимо для Twisted). Исправление от Amber Brown.
bpo-29235: Класс
cProfile.Profile
теперь можно использовать в качестве менеджера контекста. Исправление Скотта Сандерсона.bpo-33495: Измените repr поля dataclasses.Fields, чтобы использовать repr каждого из его членов, а не str. Так будет понятнее, что на самом деле представляет собой каждое поле. Это особенно актуально для члена „type“.
bpo-26103: Разрешить параметры с именами
inspect.isdatadescriptor
и__set__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29209: Разрешить параметры с именами
doctype()
иXMLParser
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33453: Исправление работы классов данных при использовании буквальных аннотаций строковых типов или при использовании PEP 563 «Отложенная оценка аннотаций». Определяются только специфические строковые префиксы для ClassVar («ClassVar» и «typing.ClassVar») и InitVar («InitVar» и «dataclasses.InitVar»).
bpo-28556: Разрешить параметры с именами
NamedTuple.__new__
и*args
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33365: Выводить значения заголовков помимо ключей заголовков, а не только ключи заголовков, если debuglevel установлен на >0 в
http.client
. Исправление Марко Стригла.bpo-20087: Обновлено сопоставление псевдонимов с локалями, поддерживаемыми glibc 2.27.
bpo-33422: Исправление удаления кавычек в конце строки при поиске байтовых/строковых литералов в pydoc. Исправление от Андреса Дельфино.
bpo-28167: Разрешить параметры с именами
platform.linux_distribution
иplatform.dist
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33281: Исправление регрессии ctypes.util.find_library на macOS.
bpo-33311: В текстовом и html-выводе, генерируемом cgitb, не отображаются круглые скобки, если текущий вызов выполняется непосредственно в модуле. Исправление Стефана Блондона.
bpo-27300: Классы файлов в tempfile теперь принимают параметр errors, который дополняет уже существующий encoding. Исправление Стефана Хохе.
bpo-32933:
unittest.mock.mock_open()
теперь поддерживает итерацию по содержимому файла. Исправление от Тони Флури.bpo-33217: Поднимать
TypeError
при поиске объектов, не являющихся Enum, в классах Enum и членах Enum.bpo-33197: Обновление сообщения об ошибке при построении недействительного inspect.Parameters Исправление от Donghee Na.
bpo-33383: Исправлен сбой в методе get() объекта базы данных
dbm.ndbm
при его вызове с одним аргументом.bpo-33375: Модуль предупреждений теперь находит Python-файл, связанный с предупреждением, из объекта кода, а не из глобального пространства имен фрейма. Это соответствует тому, как tracebacks и pdb находят имена файлов, и должно лучше работать для динамически выполняемого кода.
bpo-33336: Разрешить параметры с именами
imaplib
иMOVE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32455: Добавлен параметр прыжок в
dis.stack_effect()
.bpo-27485: Переименование и устаревание недокументированных функций в
urllib.parse()
.bpo-33332: Добавьте
signal.valid_signals()
, чтобы раскрыть функциональность POSIX sigfillset().bpo-33251: Разрешить параметры с именами
ConfigParser.items()
иvars()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33329: Исправление регрессии многопроцессорной обработки на новых версиях glibcs
bpo-33334:
dis.stack_effect()
теперь поддерживает все определенные опкоды, включая NOP и EXTENDED_ARG.bpo-991266: Разрешить параметры с именами
Comment
иhttp.cookies.SimpleCookie
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33131: Обновление поставляемой версии pip до 10.0.1.
bpo-33308: Разрешить параметры с именами
parser
иline_info=False
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23403: lib2to3 теперь использует протокол pickle 4 для предварительно вычисленных грамматик.
bpo-33266: lib2to3 теперь распознает строки
rf'...'
.bpo-11594: Убедитесь, что при использовании lib2to3 соблюдаются окончания строк.
bpo-33254: Разрешить параметры с именами
importlib.resources.contents()
иimportlib.abc.ResourceReader.contents()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33265: Разрешить параметры с именами
contextlib.ExitStack
иcontextlib.AsyncExitStack
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33263: Исправление утечки FD в
_SelectorSocketTransport
. Патч от Влада Старостина.bpo-33256: Разрешить параметры с именами
<module>
иcgitb.html()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33144: Разрешить параметры с именами
random.Random()
иgetrandbits()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33185: Разрешить параметры с именами
-m
и bpo-33053 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаos.getcwd()
: Разрешить параметры с именамиsys.path
и"."
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29613: Разрешить параметры с именами
SameSite
иhttp.cookies
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33169: Разрешить параметры с именами
None
иsys.path_importer_cache
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33203: Разрешить параметры с именами
random.Random.choice()
иIndexError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33224: Обновите difflib.mdiff() для PEP 479. Преобразуйте не пойманную StopIteration в генераторе в return-выражение.
bpo-33209: Конечное обрамление в конце реализации C
pickle.Pickler.dump()
.bpo-32861: Представление urllib.robotparser’а
__str__
теперь включает в себя записи с подстановочными знаками и поля «Crawl-delay» и «Request-rate». Также удалены лишние новые строки, которые добавлялись в конец строки. Исправление Майкла Лазара.bpo-23403: Разрешить параметры с именами
DEFAULT_PROTOCOL
иpickle
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20104: Улучшена обработка ошибок и исправлена утечка ссылок в
os.posix_spawn()
.bpo-33106: Удаление ключа из базы данных dbm, доступной только для чтения, вызывает специфическую для модуля ошибку вместо KeyError.
bpo-33175: В классах данных Field.__set_name__ теперь ищет специальный метод __set_name__ на классе, а не на экземпляре значения по умолчанию.
bpo-32380: Создайте functools.singledispatchmethod для поддержки общей одиночной диспетчеризации дескрипторов и методов.
bpo-33141: Пусть объекты Field передают через __set_name__ свои значения по умолчанию, если у них есть свой __set_name__.
bpo-33096: Разрешите ttk.Treeview.insert вставлять iid, имеющий булево значение false. Обратите внимание, что iid=0 и iid=False будут одинаковыми. Исправление Гарвита Кхатри.
bpo-32873: Рассматривайте переменные типа и специальные формы типизации как неизменяемые при копировании и pickle. Это исправляет несколько мелких проблем и несоответствий, а также улучшает обратную совместимость с Python 3.6.
bpo-33134: При вычислении __hash__ класса данных используйте таблицу поиска, содержащую функцию, которая возвращает значение __hash__. Это лучше, чем искать строку, а затем тестировать ее, чтобы понять, что делать.
bpo-33127: Модуль ssl теперь компилируется с LibreSSL 2.7.1.
bpo-32505: Вызывает ошибку TypeError, если переменная-член класса данных имеет тип Field, но не имеет аннотации типа.
bpo-33078: Исправление сбоя на OSX, вызванного тестами, полагающимися на sem_getvalue
bpo-33116: Добавьте „Field“ в dataclasses.__all__.
bpo-32896: Исправление ошибки, когда при подклассификации класса данных с полем, использующим default_factory, создавался некорректный класс.
bpo-33100: Классы данных: Если поле имеет значение по умолчанию, которое является MemberDescriptorType, то это связано с тем, что поле находится в __слотах__, а не с действительным значением по умолчанию.
bpo-32953: Если класс, не являющийся классом данных, наследуется от замороженного класса данных, разрешите добавлять атрибуты в производный класс. Нельзя присваивать атрибуты только замороженному классу данных. Требуйте, чтобы все классы данных в иерархии были либо все замороженными, либо все незамороженными.
bpo-33097: Вызывает RuntimeError при вызове
executor.submit
во время выключения интерпретатора.bpo-32968: Деление по модулю и по полу с участием дроби и float должно возвращать float.
bpo-33061: Разрешить параметры с именами
NoReturn
и__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33078: Исправьте обработку размера в multiprocessing.Queue при возникновении ошибки pickling.
bpo-33064: Разрешить параметры с именами
*args
и**kwargs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33056: FIX корректное закрытие утечек fds в concurrent.futures.ProcessPoolExecutor.
bpo-33021: Освобождение GIL во время вызова fstat(), что позволяет избежать зависания всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Исправление Нира Соффера.
bpo-31804: Избегайте сбоев в multiprocessing.Process, если стандартные потоки закрыты или отсутствуют при выходе.
bpo-33034: Разрешить параметры с именами
urlparse()
иurlsplit()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30249: Улучшение сообщений исключений struct.unpack_from() для проблем с размером буфера и смещением.
bpo-33037: Пропускать отправку/получение данных после закрытия транспорта SSL.
bpo-27683: Разрешить параметры с именами
ipaddress
иhosts()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22674: Добавьте функцию strsignal() в модуль сигналов, которая возвращает системное описание заданного сигнала, как возвращает strsignal(3).
bpo-32999: Разрешить параметры с именами
ABC.__subclasscheck__(cls, subclass)
иsubclass
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33009: Исправьте inspect.signature() для однопараметрических partialmethods.
bpo-32969: Раскрытие нескольких отсутствующих констант в zlib и исправление соответствующей документации.
bpo-32056: Разрешить параметры с именами
aifc
иwave
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32970: Улучшена разборка инструкции MAKE_FUNCTION.
bpo-32844: Исправление неправильного перенаправления низкого дескриптора (0 или 1) на stderr в подпроцессе, если другой низкий дескриптор закрыт.
bpo-32960: Для классов данных запрещено наследовать замороженные классы от незамороженных, а также запрещено наследовать незамороженные классы от замороженных. Это ограничение будет снято в будущем.
bpo-32713: Исправлена работа tarfile.itn с выходящими за границы плавающими значениями. Автор исправления - Джоффри Фюрер.
bpo-32257: Модуль ssl теперь содержит константу OP_NO_RENEGOTIATION, доступную с OpenSSL 1.1.0h или 1.1.1.
bpo-32951: Прямое инстанцирование объектов SSLSocket и SSLObject теперь запрещено. Конструкторы никогда не были документированы, протестированы или разработаны как публичные конструкторы. Пользователи должны были использовать ssl.wrap_socket() или SSLContext.
bpo-32929: Удалите трехсоставной параметр «hash» и добавьте булево значение «unsafe_hash». Если unsafe_hash равен True, добавьте функцию __hash__, но если такой __hash__ существует, вызовите TypeError. Если unsafe_hash равно False, добавьте __hash__, основанный на значениях eq= и frozen=. Поведение unsafe_hash=False аналогично старому поведению hash=None. unsafe_hash=False используется по умолчанию, как раньше было hash=None.
bpo-32947: Добавьте OP_ENABLE_MIDDLEBOX_COMPAT и протестируйте обходной путь для TLSv1.3 для будущей совместимости с OpenSSL 1.1.1.
bpo-32146: Документирование взаимодействия между замороженными исполняемыми файлами и методами запуска spawn и forkserver в многопроцессорных системах.
bpo-30622: Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.
bpo-32922: dbm.open() теперь кодирует имя файла кодировкой файловой системы, а не кодировкой по умолчанию.
bpo-32759: Освободить неиспользуемые арены в multiprocessing.heap.
bpo-32859: Разрешить параметры с именами
os.dup2
иdup3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32556: nt._getfinalpathname, nt._getvolumepathname и nt._getdiskusage теперь корректно конвертируются из байтов.
bpo-21060: Перепишите сбивающее с толку сообщение из setup.py upload с «No dist file created in earlier command» на более полезное «Must create and upload files in one command».
bpo-32857: Разрешить параметры с именами
tkinter
иafter_cancel(None)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32852: Убедитесь, что sys.argv остается в виде списка при выполнении трассировки.
bpo-31333: Разрешить параметры с именами
_abc
иabc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда_abc_registry
: Разрешить параметры с именами_abc_cache
и_abc_negative_cache
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32841: Исправлена проблема
asyncio.Condition
, из-за которой после уведомления и отмены условной блокировки отмена молча игнорировалась. Исправление от Bar Harel.bpo-32819: ssl.match_hostname() была упрощена и больше не зависит от модуля re и ipaddress для подстановочных символов и IP-адресов. Улучшено сообщение об ошибках, связанных с недействительными подстановочными знаками.
bpo-19675:
multiprocessing.Pool
больше не сливает процессы при неудачной инициализации.bpo-32394: сокет: Удаление флагов TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL на старых версиях Windows во время выполнения.
bpo-31787: Исправлены утечки методов
__init__()
в различных модулях. (Внесено Ореном Милманом)bpo-30157: Исправлено угадывание кавычек и разделителя в csv.Sniffer.sniff(), когда только последнее поле заключено в кавычки. Исправление от Джейка Дэвиса.
bpo-30688: Добавлена поддержка эскейпов
\N{name}
в регулярных выражениях. Основано на исправлении Джонатана Юниса.bpo-32792: collections.ChainMap() сохраняет порядок базовых отображений.
bpo-32775:
fnmatch.translate()
больше не создает шаблоны, содержащие операции над множествами. Наборы, начинающиеся с „[“ или содержащие „–“, „&&“, „~~“ или „||“, будут по-другому интерпретироваться в регулярных выражениях в будущих версиях. В настоящее время они выдают предупреждения. fnmatch.translate() теперь позволяет избежать случайного получения шаблонов, содержащих такие наборы.bpo-32622: Реализуйте собственный быстрый sendfile для цикла событий проактора Windows.
bpo-32777: Исправление редкого, но потенциально возможного тупика дочернего процесса preexec в подпроцессе на POSIX-системах при пометке дескрипторов файлов, наследуемых при exec в дочернем процессе. Эта ошибка, похоже, появилась в версии 3.4.
bpo-32647: Модуль ctypes раньше зависел от косвенной линковки для dlopen. Теперь разделяемое расширение явно связывается с libdl на платформах с dl.
bpo-32749: Разрешить параметры с именами
dbm.dumb
иdbm.dumb.open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32741: Реализуйте метод
asyncio.TimerHandle.when()
.bpo-32691: Используйте mod_spec.parent при запуске модулей с pdb
bpo-32734: Исправлена проблема безопасности
asyncio.Lock()
, из-за которой один и тот же замок можно было получить и заблокировать несколько раз, не освобождая его. Исправление от Bar Harel.bpo-32727: Не включать поле имени в SMTP-конверт с адреса. Исправление от Стефана Виртела
bpo-31453: Добавлены константы TLSVersion и атрибуты SSLContext.maximum_version / minimum_version. В новом API реализована функция OpenSSL 1.1 https://web.archive.org/web/20180309043602/https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html.
bpo-24334: Внутренние детали реализации модуля ssl были очищены. В SSLSocket стало на один уровень непрямой связи меньше. Информация о владельце и сессии теперь обрабатывается конструктором SSLSocket и SSLObject. Упрощена реализация привязки каналов.
bpo-31848: Исправьте обработку ошибок в Aifc_read.initfp(), когда чанк SSND не был найден. Исправление от Zackery Spytz.
bpo-32585: Добавьте виджет Ttk spinbox в
tkinter.ttk
. Исправление от Alan D Moore.bpo-32512: Разрешить параметры с именами
profile
и-m module_name
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-8525: help() для типа теперь отображает встроенные подклассы. Это сделано в первую очередь для того, чтобы помочь с уведомлением о более специфических подклассах исключений.
Патч от Саньям Кхурана.
bpo-31639: http.server теперь раскрывает класс ThreadingHTTPServer и использует его при запуске модуля с
-m
, чтобы справиться с предварительным открытием сокетов веб-браузерами.bpo-29877: compileall: импортировать ProcessPoolExecutor только при необходимости, предотвращая зависания на платформах с низкими ресурсами
bpo-32221: Разрешить параметры с именами
%scope
иsocket.recvfrom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32147:
binascii.unhexlify()
теперь работает в 2 раза быстрее. Патч от Сергея Федосеева.bpo-30693: Класс TarFile теперь рекурсирует каталоги воспроизводимым способом.
bpo-30693: Класс ZipFile теперь рекурсирует каталоги воспроизводимым способом.
bpo-31680: Добавлено
curses.ncurses_version
.bpo-31908: Разрешить параметры с именами
trace
и--missing
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31608: Разрешить параметры с именами
TypeError
иcollections.deque
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31425: Добавляет поддержку сокетов семейства адресов AF_QIPCRTR, поддерживаемых ядром Linux. Оно используется для связи с сервисами, такими как GPS или радио, работающими на устройствах Qualcomm. Исправление авторства Бьорна Андерссона.
bpo-22005: Разрешить параметры с именами
datetime
иdate
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27645: Разрешить параметры с именами
sqlite3.Connection
иbackup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-16865: Поддержка массивов >=2GiB в
ctypes
. Исправление от Сегева Файнера.bpo-31508: Разрешить параметры с именами
tkinter.ttk.Treeview.selection
иselection_set
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29456: Исправлены ошибки в нормализации хангыля: u1176, u11a7 и u11c3
Документация¶
bpo-21257: Документ
http.client.parse_headers()
.bpo-34764: Улучшите пример iter() со вторым аргументом sentinel.
bpo-35564: Явно задайте переменную master_doc в conf.py для соответствия Sphinx 2.0
bpo-35511: Указано, что класс profile.Profile не поддерживает методы enable и disable. Также уточнено, что объект Profile в качестве менеджера контекста поддерживается только в модуле cProfile.
bpo-10536: Улучшение документации по gettext. Исправление от Éric Araujo
bpo-35089: Разрешить параметры с именами
typing.io
иtyping.re
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35038: Исправьте документацию о несуществующем атрибуте
f_restricted
в объекте фрейма. Исправление Стефана Виртелаbpo-35042: Замените PEP XYZ на роль pep и разрешите использовать прямые ссылки на PEP.
bpo-35044: Исправьте документацию с ролью
exc
для присвоенного исключения. Исправление от Стефана Виртелаbpo-35035: Разрешить параметры с именами
email.utils
иemail.utils.rst
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34967: Используйте app.add_object_type() вместо устаревшей функции Sphinx app.description_unit()
bpo-34913: Добавьте документацию о новом интерфейсе командной строки модуля gzip.
bpo-32174: документ chm правильно отображает символы, отличные от ASCII, в некоторых системах MBCS Windows.
bpo-11233: Создание директивы доступности для документации. Оригинальный патч Георга Брандла.
bpo-34790: Документируйте, как передача корутинов в asyncio.wait() может запутать.
bpo-34552: Разрешить параметры с именами
==
иis
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28617: Исправлена информация в документации stdtypes о типах, поддерживающих тесты на принадлежность.
bpo-20177: Перенос datetime.date.fromtimestamp в Argument Clinic. Исправление Тима Хоффмана.
bpo-34065: Исправьте неверно написанный синтаксис разметки документации basicConfig
bpo-33460: заменили многоточие на правильные коды ошибок в главе 3 учебника.
bpo-33847: Добавьте запись оператора „@“ в индекс.
bpo-33409: Уточнена связь между режимом PYTHONCOERCECLOCALE в PEP 538 и режимом PYTHONUTF8 в PEP 540.
bpo-33197: Добавьте тег versionadded в документацию ParameterKind.description
bpo-17045: Улучшение документации C-API для PyTypeObject. Это включает в себя добавление нескольких таблиц быстрых ссылок и множество недостающих записей о слотах/типефах. Существующие записи также были приведены в порядок и получили более последовательный формат.
bpo-33736: Разрешить параметры с именами
asyncio.open_connection()
иasyncio.start_server()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23859: Документ, подтверждающий, что
asyncio.wait()
не отменяет свои фьючерсы по тайм-ауту.bpo-33604: Обновите значение HMAC md5 по умолчанию на DeprecationWarning, удалите до версии 3.8.
bpo-33594: Разрешить параметры с именами
getargspec
иfrom_function
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33503: Исправьте неработающую ссылку на pypi
bpo-33421: Добавьте недостающую документацию для
typing.AsyncContextManager
.bpo-33487: BZ2file теперь выдает DeprecationWarning при передаче buffering=None, сообщение об устаревании и документация также теперь явно указывают, что это устарело с версии 3.0.
bpo-33378: Добавьте переключатель корейского языка для https://docs.python.org/3/
bpo-33276: Уточните, что атрибут
__path__
в модулях не может быть просто любым значением.bpo-33201: Модернизируйте документацию по написанию типов расширения C.
bpo-33195: Разрешить параметры с именами
Py_UNICODE
иc-api/arg
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33126: Документ PyBuffer_ToContiguous().
bpo-27212: Измените документацию для рецепта
islice()
, чтобы он потреблял начальные значения вплоть до начального индекса.bpo-28247: Обновите документацию
zipapp
, чтобы описать, как создавать автономные приложения.bpo-18802: Изменения в документации для ipaddress. Исправление от Jon Foster и Berker Peksag.
bpo-27428: Разрешить параметры с именами
WindowsRegistryFinder
иMetaPathFinder
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28124: Функция модуля ssl ssl.wrap_socket() была отменена и устарела в пользу более безопасного и эффективного метода SSLContext.wrap_socket().
bpo-17232: Уточнение документации для -O и -OO. Исправление Терри Риди.
bpo-32436: Добавьте документацию для модуля contextvars (PEP 567).
bpo-32800: Обновление ссылки на w3c doc для стандартных пространств имен xml.
bpo-11015: Обновление документации
test.support
.bpo-32613: Обновите faq/windows.html, чтобы использовать команду py из PEP 397 вместо python.
bpo-8722: Разрешить параметры с именами
__getattr__()
иget()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32614: Измените примеры RE в документации, чтобы использовать необработанные строки для предотвращения
DeprecationWarning
, и добавьте текст в REGEX HOWTO, чтобы подчеркнуть это ухудшение.bpo-20709: Удалите абзац, в котором мы объясняем, что os.utime() не поддерживает каталог в качестве пути в Windows. Исправление от Jan-Philip Gehrcke
bpo-32722: Удалите неудачный пример в учебнике по генератору выражений. Исправление от Стефана Виртела
bpo-31972: Улучшите документацию для подклассов
pathlib.PurePath
.bpo-30607: Используйте внешний пакет
python-docs-theme
при сборке документации.bpo-8243: Добавьте примечание о поведении исключений curses.addch и curses.addstr при записи за пределами окна или блокнота.
bpo-32337: Обновление документации, связанной с заказом
dict
.bpo-25041: Разрешить параметры с именами
AF_PACKET
иsocket
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31432: Уточните значение флагов CERT_NONE, CERT_OPTIONAL и CERT_REQUIRED для ssl.SSLContext.verify_mode.
Тесты¶
bpo-35772: Исправление тестов разреженных файлов test_tarfile на ppc64 с файловой системой tmpfs. Исправьте функцию, проверяющую, поддерживает ли файловая система разреженные файлы: создайте файл, содержащий данные и «дыры», вместо того, чтобы создавать файл, не содержащий данных. Эффективный размер блока tmpfs - это размер страницы (tmpfs живет в страничном кэше). RHEL использует 64 килобайта страниц на aarch64, ppc64, ppc64le, только s390x и x86_64 используют 4 килобайта страниц, в то время как тест пробивает дыры по 4 килобайта.
bpo-35045: Сделайте тесты ssl менее строгими, а также примите TLSv1 в качестве системы по умолчанию. Изменения устраняют брешь в test_min_max_version на Fedora 29.
bpo-32710: Разрешить параметры с именами
test_asyncio/test_sendfile.py
иtearDownModule()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33717: test.pythoninfo теперь регистрирует информацию обо всех часах, а не только о time.time() и time.perf_counter().
bpo-35488: Добавьте тест в pathlib’s Path.match(), чтобы убедиться, что он не поддерживает рекурсивное сопоставление шаблонов в стиле glob**.
bpo-31731: Исправление состояния гонки в
check_interrupted_write()
test_io: создание непосредственно потока с заблокированным сигналом SIGALRM, а не блокирование сигнала позже из потока. Ранее существовала вероятность того, что поток получит сигнал до того, как он будет заблокирован.bpo-35424: Исправьте test_multiprocessing_main_handling: используйте
multiprocessing.Pool
с менеджером контекста, а затем явно присоединяйтесь к пулу.bpo-35519: Разрешить параметры с именами
test.bisect
иtest.bisect_cmd
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35513: Разрешить параметры с именами
time.time()
иtime.monotonic()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34279: Разрешить параметры с именами
test.support.run_unittest()
иTestDidNotRun
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35412: Добавьте тестовый пример в
test_future4
: проверка юникодного литерала.bpo-26704: Добавлен тест, демонстрирующий двойное исправление метода экземпляра. Исправление Энтони Соттила.
bpo-33725: test_multiprocessing_fork может упасть на последних версиях macOS. Пока проблема не будет решена, пропустите тест на macOS.
bpo-35352: Измените test_asyncio для использования набора сертификатов из тестового каталога.
bpo-35317: Разрешить параметры с именами
mktime()
иtest_email
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21263: После нескольких сообщений о том, что test_gdb не работает должным образом на macOS, и поскольку gdb больше не поставляется по умолчанию, test_gdb теперь пропускается на macOS, когда для компиляции Python используется LLVM Clang. Исправление от Lysandros Nikolaou
bpo-34279: regrtest выдает предупреждение, если в конкретном тестовом файле не было выполнено ни одного теста. Также выдается новое состояние конечного результата, если ни один тест не был выполнен во всех тестовых файлах. Исправление от Pablo Galindo.
bpo-34962: make docstest в Doc теперь проходит. и выполняется в CI
bpo-23596: Используйте argparse для командной строки модуля gzip. Исправление от Antony Lee
bpo-34537: Разрешить параметры с именами
test_gdb.test_strings()
иLC_ALL=C
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34587: test_socket: Удалите RDSTest.testCongestion(). Тест пытается заполнить буфер сокета приемника и ожидает ошибки. Но протокол RDS этого не требует. Более того, Linux-реализация RDS ожидает, что производитель сообщений снизит свою скорость, а приемник не должен вызывать ошибку. Тест не работает на Fedora 28 по своему замыслу, так что просто удалите его.
bpo-34661: Исправьте test_shutil, если unzip не поддерживает -t.
bpo-34200: Исправлена недетерминированная нестабильность test_pkg из-за неиспользования страшной логики test.support.module_cleanup() для сохранения и восстановления содержимого sys.modules между тестовыми случаями.
bpo-34569: Экспериментальные каналы данных PEP 554 теперь корректно передают отрицательные объекты PyLong между суб-интерпретаторами на 32-битных системах. Исправление Майкла Фелта.
bpo-34594: Исправьте использование жестко закодированных значений
errno
в тестах.bpo-34579: Исправьте test_embed для AIX Исправление от Michael Felt
bpo-34542: Используйте 3072 RSA-ключа и подпись SHA-256 для тестовых сертификатов и ключей.
bpo-11193: Уберите специальное условие для AIX в
test_subprocess.test_undecodable_env
bpo-34347: Исправьте
test_utf8_mode.test_cmd_line
для AIXbpo-34490: На AIX с сокетами семейства AF_UNIX getsockname() не предоставляет „sockname“, поэтому пропускайте вызовы transport.get_extra_info(„sockname“)
bpo-34391: Исправьте проверку ftplib на TLS 1.3 при чтении из сокета данных.
bpo-11192: Разрешить параметры с именами
test_socket
иinet_pton6_zone()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34399: Обновите все RSA-ключи и DH-параметры, чтобы они использовали не менее 2048 бит.
bpo-34373: Разрешить параметры с именами
test_mktime
иtest_pthread_getcpuclickid
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-11191: Пропускать тест distutils „test_search_cpp“ при использовании XLC в качестве патча компилятора от aixtools (Майкл Фелт)
Улучшено сообщение об ошибке, когда mock assert_has_calls не работает.
bpo-33746: Исправление test_unittest при запуске в режиме verbose.
bpo-33901: Исправьте test_dbm_gnu на macOS с gdbm 1.15: добавьте большее значение, чтобы убедиться, что размер файла меняется.
bpo-33873: Исправлена ошибка в
regrtest
, из-за которой при использовании –huntrleaks/-R запускался дополнительный тест. Выход с ошибкой в случае указания неверных параметров для –huntrleaks/-R (должен быть использован как минимум один прогон разминки и одно повторение).bpo-33562: Проверьте, что глобальная политика цикла событий asyncio не оставлена ни одним тестом.
bpo-33655: Игнорируйте сбои test_posix_fallocate на платформах BSD, которые могут быть вызваны работой на ZFS.
bpo-32962: Исправлен test_gdb, когда Python компилируется с флагами -mcet -fcf-protection -O0.
bpo-33358: Разрешить параметры с именами
test_embed.test_pre_initialization_sys_options()
и--enable-shared
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32872: Избежать проблемы совместимости regrtest с пакетами пространства имен.
bpo-32517: Разрешить параметры с именами
test_asyncio
иKqueueSelector
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32663: Разрешить параметры с именами
SMTPUTF8SimTests
иtest_smtplib.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27643: Тесту Test_C нужны «короткие подписанные» битовые поля, но компилятор IBM XLC (на AIX) этого не поддерживает Пропустите код и тест при использовании AIX и XLC
Применимо к Python2-2.7 и более поздним версиям
bpo-19417: Добавьте test_bdb.py.
bpo-31809: Добавьте тесты для проверки соединения с кривыми secp ECDH.
Построить¶
bpo-34691: Модуль _contextvars теперь встроен в основную библиотеку Python под Windows.
bpo-35683: Улучшены шаги сборки Azure Pipelines, теперь они корректно проверяют макеты
bpo-35642: Удалите файл asynciomodule.c из pythoncore.vcxproj
bpo-35550: Исправление некорректных проверок #ifdef в Solaris, чтобы при компиляции искать __sun && __SVR4 вместо sun.
bpo-35499: Разрешить параметры с именами
make profile-opt
иCFLAGS_NODIST
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35257: Избегайте утечки флагов компоновщика из Link Time Optimizations (LTO) в distutils при компиляции расширений C.
bpo-35351: При сборке Python с помощью clang и LTO флаги LTO больше не передаются в CFLAGS для сборки сторонних расширений C через distutils.
bpo-35139: Разрешить параметры с именами
pyexpat
иModules/Setup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35059: PCbuild: Установите InlineFunctionExpansion в OnlyExplicitInline (опция «/Ob1») в pyproject.props в режиме Debug для расширения функций, помеченных как inline. Это изменение должно сделать Python, скомпилированный в режиме отладки, немного быстрее на Windows.
bpo-35011: Восстанавливает использование pyexpatns.h для изоляции нашей встроенной копии библиотеки expat C, чтобы ее символы не конфликтовали при компоновке или динамической загрузке со встроенным приложением или другими модулями расширения с их собственной версией libexpat.
bpo-28015: Have –with-lto корректно работает с clang.
bpo-34765: Обновите устаревший файл install-sh до последней ревизии из automake v1.16.1
bpo-34585: Проверка порядка байтов с плавающей точкой в configure.ac с помощью тестов компиляции вместо выполнения кода, чтобы эти проверки работали в кросс-компилируемых сборках.
bpo-34710: Исправлена сборка модуля SSL с OpenSSL и педантичными CFLAGS.
bpo-34582: Добавьте вывод JUnit XML для регрессионных тестов и обновите сборки Azure DevOps.
bpo-34081: Сделать предупреждения Sphinx ошибками в Makefile Docs.
bpo-34555: Разрешить параметры с именами
HAVE_LINUX_VM_SOCKETS_H
иHAVE_SOCKADDR_ALG
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33015: Разрешить параметры с именами
PyThread_start_new_thread()
иNULL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34245: Общая библиотека Python теперь устанавливается с правом записи (режим 0755), что является стандартным способом установки таких библиотек.
bpo-34121: Исправление обнаружения атомарной поддержки C11 на clang.
bpo-32430: Переименуйте Modules/Setup.dist в Modules/Setup и уберите необходимость вручную копировать первый во второй при обновлении локального дерева исходников.
bpo-30345: Добавьте -g в LDFLAGS при компиляции с LTO, чтобы получить отладочные символы.
bpo-5755: Разрешить параметры с именами
-Wstrict-prototypes
иCFLAGS_NODIST
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33614: Обеспечивает правильную регенерацию файлов определения модулей для стабильного ABI в Windows.
bpo-33648: Флаг конфигурации –with-c-locale-warning был удален. Он не оказывал никакого влияния уже около года.
bpo-33522: Включите сборки CI в Visual Studio Team Services по адресу https://python.visualstudio.com/cpython.
bpo-33512: проверка конфигурации на «длинный дубль» была упрощена
bpo-33483: Компилятор C теперь корректно определяется из стандартных переменных окружения. Опции –without-gcc и –with-icc были удалены.
bpo-33394: Включает подробную сборку для модулей расширения, когда GNU make передаются макросы в командной строке.
bpo-33393: Обновление файлов config.guess и config.sub.
bpo-33377: Добавьте новые триплеты для вариантов mips r6 и riscv (используются в суффиксах расширений).
bpo-32232: Разрешить параметры с именами
Modules/Setup
и-DPy_BUILD_CORE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33182: Тесты встраивания снова могут быть собраны с помощью clang 6.0
bpo-33163: Обновите pip до версии 9.0.3 и setuptools до версии 39.0.1.
bpo-33012: в gcc 8 добавлена новая эвристика для обнаружения некорректных приведений функций, и стоковая сборка python, похоже, довольно часто выдает это предупреждение. Наиболее распространенным является приведение функции METH_NOARGS (которая использует только один аргумент) к PyCFunction. Исправьте это, добавив фиктивный аргумент во все функции, реализующие METH_NOARGS.
bpo-32898: Исправление отладочной сборки python при использовании COUNT_ALLOCS.
bpo-29442: Замените optparse на argparse в setup.py
Windows¶
bpo-35890: Исправление согласованности вызовов API для GetVersionEx и wcstok.
bpo-32560: Разрешить параметры с именами
py
иSTARTUPINFO
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35854: Исправление EnvBuilder и –symlinks в venv на Windows
bpo-35811: Избегайте распространения настроек venv при запуске через py.exe
bpo-35797: Исправьте исполняемый файл по умолчанию, используемый модулем многопроцессорной обработки
bpo-35758: Разрешить сборку на ARM с помощью MSVC.
bpo-29734: Исправление утечки хэндлов в os.stat на Windows.
bpo-35596: Используйте непроверенные PYC для встраиваемого дистрибутива, чтобы избежать ограничений zipimport.
bpo-35596: Исправление многократного добавления vcruntime140.dll в дистрибутив с возможностью встраивания.
bpo-35402: Обновление сборки Windows для использования Tcl и Tk 8.6.9
bpo-35401: Обновление сборки Windows до OpenSSL 1.1.0j
bpo-34977: venv на Windows теперь будет использовать перенаправление python.exe, а не копировать фактические двоичные файлы из базового окружения.
bpo-34977: Добавляет поддержку создания пакета Windows App Store
bpo-35067: Удалите модуль _distutils_findvs и используйте вместо него vswhere.exe.
bpo-32557: Разрешите shutil.disk_usage использовать путь к файлу в Windows
bpo-34770: Исправление возможного разыменования нулевого указателя в pyshellext.cpp.
bpo-34603: Исправление возврата структур из функций, производимых MSVC
bpo-34581: Охрана специфического для MSVC кода в socketmodule.c с
#ifdef _MSC_VER
.bpo-34532: Исправлен код выхода из списка аргументов версии для py.exe.
bpo-34062: Исправлены аргументы „–list“ и „–list-paths“ для программы запуска py.exe
bpo-34225: Убедитесь, что каталоги INCLUDE и LIB не заканчиваются обратной косой чертой.
bpo-34011: Изменен набор кода, который копировал все DLL и init.tcl из запущенного Python в создаваемый venv. Эти копии нужны только при запуске из исходной сборки Python, и код копирования теперь выполняется только в этом случае, а не каждый раз, когда создается venv.
bpo-34006: Отмените ограничение на длину строки для справочных документов Windows. Ограничение на длину строки не нужно, поскольку страницы отображаются в отдельном приложении, а не на вкладке браузера. Кроме того, оно может плохо взаимодействовать с настройками DPI.
bpo-31546: Восстанавливает работу PyOS_InputHook в ожидании ввода пользователя в подсказке. Это восстанавливает интеграцию интерактивных окон GUI (таких как фигуры Matplotlib) с подсказкой в Windows.
bpo-30237: Ошибка вывода, когда ReadConsole отменяется CancelSynchronousIo вместо аварийного завершения.
bpo-33895: GIL освобождается при вызове функций, которые получают блокировку загрузчика Windows.
bpo-33720: Уменьшает максимальную глубину рекурсии маршала в релизных сборках.
bpo-29097: Разрешить параметры с именами
datetime.fromtimestamp()
иOSError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33316: PyThread_release_lock всегда терпит неудачу
bpo-33184: Обновление программы установки Windows для использования OpenSSL 1.1.0h.
bpo-32890: Исправьте использование GetLastError() вместо errno в os.execve() и os.truncate().
bpo-33016: Исправьте потенциальное использование неинициализированной памяти в nt._getfinalpathname
bpo-32903: Исправление утечки памяти в os.chdir() в Windows, если текущий каталог задан как UNC-путь.
bpo-32901: Обновите версии Tcl и Tk до 8.6.8
bpo-31966: Исправлена ошибка WindowsConsoleIO.write() для записи пустых данных.
bpo-32409: Убедитесь, что activate.bat может обрабатывать содержимое Unicode.
bpo-32457: Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.
bpo-32370: Используйте правильную кодировку для вывода ipconfig в модуле uuid. Исправление от Segev Finer.
bpo-29248: Разрешить параметры с именами
os.readlink()
иPrintNameOffset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1104: Правильно обрабатывайте длину строки в
msilib.SummaryInfo.GetProperty()
, чтобы она не обрезала последний символ.
macOS¶
bpo-35401: Обновите программу установки macOS для использования OpenSSL 1.1.0j.
bpo-35025: Разрешить параметры с именами
CLOCK_GETTIME
иtimemodule
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24658: На macOS исправлено чтение из файла и запись в файл размером более 2 ГБ.
bpo-34405: Обновление до OpenSSL 1.1.0i для сборок установщика macOS.
bpo-33635: В macOS stat на некоторых файловых дескрипторах (/dev/fd/3 f.e) приводит к ошибке OSError, связанной с плохим файловым дескриптором. Защита от этого исключения была добавлена в методы is_dir, is_file и аналогичные. DirEntry.is_dir также может выбросить это исключение, поэтому _RecursiveWildcardSelector._iterate_directories также был расширен тем же шаблоном игнорирования ошибок.
bpo-13631: Файл .editrc в домашней директории пользователя теперь корректно обрабатывается при инициализации readline через эмуляцию editline на macOS.
bpo-33184: Обновите сборку программы установки macOS для использования OpenSSL 1.1.0h.
bpo-32726: Сборка и соединение с частной копией Tcl/Tk 8.6 для программы установки macOS 10.6+. Вариант установщика 10.9+ уже делает это. Это означает, что Python 3.7, предоставляемый установщиками python.org macOS, больше не нуждается в использовании каких-либо внешних версий Tcl/Tk, как системных, так и установленных пользователем, таких как ActiveTcl.
bpo-32901: Обновление программы установки macOS 10.9+ до версии Tcl/Tk 8.6.8.
bpo-31903: Разрешить параметры с именами
_scproxy
иSystemConfiguration
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
IDLE¶
bpo-35770: IDLE macosx удаляет Options => Configure IDLE. Ранее он по ошибке удалил Window => Zoom Height. (Теперь Zoom Height находится в меню Options). На Mac диалог настроек доступен через Preferences в меню IDLE.
bpo-35769: Измените новое имя файла IDLE с „Untitled“ на „untitled“
bpo-35660: Исправьте импорты в idlelib.window.
bpo-35641: Правильный формат
calltip
, если функция не имеет документальной строки.bpo-33987: Используйте ttk Frame для ttk-виджетов.
bpo-34055: Исправление ошибочных «умных» отступов и новых строк в IDLE Shell.
bpo-35591: Find Selection теперь работает, когда выбор не найден.
bpo-35196: Ускоряет подсчет строк соковыжималки.
bpo-35598: Обновите config_key: используйте имена PEP 8 и виджеты ttk, сделайте некоторые объекты глобальными и добавьте тесты.
bpo-28097: Добавление записей предыдущей/следующей истории в меню оболочки.
bpo-35208: Squeezer теперь правильно считает обернутые строки перед новыми строками.
bpo-35555: Закрашивает пункт контекстного меню «Код», если он неприменим.
bpo-35521: Документирование функции контекста кода редактора IDLE. Добавьте несколько внутренних ссылок в документацию по IDLE.
bpo-22703: Ярлык контекстного меню Code Context теперь переключается между Show/Hide Code Context. В меню Zoom Height теперь переключаются между Zoom/Restore Height. Высота масштаба переместилась из меню «Окно» в меню «Параметры».
bpo-35213: Там, где это уместно, используйте „macOS“ в idlelib.
bpo-34864: В macOS предупреждение, если для системного предпочтения «Предпочитать вкладки при открытии документов» установлено значение «Всегда».
bpo-34864: Документ о двух проблемах IDLE на MacOS. Настройка System Preferences Dock «prefer tabs always» отключает некоторые функции IDLE. Меню немного отличается от того, что описано для Windows и Linux.
bpo-35202: Удалите неиспользуемый импорт из lib/idlelib
bpo-33000: Документ о том, что оболочка IDLE не имеет ограничений по количеству строк. Программа, которая выполняется бесконечно, может переполнить память.
bpo-23220: Объясните, как оболочка IDLE отображает вывод.
bpo-35099: Улучшена документация о выполнении пользовательского кода в IDLE. Раздел переименован из «IDLE – консольные различия» в «Выполнение пользовательского кода». В основном он охватывает последствия использования пользовательских
sys.stdxxx
объектов.bpo-35097: Добавьте подраздел IDLE doc, объясняющий окна редактора. Темы включают открытие, строку заголовка и состояния, расширение .py* и запуск.
bpo-35093: Документируйте программу просмотра документов IDLE в документе IDLE doc. Добавьте параграф в раздел «Справка и настройки», подраздел «Источники справки».
bpo-35088: Обновление документа idlelib.help.copy_string. Теперь мы используем git и бэкпортирование вместо hg и прямого слияния.
bpo-35087: Обновление файлов справки idlelib для текущей сборки doc. Основное изменение - удаление номеров разделов главы.
bpo-34548: Используйте настроенную цветовую тему для текстовых представлений, доступных только для чтения.
bpo-1529353: Включает «сжатие» длинных выводов в оболочке, чтобы избежать снижения производительности и очистить историю без ее потери. Сжатые выводы можно скопировать, просмотреть в отдельном окне и «разжать».
bpo-34047: Исправлено направление прокрутки колеса мыши на macOS.
bpo-34275: Сделайте всплывающие подсказки IDLE всегда видимыми на Mac. Для некоторых комбинаций MacOS-tk требуется .update_idletasks(). Исправление Кевина Уолцера.
bpo-34120: Исправление невосприимчивости после закрытия некоторых окон и диалогов.
bpo-33975: Избегайте мелкого шрифта при выполнении htests. Поскольку часть цели тестов с человеческим взглядом - определить, что виджеты выглядят правильно, важно, чтобы при тестировании они выглядели так же, как при выполнении IDLE.
bpo-33905: Добавьте тест для idlelib.stackview.StackBrowser.
bpo-33924: Измените ключ mainmenu.menudefs „windows“ на „window“. Все остальные клавиши menudef - это строчные версии пунктов главного меню.
bpo-33906: Переименуйте idlelib.windows в window Match Window в главном меню и удалите последнее множественное имя модуля.
bpo-33917: Исправьте и задокументируйте idlelib/idle_test/template.py. Переработанный файл компилируется, запускается и тестируется нормально. idle_test/README.txt объясняет, как использовать его для создания новых тестовых файлов IDLE.
bpo-33904: IDLE: В rstrip переименуйте класс RstripExtension в Rstrip
bpo-33907: Для согласованности и ясности переименуйте модуль и классы IDLE. Модуль calltips и его класс CallTips теперь calltip и Calltip. В модуле calltip_w класс CallTip теперь CalltipWindow.
bpo-33856: Добавьте «help» в приветственное сообщение IDLE
bpo-33839: IDLE: рефакторинг ToolTip и CallTip, добавление документации и тестов
bpo-33855: Минимальное тестирование всех модулей IDLE. Добавьте недостающие файлы, импортируйте модуль, инстанцируйте классы и проверьте покрытие. Проверьте существующие файлы.
bpo-33656: В Windows добавьте вызов API, сообщающий, что tk масштабируется с учетом DPI. В Windows 8.1+ или 10, при неизменных свойствах DPI-совместимости бинарного файла Python и разрешении монитора более 96 DPI, это должно сделать текст и линии более четкими. В остальных случаях это не должно иметь никакого эффекта.
bpo-33768: Щелчок по контекстной строке перемещает эту строку в верхнюю часть окна редактора.
bpo-33763: IDLE: Используйте текстовый виджет, доступный только для чтения, для контекста кода вместо виджета метки.
bpo-33664: Прокрутка текста редактора IDLE по строкам. Ранее колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, что приводило к неполным строкам в верхней части окна редактора. Это изменение также применяется к окнам вывода shell и grep, но не к представлениям текста только для чтения.
bpo-33679: Включить настройку цвета для контекста кода в зависимости от темы. Используйте вкладку «Основные моменты», чтобы посмотреть настройки для встроенных тем или добавить настройки в пользовательские темы.
bpo-33642: Отображение до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, отображается одна пустая строка.
bpo-33628: IDLE: Очистка файла codecontext.py и его теста.
bpo-33564: Контекст кода IDLE теперь распознает async как открывающий блок.
bpo-21474: Обновление определения слова/идентификатора с ascii на unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком мыши, перемещение влево/вправо с помощью Control-left/right и удаление влево/вправо с помощью Control-BACKSPACE/DEL.
bpo-33204: IDLE: постоянно окрашивает недопустимые строковые префиксы. Строковый префикс „u“ не может быть сопряжен ни с „r“, ни с „f“. Последовательно закрашивайте столько префиксов, начиная с правого, сколько допустимо. Пересмотрите и расширьте тест колоризатора.
bpo-32984: Разрешить параметры с именами
__file__
и-s
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32940: Упрощение и переименование StringTranslatePseudoMapping в pyparse.
bpo-32916: Разрешить параметры с именами
str
иcode
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32905: Удалите неиспользуемый код в модуле pyparse.
bpo-32874: Добавьте тесты для pyparse.
bpo-32837: Использование системной и зависящей от места кодировки по умолчанию для open() - плохая идея для системных и зависящих от места файлов IDLE.
bpo-32826: Добавьте «encoding=utf-8» к open() в test_help_about IDLE. GUI-тест test_file_buttons() просматривает только начальные строки с кодировкой ascii-only, но не работает на системах, где open() по умолчанию имеет значение „ascii“, потому что readline() внутренне читает и декодирует достаточно далеко вперед, чтобы встретить не-ascii символ в CREDITS.txt.
bpo-32831: Добавьте документацию и тесты для codecontext.
bpo-32765: Обновление документальной строки вкладки «Общие» в configdialog для добавления новых виджетов в список виджетов.
Инструменты/демоверсии¶
bpo-35884: Добавьте скрипт бенчмарка для проверки различных способов доступа к переменным:
Tools/scripts/var_access_benchmark.py
.bpo-34989: python-gdb.py теперь обрабатывает ошибки при вычислении номера строки кадра Python.
bpo-20260: Клиника аргументов теперь имеет небитовые преобразователи unsigned int.
bpo-32962: Разрешить параметры с именами
UnicodeDecodeError
иstring()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32962: python-gdb теперь перехватывает ValueError на read_var(): когда в Python нет отладочных символов, например.
bpo-33189: pygettext.py теперь распознает только литеральные строки в качестве документальных строк и переводимых строк и отвергает байтовые литералы и выражения f-строк.
bpo-31920: Исправлена работа с каталогами в качестве аргументов в скрипте
pygettext
. Основано на патче Олега Красникова.bpo-29673: Исправьте макросы pystackv и pystack gdbinit.
bpo-25427: Удалите скрипт pyvenv в пользу
python3 -m venv
, чтобы уменьшить путаницу в вопросе о том, для какого интерпретатора Python будет создано виртуальное окружение.bpo-32885: Разрешить параметры с именами
-n
иTools/scripts/pathfix.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32222: Исправление того, что pygettext не извлекал документальные строки для функций с аргументами, аннотированными типом. Исправление Тоби Харрадайна.
bpo-31583: Исправление 2to3 для использования с опцией –add-suffix, но без опции –output-dir для относительного пути к файлам в текущем каталоге.
C API¶
bpo-35713: Разрешить параметры с именами
PyByteArray_Init()
иPyByteArray_Fini()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33817: Исправлено
_PyBytes_Resize()
для пустых байтовых объектов.bpo-35322: Разрешить параметры с именами
PyUnicode_EncodeLocale()
иPyUnicode_EncodeFSDefault()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35059: Разрешить параметры с именами
Py_INCREF()
иPy_DECREF()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35296: Разрешить параметры с именами
make install
иInclude/internal/*.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35081: Разрешить параметры с именами
#ifdef Py_BUILD_CORE
иInclude/*.h
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35259: Условно объявлять
Py_FinalizeEx()
(новое в 3.6) на основе Py_LIMITED_API. Исправление Артура Нойфельда.bpo-35081: Разрешить параметры с именами
_PyObject_GC_TRACK()
и_PyObject_GC_UNTRACK()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-35134: Создание нового подкаталога
Include/cpython/
.bpo-34725: Добавляет _Py_SetProgramFullPath, чтобы встраиватели могли переопределять sys.executable
bpo-34910: Разрешить параметры с именами
PyObject_Print()
и-1
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-34523: Py_DecodeLocale() и Py_EncodeLocale() теперь используют кодировку UTF-8 в Windows, если флаг Py_LegacyWindowsFSEncodingFlag равен нулю.
bpo-34193: Исправьте множественное число в сообщениях TypeError в getargs.c и typeobject.c: „1 аргумент“ вместо „1 аргументов“ и „1 элемент“ вместо „1 элементов“.
bpo-34127: Возвращает грамматически корректное сообщение об ошибке, основанное на количестве аргументов. Исправление от Karthikeyan Singaravelan.
bpo-23927: Разрешить параметры с именами
SystemError
иPyArg_ParseTupleAndKeywords()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32455: Добавлено
PyCompile_OpcodeStackEffectWithJump()
.bpo-34008: Py_Main() снова можно вызывать после Py_Initialize(), как в Python 3.6.
bpo-32500: Разрешить параметры с именами
PySequence_Size()
иPySequence_GetItem()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33818: Разрешить параметры с именами
PyExceptionClass_Name()
иconst char *
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33042: Встраиваемые приложения могут снова вызывать PySys_ResetWarnOptions, PySys_AddWarnOption и PySys_AddXOption перед вызовом Py_Initialize.
bpo-32374: Документируйте, что m_traverse для многофазных инициализированных модулей может вызываться с m_state=NULL, и добавьте проверку на вменяемость
bpo-30863: Разрешить параметры с именами
PyUnicode_AsWideChar()
иPyUnicode_AsWideCharString()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.7.0 final¶
Дата выхода: 2018-06-27
Библиотека¶
bpo-33851: Исправьте
ast.get_docstring()
для узла, у которого нет docstring.
C API¶
bpo-33932: Вызов Py_Initialize() дважды ничего не дает, вместо того чтобы завершиться фатальной ошибкой: восстановите поведение Python 3.6.
Python 3.7.0 релиз-кандидат 1¶
Дата выхода: 2018-06-12
Ядро и встроенные модули¶
bpo-33803: Исправление сбоя в hamt.c, вызванного включением GC tracking для объекта, у которого не все поля были установлены в NULL.
bpo-33706: Исправление сбоя в инициализации Python при разборе опций командной строки. Спасибо Кристофу Гольке за сообщение об ошибке и исправление!
bpo-30654: Исправлен сброс обработчика SIGINT на SIG_DFL при выключении интерпретатора, даже если ранее был установлен пользовательский обработчик. Исправление от Филиппа Керлинга.
bpo-31849: Исправьте предупреждение о сравнении знака/незнака в pyhash.c.
Библиотека¶
bpo-30167: Предотвращение исключения site.main(), если установлен PYTHONSTARTUP. Исправление от Стива Вебера.
bpo-33812: Экземпляр Datetime d с tzinfo не None, но с d.tzinfo.utcoffset(d), возвращающим None, теперь рассматривается методом astimezone() как наивный.
bpo-30805: Избегайте состояния гонки с помощью отладочного протоколирования
bpo-33694: asyncio: Исправление состояния гонки, приводящего к потере данных при pause_reading()/resume_reading() при использовании ProactorEventLoop.
bpo-32493: Разрешить параметры с именами
uuid_enc_be
иconfigure.ac
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33792: Добавьте asyncio.WindowsSelectorEventLoopPolicy и asyncio.WindowsProactorEventLoopPolicy.
bpo-33778: Обновите базу данных
unicodedata
до версии 11.0.0 Unicode.bpo-33770: улучшите сообщение об исключении base64 для кодированных входных данных недопустимой длины
bpo-33769: asyncio/start_tls: Исправьте сообщение об ошибке; отмените обратные вызовы в случае необработанной ошибки; пометьте SSLTransport как закрытый, если он был прерван.
bpo-33767: Разрешить параметры с именами
+
и*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33734: asyncio/ssl: Исправление ошибки AttributeError, увеличение таймаута рукопожатия по умолчанию
bpo-11874: Используйте лучший регекс при разбиении использования на оборачиваемые части. Позволяет избежать ошибок утверждения при использовании пользовательских строк metavar.
bpo-33582: Выдать предупреждение об устаревании для inspect.formatargspec
Документация¶
bpo-33409: Уточнена связь между режимом PYTHONCOERCECLOCALE в PEP 538 и режимом PYTHONUTF8 в PEP 540.
bpo-33736: Разрешить параметры с именами
asyncio.open_connection()
иasyncio.start_server()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31432: Уточните значение флагов CERT_NONE, CERT_OPTIONAL и CERT_REQUIRED для ssl.SSLContext.verify_mode.
Построить¶
bpo-5755: Разрешить параметры с именами
-Wstrict-prototypes
иCFLAGS_NODIST
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Windows¶
bpo-33720: Уменьшает максимальную глубину рекурсии маршала в релизных сборках.
IDLE¶
bpo-33656: В Windows добавьте вызов API, сообщающий, что tk масштабируется с учетом DPI. В Windows 8.1+ или 10, при неизменных свойствах DPI-совместимости бинарного файла Python и разрешении монитора более 96 DPI, это должно сделать текст и линии более четкими. В остальных случаях это не должно иметь никакого эффекта.
bpo-33768: Щелчок по контекстной строке перемещает эту строку в верхнюю часть окна редактора.
bpo-33763: IDLE: Используйте текстовый виджет, доступный только для чтения, для контекста кода вместо виджета метки.
bpo-33664: Прокрутка текста редактора IDLE по строкам. Ранее колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, что приводило к неполным строкам в верхней части окна редактора. Это изменение также применяется к окнам вывода shell и grep, но не к представлениям текста только для чтения.
bpo-33679: Включить настройку цвета для контекста кода в зависимости от темы. Используйте вкладку «Основные моменты», чтобы посмотреть настройки для встроенных тем или добавить настройки в пользовательские темы.
bpo-33642: Отображение до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, отображается одна пустая строка.
Python 3.7.0 beta 5¶
Дата выхода: 2018-05-30
Ядро и встроенные модули¶
bpo-33622: Разрешить параметры с именами
__del__
иgc.garbage
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33509: Исправьте параметр module_globals в warnings.warn_explicit(): не падайте, если module_globals не является dict.
bpo-20104: Новый
os.posix_spawn
, добавленный в 3.7.0b1, был удален, поскольку мы все еще работаем над тем, как должен выглядеть API. Ожидайте его появления в версии 3.8.bpo-33475: Исправлены различные ошибки при преобразовании аннотаций в строки и оптимизированы круглые скобки в строковом представлении.
bpo-33391: Исправьте утечку в функции set_symmetric_difference().
bpo-28055: Исправление не выровненных доступов в siphash24(). Исправление от Rolf Eike Beer.
bpo-32911: Разрешить параметры с именами bpo-29463 и
docstring
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21983: Исправление сбоя в
ctypes.cast()
в случае, если аргумент type является структурированным типом данных ctypes. Исправление от Эрика Суна и Орена Милмана.
Библиотека¶
bpo-32751: При отмене задания из-за таймаута
asyncio.wait_for()
теперь будет ждать, пока отмена не завершится.bpo-32684: Исправьте сбор, чтобы он распространял отмену самого себя даже при return_exceptions.
bpo-33654: Поддержка переключения типов протоколов в SSLTransport.set_protocol().
bpo-33674: Приостановите транспорт как можно раньше, чтобы еще больше снизить риск вызова data_received() до connection_made().
bpo-33674: Исправьте состояние гонки в SSLProtocol.connection_made() из asyncio.sslproto: немедленно начинайте рукопожатие вместо использования call_soon(). Ранее функция data_received() могла быть вызвана до начала хендшейка, что приводило к зависанию или сбою хендшейка.
bpo-31647: Исправлена ошибка, при которой вызов write_eof() на _SelectorSocketTransport после того, как он уже закрыт, приводил к ошибке AttributeError.
bpo-32610: Заставьте asyncio.all_tasks() возвращать только отложенные задачи.
bpo-32410: Избегайте блокировки файлового ввода-вывода в коде отката sendfile
bpo-33469: Исправление RuntimeError после закрытия цикла, в котором использовался run_in_executor
bpo-33672: Исправление сбоя Task.__repr__ при использовании фальшивых корутинов Cython
bpo-33654: Исправьте transport.set_protocol() для поддержки переключения между asyncio.Protocol и asyncio.BufferedProtocol. Исправьте loop.start_tls() для работы с asyncio.BufferedProtocols.
bpo-33652: Пикули переменных типов и подзаписанные дженерики теперь защищены от будущего и совместимы со старыми версиями Python.
bpo-32493: Исправлено
uuid.uuid1()
на FreeBSD.bpo-33618: Доработка и документирование предварительной и экспериментальной поддержки TLS 1.3 с OpenSSL 1.1.1
bpo-33623: Исправление возможного SIGSGV при создании asyncio.Future в __del__.
bpo-30877: Исправлена ошибка в Python-реализации декодера JSON, из-за которой кэш разобранных строк не очищался после завершения декодирования. Основано на исправлении от c-fos.
bpo-33570: Изменение настроек набора шифров TLS 1.3 для совместимости с OpenSSL 1.1.1-pre6 и более новыми версиями. В OpenSSL 1.1.1 шифры TLS 1.3 будут включены по умолчанию.
bpo-28556: Разрешить параметры с именами
typing.Union
иUnion[Manager, Employee]
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33540: Разрешить параметры с именами
block_on_close
иForkingMixIn
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33548: tempfile._candidate_tempdir_list должен учитывать общие места TEMP
bpo-33109: подпарсеры argparse снова не требуются по умолчанию, возвращая изменение в поведении, введенное bpo-26510 в 3.7.0a2.
bpo-33536: dataclasses.make_dataclass теперь проверяет недопустимые имена полей и дубликаты полей. Также добавлена проверка на недопустимые спецификации полей.
bpo-33542: Запретите
uuid.get_node
использовать DUID вместо MAC в Windows. Исправление от Цви Эффронаbpo-26819: Исправление состояния гонки с
ReadTransport.resume_reading
в цикле событий проактора Windows.Исправление сбоя в
typing.get_type_hints()
, когда ClassVar предоставлялся как строковая прямая ссылка.bpo-33505: Оптимизация asyncio.ensure_future() за счет переупорядочивания проверок if: 1,17x быстрее.
bpo-33497: Добавляет параметр errors в cgi.parse_multipart и заставляет кодировку в FieldStorage использовать заданные ошибки (необходимо для Twisted). Исправление от Amber Brown.
bpo-33495: Измените repr поля dataclasses.Fields, чтобы использовать repr каждого из его членов, а не str. Так будет понятнее, что на самом деле представляет собой каждое поле. Это особенно актуально для члена „type“.
bpo-33453: Исправление работы классов данных при использовании буквальных аннотаций строковых типов или при использовании PEP 563 «Отложенная оценка аннотаций». Определяются только специфические строковые префиксы для ClassVar («ClassVar» и «typing.ClassVar») и InitVar («InitVar» и «dataclasses.InitVar»).
bpo-28556: Разрешить параметры с именами
NamedTuple.__new__
и*args
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20087: Обновлено сопоставление псевдонимов с локалями, поддерживаемыми glibc 2.27.
bpo-33422: Исправление удаления кавычек в конце строки при поиске байтовых/строковых литералов в pydoc. Исправление от Андреса Дельфино.
bpo-28167: Разрешить параметры с именами
platform.linux_distribution
иplatform.dist
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33197: Обновление сообщения об ошибке при построении недействительного inspect.Parameters Исправление от Donghee Na.
bpo-33263: Исправление утечки FD в
_SelectorSocketTransport
. Патч от Влада Старостина.bpo-32861: Представление
__str__
urllib.robotparser’а теперь включает записи с подстановочными знаками и поля «Crawl-delay» и «Request-rate». Исправление Майкла Лазара.bpo-32257: Модуль ssl теперь содержит константу OP_NO_RENEGOTIATION, доступную с OpenSSL 1.1.0h или 1.1.1.
bpo-16865: Поддержка массивов >=2GiB в
ctypes
. Исправление от Сегева Файнера.
Документация¶
bpo-23859: Документ, подтверждающий, что
asyncio.wait()
не отменяет свои фьючерсы по тайм-ауту.bpo-33604: Обновите значение HMAC md5 по умолчанию на DeprecationWarning, удалите до версии 3.8.
bpo-33503: Исправьте неработающую ссылку на pypi
bpo-33421: Добавьте недостающую документацию для
typing.AsyncContextManager
.
Тесты¶
Построить¶
bpo-33614: Обеспечивает правильную регенерацию файлов определения модулей для стабильного ABI в Windows.
bpo-33522: Включите сборки CI в Visual Studio Team Services по адресу https://python.visualstudio.com/cpython.
bpo-33012: Добавьте
-Wno-cast-function-type
для gcc 8 для отключения предупреждений о приведении функций к PyCFunction в списках определений методов.
macOS¶
bpo-13631: Файл .editrc в домашней директории пользователя теперь корректно обрабатывается при инициализации readline через эмуляцию editline на macOS.
IDLE¶
Python 3.7.0 beta 4¶
Дата выхода: 2018-05-02
Ядро и встроенные модули¶
bpo-33363: Разрешить параметры с именами
async with
иasync for
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33128: Исправление ошибки, из-за которой PathFinder дважды появлялся в sys.meta_path. Автор исправления - Пабло Галиндо Сальгадо.
bpo-33312: Исправлены предупреждения clang ubsan (undefined behavior sanitizer) в dictobject.c путем корректировки объявления внутренней структуры общих ключей struct _dictkeysobject.
bpo-33231: Исправьте потенциальную утечку памяти в
normalizestring()
.bpo-33205: Разрешить параметры с именами
round_up_to_power_2(used*2+hashtable_size/2)
иround_up_to_power_2(used*3)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29922: Разрешить параметры с именами
__aenter__()
и__aexit__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33199: Исправление
ma_version_tag
в реализации dict не инициализируется при копировании из dict с общим доступом к ключу.
Библиотека¶
bpo-33281: Исправление регрессии ctypes.util.find_library на macOS.
bpo-33383: Исправлен сбой в методе get() объекта базы данных
dbm.ndbm
при его вызове с одним аргументом.bpo-33329: Исправление регрессии многопроцессорной обработки на новых версиях glibcs
bpo-991266: Разрешить параметры с именами
Comment
иhttp.cookies.SimpleCookie
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33131: Обновление поставляемой версии pip до 10.0.1.
bpo-33308: Разрешить параметры с именами
parser
иline_info=False
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33266: lib2to3 теперь распознает строки
rf'...'
.bpo-11594: Убедитесь, что при использовании lib2to3 соблюдаются окончания строк.
bpo-33254: Разрешить параметры с именами
importlib.resources.contents()
иimportlib.abc.ResourceReader.contents()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33256: Разрешить параметры с именами
<module>
иcgitb.html()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33185: Разрешить параметры с именами
-m
и bpo-33053 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33169: Разрешить параметры с именами
None
иsys.path_importer_cache
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33217: Устранить поиск объектов, не являющихся Enum, в классах Enum и членах Enum (в версии 3.8+ будет поднят
TypeError
).bpo-33203: Разрешить параметры с именами
random.Random.choice()
иIndexError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33224: Обновите difflib.mdiff() для PEP 479. Преобразуйте не пойманную StopIteration в генераторе в return-выражение.
bpo-33209: Конечное обрамление в конце реализации C
pickle.Pickler.dump()
.bpo-20104: Улучшена обработка ошибок и исправлена утечка ссылок в
os.posix_spawn()
.bpo-33175: В классах данных Field.__set_name__ теперь ищет специальный метод __set_name__ на классе, а не на экземпляре значения по умолчанию.
bpo-33097: Вызывает RuntimeError при вызове
executor.submit
во время выключения интерпретатора.bpo-31908: Разрешить параметры с именами
trace
и--missing
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-33378: Добавьте переключатель корейского языка для https://docs.python.org/3/
bpo-33276: Уточните, что атрибут
__path__
в модулях не может быть просто любым значением.bpo-33201: Модернизируйте документацию по написанию типов расширения C.
bpo-33195: Разрешить параметры с именами
Py_UNICODE
иc-api/arg
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-8243: Добавьте примечание о поведении исключений curses.addch и curses.addstr при записи за пределами окна или блокнота.
bpo-32337: Обновление документации, связанной с заказом
dict
.
Тесты¶
bpo-33358: Разрешить параметры с именами
test_embed.test_pre_initialization_sys_options()
и--enable-shared
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-33394: Включает подробную сборку для модулей расширения, когда GNU make передаются макросы в командной строке.
bpo-33393: Обновление файлов config.guess и config.sub.
bpo-33377: Добавьте новые триплеты для вариантов mips r6 и riscv (используются в суффиксах расширений).
bpo-32232: Разрешить параметры с именами
Modules/Setup
и-DPy_BUILD_CORE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33182: Тесты встраивания снова могут быть собраны с помощью clang 6.0
Windows¶
bpo-33184: Обновление программы установки Windows для использования OpenSSL 1.1.0h.
macOS¶
bpo-33184: Обновите сборку программы установки macOS для использования OpenSSL 1.1.0h.
IDLE¶
bpo-21474: Обновление определения слова/идентификатора с ascii на unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком мыши, перемещение влево/вправо с помощью Control-left/right и удаление влево/вправо с помощью Control-BACKSPACE/DEL.
bpo-33204: IDLE: постоянно окрашивает недопустимые строковые префиксы. Строковый префикс „u“ не может быть сопряжен ни с „r“, ни с „f“. Последовательно закрашивайте столько префиксов, начиная с правого, сколько допустимо. Пересмотрите и расширьте тест колоризатора.
Инструменты/демоверсии¶
bpo-33189: pygettext.py теперь распознает только литеральные строки в качестве документальных строк и переводимых строк и отвергает байтовые литералы и выражения f-строк.
bpo-31920: Исправлена работа с каталогами в качестве аргументов в скрипте
pygettext
. Основано на патче Олега Красникова.bpo-29673: Исправьте макросы pystackv и pystack gdbinit.
bpo-31583: Исправление 2to3 для использования с опцией –add-suffix, но без опции –output-dir для относительного пути к файлам в текущем каталоге.
Python 3.7.0 beta 3¶
Дата выхода: 2018-03-29
Безопасность¶
bpo-33136: Защита модуля ssl от LibreSSL CVE-2018-8970. X509_VERIFY_PARAM_set1_host() вызывается с явным namelen. Новый тест гарантирует, что NULL-байты не допускаются.
bpo-33001: Минимальное исправление для предотвращения выхода за пределы буфера в os.symlink на Windows
bpo-32981: Разрешить параметры с именами CVE-2018-1060 и CVE-2018-1061 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-33053: При использовании ключа -m путь sys.path[0] теперь явно расширяется как начальный рабочий каталог, а не остается пустым (что позволяет импортировать из текущего рабочего каталога на момент импорта).
bpo-33018: Улучшение согласованности ошибок, вызываемых
issubclass()
при вызове с неклассом и абстрактным базовым классом в качестве первого и второго аргументов соответственно. Исправление Джоша Бронсона.bpo-33041: Исправлено выскакивание, когда функция содержит цикл
async for
.bpo-33026: Исправлено выскакивание из блока «с» при установке f_lineno.
bpo-33005: Исправление падения при форке при использовании пользовательского аллокатора памяти (например, при использовании переменной окружения PYTHONMALLOC). _PyGILState_Reinit() и _PyInterpreterState_Enable() теперь используют стандартный RAW-распределитель памяти для выделения нового мьютекса интерпретатора на форке.
bpo-17288: Предотвращение переходов из событий трассировки „return“ и „exception“.
bpo-32836: Не используйте временные переменные в случаях понимания списков/диктов/наборов
Библиотека¶
bpo-33141: Пусть объекты Field передают через __set_name__ свои значения по умолчанию, если у них есть свой __set_name__.
bpo-33096: Разрешите ttk.Treeview.insert вставлять iid, имеющий булево значение false. Обратите внимание, что iid=0 и iid=False будут одинаковыми. Исправление Гарвита Кхатри.
bpo-32873: Рассматривайте переменные типа и специальные формы типизации как неизменяемые при копировании и pickle. Это исправляет несколько мелких проблем и несоответствий, а также улучшает обратную совместимость с Python 3.6.
bpo-33134: При вычислении __hash__ класса данных используйте таблицу поиска, содержащую функцию, которая возвращает значение __hash__. Это лучше, чем искать строку, а затем тестировать ее, чтобы понять, что делать.
bpo-33127: Модуль ssl теперь компилируется с LibreSSL 2.7.1.
bpo-32505: Вызывает ошибку TypeError, если переменная-член класса данных имеет тип Field, но не имеет аннотации типа.
bpo-33078: Исправление сбоя на OSX, вызванного тестами, полагающимися на sem_getvalue
bpo-33116: Добавьте „Field“ в dataclasses.__all__.
bpo-32896: Исправление ошибки, когда при подклассификации класса данных с полем, использующим default_factory, создавался некорректный класс.
bpo-33100: Классы данных: Если поле имеет значение по умолчанию, которое является MemberDescriptorType, то это связано с тем, что поле находится в __слотах__, а не с действительным значением по умолчанию.
bpo-32953: Если класс, не являющийся классом данных, наследуется от замороженного класса данных, разрешите добавлять атрибуты в производный класс. Нельзя присваивать атрибуты только замороженному классу данных. Требуйте, чтобы все классы данных в иерархии были либо все замороженными, либо все незамороженными.
bpo-33061: Разрешить параметры с именами
NoReturn
и__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33078: Исправьте обработку размера в multiprocessing.Queue при возникновении ошибки pickling.
bpo-33064: Разрешить параметры с именами
*args
и**kwargs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33056: FIX корректное закрытие утечек fds в concurrent.futures.ProcessPoolExecutor.
bpo-33021: Освобождение GIL во время вызова fstat(), что позволяет избежать зависания всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Исправление Нира Соффера.
bpo-31804: Избегайте сбоев в multiprocessing.Process, если стандартные потоки закрыты или отсутствуют при выходе.
bpo-33037: Пропускать отправку/получение данных после закрытия транспорта SSL.
bpo-27683: Разрешить параметры с именами
ipaddress
иhosts()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32999: Разрешить параметры с именами
ABC.__subclasscheck__(cls, subclass)
иsubclass
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33009: Исправьте inspect.signature() для однопараметрических partialmethods.
bpo-32969: Раскрытие нескольких отсутствующих констант в zlib и исправление соответствующей документации.
bpo-32056: Разрешить параметры с именами
aifc
иwave
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32844: Исправление неправильного перенаправления низкого дескриптора (0 или 1) на stderr в подпроцессе, если другой низкий дескриптор закрыт.
bpo-32857: Разрешить параметры с именами
tkinter
иafter_cancel(None)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31639: http.server теперь раскрывает класс ThreadedHTTPServer и использует его при запуске модуля с
-m
, чтобы справиться с предварительным открытием сокетов веб-браузерами.bpo-27645: Разрешить параметры с именами
sqlite3.Connection
иbackup
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-33126: Документ PyBuffer_ToContiguous().
bpo-27212: Измените документацию для рецепта
islice()
, чтобы он потреблял начальные значения вплоть до начального индекса.bpo-28247: Обновите документацию
zipapp
, чтобы описать, как создавать автономные приложения.bpo-18802: Изменения в документации для ipaddress. Исправление от Jon Foster и Berker Peksag.
bpo-27428: Разрешить параметры с именами
WindowsRegistryFinder
иMetaPathFinder
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Тесты¶
Построить¶
bpo-33163: Обновите pip до версии 9.0.3 и setuptools до версии 39.0.1.
Windows¶
macOS¶
bpo-32726: Сборка и соединение с частной копией Tcl/Tk 8.6 для программы установки macOS 10.6+. Вариант установщика 10.9+ уже делает это. Это означает, что Python 3.7, предоставляемый установщиками python.org macOS, больше не нуждается в использовании каких-либо внешних версий Tcl/Tk, как системных, так и установленных пользователем, таких как ActiveTcl.
IDLE¶
Инструменты/демоверсии¶
bpo-32885: Разрешить параметры с именами
-n
иTools/scripts/pathfix.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
C API¶
bpo-33042: Встраиваемые приложения могут снова вызывать PySys_ResetWarnOptions, PySys_AddWarnOption и PySys_AddXOption перед вызовом Py_Initialize.
bpo-32374: Документируйте, что m_traverse для многофазных инициализированных модулей может вызываться с m_state=NULL, и добавьте проверку на вменяемость
Python 3.7.0 beta 2¶
Дата выхода: 2018-02-27
Безопасность¶
bpo-28414: Модуль ssl теперь позволяет пользователям выполнять собственное en/decoding IDN при использовании SNI.
Ядро и встроенные модули¶
bpo-32889: Разрешить параметры с именами
Py_ADDRESS_IN_RANG
иaddress_in_range
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31356: Удалите новый API, добавленный в bpo-31356 (менеджер контекста gc.ensure_disabled()).
bpo-32305: Разрешить параметры с именами
__file__
и__spec__.origin
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32303: Разрешить параметры с именами
__spec__.loader
и__loader__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32711: Исправьте предупреждающие сообщения для Python/ast_unparse.c. Исправление от Stéphane Wirtel
bpo-32583: Исправление возможного падения встроенных декодеров Unicode, вызванного ошибками записи за пределы границ при использовании настраиваемых обработчиков ошибок декодирования.
Библиотека¶
bpo-32960: Для классов данных запрещено наследовать замороженные классы от незамороженных, а также запрещено наследовать незамороженные классы от замороженных. Это ограничение будет снято в будущем.
bpo-32713: Исправлена работа tarfile.itn с выходящими за границы плавающими значениями. Автор исправления - Джоффри Фюрер.
bpo-32951: Прямое инстанцирование объектов SSLSocket и SSLObject теперь запрещено. Конструкторы никогда не были документированы, протестированы или разработаны как публичные конструкторы. Пользователи должны были использовать ssl.wrap_socket() или SSLContext.
bpo-32929: Удалите трехсоставной параметр «hash» и добавьте булево значение «unsafe_hash». Если unsafe_hash равен True, добавьте функцию __hash__, но если такой __hash__ существует, вызовите TypeError. Если unsafe_hash равно False, добавьте __hash__, основанный на значениях eq= и frozen=. Поведение unsafe_hash=False аналогично старому поведению hash=None. unsafe_hash=False используется по умолчанию, как раньше было hash=None.
bpo-32947: Добавьте OP_ENABLE_MIDDLEBOX_COMPAT и протестируйте обходной путь для TLSv1.3 для будущей совместимости с OpenSSL 1.1.1.
bpo-30622: Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.
bpo-32922: dbm.open() теперь кодирует имя файла кодировкой файловой системы, а не кодировкой по умолчанию.
bpo-32859: Разрешить параметры с именами
os.dup2
иdup3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32556: nt._getfinalpathname, nt._getvolumepathname и nt._getdiskusage теперь корректно конвертируются из байтов.
bpo-25988: Разрешить параметры с именами
DeprecationWarning
иcollections
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21060: Перепишите сбивающее с толку сообщение из setup.py upload с «No dist file created in earlier command» на более полезное «Must create and upload files in one command».
bpo-32852: Убедитесь, что sys.argv остается в виде списка при выполнении трассировки.
bpo-31333: Разрешить параметры с именами
_abc
иabc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32841: Исправлена проблема
asyncio.Condition
, из-за которой после уведомления и отмены условной блокировки отмена молча игнорировалась. Исправление от Bar Harel.bpo-32819: ssl.match_hostname() была упрощена и больше не зависит от модуля re и ipaddress для подстановочных символов и IP-адресов. Улучшено сообщение об ошибках, связанных с недействительными подстановочными знаками.
bpo-32394: сокет: Удаление флагов TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL на старых версиях Windows во время выполнения.
bpo-31787: Исправлены утечки методов
__init__()
в различных модулях. (Внесено Ореном Милманом)bpo-30157: Исправлено угадывание кавычек и разделителя в csv.Sniffer.sniff(), когда только последнее поле заключено в кавычки. Исправление от Джейка Дэвиса.
bpo-32792: collections.ChainMap() сохраняет порядок базовых отображений.
bpo-32775:
fnmatch.translate()
больше не создает шаблоны, содержащие операции над множествами. Наборы, начинающиеся с „[“ или содержащие „–“, „&&“, „~~“ или „||“, будут по-другому интерпретироваться в регулярных выражениях в будущих версиях. В настоящее время они выдают предупреждения. fnmatch.translate() теперь позволяет избежать случайного получения шаблонов, содержащих такие наборы.bpo-32622: Реализуйте собственный быстрый sendfile для цикла событий проактора Windows.
bpo-32777: Исправление редкого, но потенциально возможного тупика дочернего процесса preexec в подпроцессе на POSIX-системах при пометке дескрипторов файлов, наследуемых при exec в дочернем процессе. Эта ошибка, похоже, появилась в версии 3.4.
bpo-32647: Модуль ctypes раньше зависел от косвенной линковки для dlopen. Теперь разделяемое расширение явно связывается с libdl на платформах с dl.
bpo-32741: Реализуйте метод
asyncio.TimerHandle.when()
.bpo-32691: Используйте mod_spec.parent при запуске модулей с pdb
bpo-32734: Исправлена проблема безопасности
asyncio.Lock()
, из-за которой один и тот же замок можно было получить и заблокировать несколько раз, не освобождая его. Исправление от Bar Harel.bpo-32727: Не включать поле имени в SMTP-конверт с адреса. Исправление от Стефана Виртела
bpo-31453: Добавлены константы TLSVersion и атрибуты SSLContext.maximum_version / minimum_version. В новом API реализована функция OpenSSL 1.1 https://web.archive.org/web/20180309043602/https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html.
bpo-24334: Внутренние детали реализации модуля ssl были очищены. В SSLSocket стало на один уровень непрямой связи меньше. Информация о владельце и сессии теперь обрабатывается конструктором SSLSocket и SSLObject. Упрощена реализация привязки каналов.
bpo-31848: Исправьте обработку ошибок в Aifc_read.initfp(), когда чанк SSND не был найден. Исправление от Zackery Spytz.
bpo-32585: Добавьте виджет Ttk spinbox в
tkinter.ttk
. Исправление от Alan D Moore.bpo-32221: Разрешить параметры с именами
%scope
иsocket.recvfrom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30693: Класс TarFile теперь рекурсирует каталоги воспроизводимым способом.
bpo-30693: Класс ZipFile теперь рекурсирует каталоги воспроизводимым способом.
Документация¶
bpo-28124: Функция модуля ssl ssl.wrap_socket() была отменена и устарела в пользу более безопасного и эффективного метода SSLContext.wrap_socket().
bpo-17232: Уточнение документации для -O и -OO. Исправление Терри Риди.
bpo-32436: Добавьте документацию для модуля contextvars (PEP 567).
bpo-32800: Обновление ссылки на w3c doc для стандартных пространств имен xml.
bpo-11015: Обновление документации
test.support
.bpo-8722: Разрешить параметры с именами
__getattr__()
иget()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32614: Измените примеры RE в документации, чтобы использовать необработанные строки для предотвращения
DeprecationWarning
, и добавьте текст в REGEX HOWTO, чтобы подчеркнуть это ухудшение.bpo-31972: Улучшите документацию для подклассов
pathlib.PurePath
.
Тесты¶
bpo-31809: Добавьте тесты для проверки соединения с кривыми secp ECDH.
Построить¶
bpo-32898: Исправление отладочной сборки python при использовании COUNT_ALLOCS.
Windows¶
bpo-32901: Обновите версии Tcl и Tk до 8.6.8
bpo-31966: Исправлена ошибка WindowsConsoleIO.write() для записи пустых данных.
bpo-32409: Убедитесь, что activate.bat может обрабатывать содержимое Unicode.
bpo-32457: Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.
bpo-32370: Используйте правильную кодировку для вывода ipconfig в модуле uuid. Исправление от Segev Finer.
bpo-29248: Разрешить параметры с именами
os.readlink()
иPrintNameOffset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
macOS¶
bpo-32901: Обновление программы установки macOS 10.9+ до версии Tcl/Tk 8.6.8.
IDLE¶
bpo-32916: Разрешить параметры с именами
str
иcode
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32905: Удалите неиспользуемый код в модуле pyparse.
bpo-32874: Добавьте тесты для pyparse.
bpo-32837: Использование системной и зависящей от места кодировки по умолчанию для open() - плохая идея для системных и зависящих от места файлов IDLE.
bpo-32826: Добавьте «encoding=utf-8» к open() в test_help_about IDLE. GUI-тест test_file_buttons() просматривает только начальные строки с кодировкой ascii-only, но не работает на системах, где open() по умолчанию имеет значение „ascii“, потому что readline() внутренне читает и декодирует достаточно далеко вперед, чтобы встретить не-ascii символ в CREDITS.txt.
bpo-32765: Обновление документальной строки вкладки «Общие» в configdialog для добавления новых виджетов в список виджетов.
Инструменты/демоверсии¶
bpo-32222: Исправление того, что pygettext не извлекал документальные строки для функций с аргументами, аннотированными типом. Исправление Тоби Харрадайна.
Python 3.7.0 beta 1¶
Дата выхода: 2018-01-30
Ядро и встроенные модули¶
bpo-32703: Исправьте ResourceWarning корутины, если во время ее финализации есть активный набор ошибок.
bpo-32650: Pdb и другие отладчики, зависящие от bdb.py, будут корректно перешагивать через (следующую команду) нативные корутины. Исправление от Pablo Galindo.
bpo-28685: Оптимизация list.sort() и sorted() за счет использования специализированных по типу сравнений, когда это возможно.
bpo-32685: Улучшение предложения, когда Python 2 форма оператора print либо присутствует в той же строке, что и заголовок составного оператора, либо завершается точкой с запятой вместо новой строки. Исправление Нитиша Чандры.
bpo-32697: Теперь Python явно сохраняет порядок определения параметров, относящихся только к ключевым словам. Он всегда сохранял их порядок, но раньше такое поведение не гарантировалось; теперь оно гарантировано и проверено.
bpo-32690: Словарь locals() теперь отображается в том лексическом порядке, в котором были определены переменные. Ранее порядок был обратным.
bpo-32677: Разрешить параметры с именами
.isascii()
иstr
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32670: Применяйте PEP 479 для всего кода. Это означает, что ручное вызывание исключения StopIteration из генератора запрещено для всего кода, независимо от того, использовалось ли „from __future__ import generator_stop“ или нет.
bpo-32591: Добавлена встроенная поддержка отслеживания происхождения объектов coroutine; см. sys.set_coroutine_origin_tracking_depth и CoroutineType.cr_origin. Это заменяет использование в режиме отладки asyncio обертывания корутин для нативных объектов корутин.
bpo-31368: Раскрытие системных вызовов preadv и pwritev в модуле os. Патч от Пабло Галиндо
bpo-32544: Разрешить параметры с именами
hasattr(obj, name)
иgetattr(obj, name, default)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26163: Улучшен хэш frozenset() для создания более четких значений хэша при работе с наборами данных, содержащими много похожих значений.
bpo-32550: Удалите байткод STORE_ANNOTATION.
bpo-20104: Выставление posix_spawn в качестве низкоуровневого API в модуле os. (удалено до версии 3.7.0rc1)
bpo-24340: Исправлена оценка размера стека кода.
bpo-18533: Разрешить параметры с именами
repr()
иvalues()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20891: Py_Initialize() теперь создает GIL. GIL больше не создается «по требованию», чтобы исправить состояние гонки, когда PyGILState_Ensure() вызывается в не-Python потоке.
bpo-32028: Ведущие пробельные символы теперь корректно игнорируются при генерации предложений по преобразованию операторов печати Py2 в вызовы встроенных функций печати Py3. Исправление от Sanyam Khurana.
bpo-31179: Сделайте dict.copy() в 5,5 раз быстрее.
bpo-31113: Избавьтесь от рекурсии в компиляторе для нормального потока управления.
Библиотека¶
bpo-25988: Откажитесь от раскрытия содержимого collections.abc в обычном модуле collections.
bpo-31429: Выбор набора шифров по умолчанию в модуле ssl теперь использует подход черного списка, а не жестко закодированного белого списка. Python больше не включает шифры, которые были заблокированы обновлением безопасности OpenSSL. Выбор набора шифров по умолчанию может быть настроен на этапе компиляции.
bpo-30306: contextlib.contextmanager теперь освобождает аргументы, переданные базовому генератору, сразу после входа в контекстный менеджер. Ранее он сохранял их до тех пор, пока был жив контекстный менеджер, даже если не использовался в качестве декоратора функций. Исправление Мартина Тайхмана.
bpo-21417: Добавлена поддержка установки уровня сжатия для zipfile.ZipFile.
bpo-32251: Реализуйте asyncio.BufferedProtocol (предварительный API).
bpo-32513: В классах данных позволяет более просто переопределять методы dunder без указания параметров декоратора.
bpo-32660: Разрешить параметры с именами
termios
иFIONREAD
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27931: Исправление ошибки разбора заголовка адреса электронной почты, когда имя пользователя представляет собой пустую строку с кавычками. Исправление от Xiang Zhang.
bpo-32659: В Solaris и производных системах
os.stat_result
предоставляет атрибут st_fstype.bpo-32662: Реализуйте методы Server.start_serving(), Server.serve_forever() и Server.is_serving(). Добавьте ключевой параметр „start_serving“ в loop.create_server() и loop.create_unix_server().
bpo-32391: Разрешить параметры с именами
asyncio.StreamWriter.wait_closed()
иasyncio.StreamWriter.is_closing()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32643: Сделайте методы Task._step, Task._wakeup и Future._schedule_callbacks частными.
bpo-32630: Рефакторинг модуля decimal для использования contextvars для хранения десятичного контекста.
bpo-32622: Добавить метод
asyncio.AbstractEventLoop.sendfile()
.bpo-32304: команда загрузки distutils больше не повреждает tar-файлы, заканчивающиеся байтом CR, и больше не пытается преобразовать CR в CRLF в любом из текстовых полей загрузки.
bpo-32502: uuid.uuid1 больше не вызывает исключение, если встречается 64-битный аппаратный адрес.
bpo-32596: Разрешить параметры с именами
concurrent.futures
иThreadPoolExecutor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31801: Разрешить параметры с именами
_ignore_
иEnum
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32576: Используйте queue.SimpleQueue() в тех местах, где его можно вызвать из обратного вызова weakref.
bpo-32574: Исправление утечки памяти в asyncio.Queue, когда очередь имеет ограниченный размер и она заполнена, отмена queue.put() может привести к утечке памяти. Автор исправления: Хосе Мелеро.
bpo-32521: Модуль nis теперь совместим с новым расположением libnsl и headers.
bpo-32467: collections.abc.ValuesView теперь наследует от collections.abc.Collection.
bpo-32473: Улучшение читаемости вывода ABCMeta._dump_registry()
bpo-32102: Новый аргумент
capture_output
для subprocess.runbpo-32521: glibc удалил Sun RPC. Используйте заменяющие заголовки и библиотеку libtirpc в модуле nis.
bpo-32493: Модуль UUID исправляет сборку для FreeBSD/OpenBSD
bpo-32503: Пикинг по протоколу 4 больше не создает слишком маленькие кадры.
bpo-29237: Создание перечисления для параметров сортировки pstats
bpo-32454: Добавьте функцию close(fd) в модуль сокетов.
bpo-25942: Модуль subprocess теперь более изящен при обработке прерывания клавиатуры Ctrl-C во время subprocess.call, subprocess.run или контекстного менеджера Popen. Теперь он ждет некоторое время, пока дочерний процесс (предполагается, что он также получил SIGINT) выйдет, прежде чем продолжить обработку исключения KeyboardInterrupt. Это все еще включает SIGKILL в API call() и run(), но, по крайней мере, у ребенка был шанс первым.
bpo-32433: В модуле hmac теперь есть hmac.digest(), который предоставляет оптимизированный HMAC-дайджест.
bpo-28134: Сокеты теперь по умолчанию автоматически определяют семейство, тип и протокол из дескриптора файла.
bpo-32404: Разрешить параметры с именами
datetime.datetime.fromtimestamp()
иdatetime.datetime
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32403: Разрешить параметры с именами
datetime.date
иdatetime.datetime
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32228: Разрешить параметры с именами
truncate()
иtell()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32410: Реализуйте
loop.sock_sendfile
для цикла событий asyncio.bpo-22908: В класс ZipExtFile добавлены функции seek и tell. Это работает только в том случае, если файловый объект, используемый для открытия zip-файла, доступен для поиска.
bpo-32373: Добавьте метод socket.getblocking().
bpo-32248: Разрешить параметры с именами
importlib.resources
иimportlib.abc.ResourceReader
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32320: collections.namedtuple() теперь поддерживает значения по умолчанию.
bpo-29302: Добавьте contextlib.AsyncExitStack. Патч от Александра Мора и Ильи Кулакова.
bpo-31961: Разрешить параметры с именами path-like object и path-like object с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-31900: Разрешить параметры с именами
locale.localeconv()
иLC_CTYPE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31853: Используйте super().method вместо socket.method в SSLSocket. Скорее всего, они были там по причинам, связанным с наследием.
bpo-31399: Модуль ssl теперь использует API OpenSSL X509_VERIFY_PARAM_set1_host() и X509_VERIFY_PARAM_set1_ip() для проверки имен хостов и IP-адресов. Возврат к общему имени субъекта можно отключить с помощью SSLContext.hostname_checks_common_name.
bpo-14976: Добавьте класс queue.SimpleQueue, неограниченную очередь FIFO с реентерабельной реализацией put() на языке C.
Документация¶
bpo-32724: Добавляет ссылки на некоторые команды в документацию по Pdb. Исправление Стефана Виртела
bpo-32649: Дополните часть документации по C API, профилированию и трассировке недавно добавленными событиями для каждого опкода.
bpo-17799: Объясните реальное поведение sys.settrace и sys.setprofile и их C-API аналогов относительно того, какой тип событий принимается в каждой функции. Исправление от Pablo Galindo Salgado.
Тесты¶
bpo-32721: Исправьте test_hashlib, чтобы он не выходил из строя, если модуль _md5 не собран.
bpo-28414: Добавлены тестовые случаи для имен хостов IDNA 2003 и 2008. Интернационализированные имена хостов IDNA 2003 работают с момента выхода bpo-31399. IDNA 2008 все еще не работает.
bpo-32604: Добавляет новый модуль расширения «_xxsubinterpreters», который раскрывает существующий C-API субинтерпретатора и новый механизм обмена данными между субинтерпретаторами. Модуль в первую очередь предназначен для более тщательного тестирования существующей поддержки субинтерпретаторов. Обратите внимание, что модуль _xxsubinterpreters был удален в версии 3.7.0rc1.
bpo-32602: Добавьте тестовые сертификаты и тест для сертификатов ECDSA и двойного режима EC/RSA.
bpo-32549: На Travis CI Python теперь компилирует и использует локальную копию OpenSSL 1.1.0g для тестирования.
Построить¶
bpo-32635: Исправление segfault модуля crypt, когда в системе вместо libcrypt предоставляется libxcrypt.
bpo-32598: Используйте autoconf для обнаружения libs, заголовков и поддерживаемых функций OpenSSL. Макрос ax_check_openssl M4 использует pkg-config для поиска OpenSSL и возвращается к ручному поиску.
bpo-32593: Отказ от поддержки FreeBSD 9 и старше.
bpo-29708: Разрешить параметры с именами
SOURCE_DATE_EPOCH
иpy_compile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Windows¶
bpo-32588: Создайте отдельный модуль _distutils_findvs и добавьте недостающий модуль _queue в установщик.
bpo-29911: Убедитесь, что отображаются отдельные кнопки «Изменить» и «Удалить».
bpo-32507: Для старых версий Windows используйте установку UCRT из локального приложения вместо правильного обновления.
macOS¶
bpo-32726: Предоставлен дополнительный, более современный вариант установщика для macOS, поддерживающий системы macOS 10.9+ только в 64-битном режиме. Обновление поставляемых сторонних библиотек до OpenSSL 1.1.0g и до SQLite 3.22.0. Программа установки для 10.9+ теперь связывает и поставляет собственную копию Tcl/Tk 8.6.
bpo-28440: Больше не добавляйте /Library/Python/3.x/site-packages в sys.path для сборок фреймворка macOS, чтобы избежать конфликтов в будущем.
C API¶
Python 3.7.0 alpha 4¶
Дата выхода: 2018-01-08
Ядро и встроенные модули¶
bpo-31975: Список фильтров предупреждений по умолчанию теперь начинается с записи «default::DeprecationWarning:__main__», так что предупреждения об обесценивании снова показываются по умолчанию в однофайловых скриптах и в интерактивном приглашении.
bpo-32226:
__class_getitem__
теперь является автоматическим методом класса.bpo-32399: Добавьте поддержку библиотеки AIX uuid для RFC4122 с помощью uuid_create() в libc.a
bpo-32390: Исправление сбоя компиляции на AIX после добавления поля f_fsid в объект, возвращаемый os.statvfs() (bpo-32143). Оригинальное исправление Майкла Фелта.
bpo-32379: Ускоряет вычисление MRO, когда класс наследуется от одной базы.
bpo-32259: Сообщение об ошибке TypeError, возникающей при распаковке non-iterable, теперь более конкретное.
bpo-27169: Разрешить параметры с именами
__debug__
и bpo-22091 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32329: Разрешить параметры с именами
-R
иPYTHONHASHSEED
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30416: Оптимизатор теперь защищен от необходимости тратить много времени на сложные вычисления и потреблять много памяти для создания больших констант при складывании констант. Увеличены ограничения на константы, которые могут быть получены при складывании констант.
bpo-32282: Исправьте ненужный ifdef в include файла VersionHelpers.h в socketmodule под Windows.
bpo-30579: Реализуйте TracebackType.__new__, чтобы разрешить создание объектов трассировки на уровне Python, и сделайте TracebackType.tb_next мутабельным.
bpo-32260: Не меняйте местами байты входных ключей алгоритма SipHash на big-endian платформах. Это должно гарантировать, что siphash будет давать согласованные результаты на разных платформах.
bpo-31506: Улучшена логика сообщений об ошибках для object.__new__ и object.__init__. Исправление от Sanyam Khurana.
bpo-20361: Разрешить параметры с именами
-b
и-bb
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32230: Разрешить параметры с именами
-X dev
и'default'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32226: Разрешить параметры с именами PEP 560 и
__mro_entries__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32225: Разрешить параметры с именами PEP 562 и
__getattr__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31901: Модуль
atexit
теперь хранит свой обратный вызов для каждого интерпретатора.bpo-31650: Реализуйте PEP 552 (детерминированный pycs). Python теперь поддерживает аннулирование файлов кэша байткода на основе хэша содержимого источника, а не времени последнего изменения источника.
bpo-29469: Перемещение складывания констант из слоя байткода в слой AST. Оригинальный патч Евгения Тодера.
Библиотека¶
bpo-32506: Теперь, когда dict определено как сохраняющее порядок вставки, отбросьте OrderedDict и используйте просто dict.
bpo-32279: Добавьте параметры в dataclasses.make_dataclasses(): init, repr, eq, order, hash и frozen. Передайте их в dataclass().
bpo-32278: Сделать информацию о типе необязательной в dataclasses.make_dataclass(). Если эта опция опущена, используется строка „typing.Any“.
bpo-32499: Добавьте dataclasses.is_dataclass(obj), который возвращает True, если obj является классом данных или его экземпляром.
bpo-32468: Улучшите фрейм repr(), чтобы он указывал имя файла, имя кода и номер текущей строки.
bpo-23749: asyncio: Реализуйте loop.start_tls()
bpo-32441: Разрешить параметры с именами
os.dup2
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32422:
functools.lru_cache
использует меньше памяти (3 слова для каждого кэшированного ключа) и занимает около 1/3 времени при циклическом GC.bpo-31721: Предотвращение падения Python, когда Future._log_traceback установлен в True вручную. Теперь его можно установить только в False, иначе будет вызвана ошибка ValueError.
bpo-32415: asyncio: Добавьте Task.get_loop() и Future.get_loop()
bpo-26133: Не отписывать сигналы в цикле событий asyncio UNIX при выключении интерпретатора.
bpo-32363: Сделайте так, чтобы asyncio.Task.set_exception() и set_result() вызывали NotImplementedError. Task._step() и Future.__await__() вызывают правильные исключения, когда они находятся в недопустимом состоянии, вместо того, чтобы вызывать AssertionError.
bpo-32357: Оптимизация asyncio.iscoroutine() и loop.create_task() для неродных корутинов (например, async/await, скомпилированных в Cython). Раньше „loop.create_task(python_coroutine)“ был на 20 % быстрее, чем „loop.create_task(cython_coroutine)“. Теперь последний работает так же быстро.
bpo-32356: asyncio.transport.resume_reading() и pause_reading() теперь идемпотентны. Добавлен новый метод transport.is_reading().
bpo-32355: Оптимизация asyncio.gather(); теперь на 15 % быстрее.
bpo-32351: Используйте fastpath в asyncio.sleep, если delay<0 (2x boost)
bpo-32348: Оптимизация обратного вызова расписания/добавления/удаления asyncio.Future. Оптимизация позволяет повысить производительность кода async/await на 3-6%.
bpo-32331: Исправьте socket.settimeout() и socket.setblocking(), чтобы socket.type оставался прежним. Исправьте конструктор socket.socket(), чтобы сбросить все битовые флаги, применяемые к типу сокета. Это изменение затрагивает только те ОС, в которых есть SOCK_NONBLOCK и/или SOCK_CLOEXEC.
bpo-32248: Разрешить параметры с именами
importlib.abc.ResourceReader
иimportlib.resources
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32311: Реализуйте ярлык asyncio.create_task(coro)
bpo-32327: Преобразование функций asyncio, которые были задокументированы как корутины, в корутины. Затронутые функции: loop.sock_sendall, loop.sock_recv, loop.sock_accept, loop.getaddrinfo, loop.getnameinfo.
bpo-32323:
urllib.parse.urlsplit()
теперь не преобразует идентификатор зоны (scope) в нижний регистр для скопированных IPv6-адресов в именах хостов.bpo-32302: Исправьте bdist_wininst в distutils для CRT v142: он бинарно совместим с CRT v140.
bpo-29711: Исправьте
stop_serving
в цикле asyncio proactor kill all listening serversbpo-32308:
re.sub()
теперь заменяет пустые совпадения, примыкающие к предыдущему непустому совпадению.bpo-29970: Прервать соединение asyncio SSLProtocol, если рукопожатие не завершено в течение 10 секунд.
bpo-32314: Реализуйте asyncio.run().
bpo-17852: Отмена некорректного исправления, основанного на непонимании семантики _Py_PyAtExit().
bpo-32296: Реализуйте asyncio._get_running_loop() и get_event_loop() на C. Это делает их в 4 раза быстрее.
bpo-32250: Разрешить параметры с именами
asyncio.current_task()
иasyncio.all_tasks()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32255: Одиночное пустое поле теперь всегда берется в кавычки при записи в CSV-файл. Это позволяет отличить пустую строку от строки, состоящей из одного пустого поля. Исправление Лихта Такеучи.
bpo-32277: Разрешить параметры с именами
NotImplementedError
иSystemError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30050: Новый аргумент warn_on_full_buffer в signal.set_wakeup_fd позволяет вам контролировать, печатает ли Python предупреждение на stderr, когда буфер wakeup fd переполняется.
bpo-29137: Библиотека
fpectl
была удалена. Она никогда не была включена по умолчанию, никогда не работала корректно на x86-64 и изменяла ABI Python таким образом, что приводила к неожиданным поломкам расширений на C.bpo-32273: Переместите asyncio.test_utils в test.test_asyncio.
bpo-32272: Удалите функцию asyncio.async().
bpo-32269: Добавьте функцию asyncio.get_running_loop().
bpo-32265: Все классовые и статические методы встроенных типов теперь корректно классифицируются inspect.classify_class_attrs() и группируются в выводе pydoc. Добавлен types.ClassMethodDescriptorType для несвязанных методов классов встроенных типов.
bpo-32253: Разрешить параметры с именами
yield from lock
иawait lock
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22589: Изменен MIME-тип .bmp с „image/x-ms-bmp“ на „image/bmp“
bpo-32193: Преобразование asyncio для использования синтаксиса async/await. Старый стиль
yield from
все еще поддерживается.bpo-32206: Добавьте поддержку запуска модулей с pdb
bpo-32227:
functools.singledispatch
теперь поддерживает регистрацию реализаций с помощью аннотаций типов.bpo-15873: Разрешить параметры с именами
datetime.datetime.fromisoformat()
иdatetime.time.fromisoformat()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32199: В геттере ip getnode() теперь используется „ip link“ вместо „ip link list“.
bpo-32143: os.statvfs() включает поле f_fsid из statvfs(2)
bpo-26439: Исправьте ctypes.util.find_library() для AIX, реализовав ctypes._aix.find_library() Исправление от: Майкл Фелт
bpo-31993: Теперь пиклер использует меньше памяти при сериализации больших байтов и объектов str в файл. Пиклеры, созданные по протоколу 4, будут требовать меньше памяти для распаковки больших байтов и str-объектов.
bpo-27456: Убедитесь, что TCP_NODELAY установлен в Linux. Проверено Виктором Стиннером.
bpo-31778: ast.literal_eval() теперь более строгий. Сложение и вычитание произвольных чисел больше не допускается.
bpo-31802: Разрешить параметры с именами
posixpath
иntpath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30241: Добавьте contextlib.AbstractAsyncContextManager. Исправление от Jelle Zijlstra.
bpo-31699: Разрешить параметры с именами
concurrent.futures.ProcessPoolExecutor
иProcessPoolExecutor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-15216:
TextIOWrapper.reconfigure()
поддерживает изменение кодировки, ошибки и новой строки.
Документация¶
bpo-32418: Добавьте метод get_loop() в классы Server и AbstractServer.
Тесты¶
bpo-32252: Исправлена функция faulthandler_suppress_crash_report(), используемая для предотвращения создания дампов ядра при тестировании аварий. getrlimit() возвращает ноль в случае успеха.
bpo-32002: Настройте тестирование принуждения локали C для случаев пустой локали и локали POSIX, чтобы легче адаптироваться к поведению, зависящему от платформы.
Windows¶
bpo-19764: Реализуйте поддержку
subprocess.Popen(close_fds=True)
в Windows. Исправление от Segev Finer.
Инструменты/демоверсии¶
bpo-24960: 2to3 и lib2to3 теперь могут читать файлы с пикированными грамматиками, используя pkgutil.get_data(), а не прощупывая файловую систему. Это позволяет 2to3 и lib2to3 работать при запуске из zip-файла.
C API¶
bpo-32030: Py_Initialize() не сбрасывает аллокаторы памяти на значения по умолчанию, если переменная окружения
PYTHONMALLOC
не установлена.bpo-29084: Недокументированный C API для OrderedDict был исключен из ограниченного C API. Он был добавлен по ошибке и фактически никогда не работал в ограниченном C API.
bpo-32264: Переместили заголовок pygetopt.h в internal/, так как у него нет публичных API.
bpo-32241: Разрешить параметры с именами
Py_SetProgramName()
иPy_SetPythonHome()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.7.0 alpha 3¶
Дата выхода: 2017-12-05
Ядро и встроенные модули¶
bpo-32176: co_flags.CO_NOFREE теперь всегда корректно устанавливается конструктором объекта кода на основе freevars и cellvars, а не требует корректной установки вызывающей стороной. Это гарантирует, что он будет автоматически очищен, когда в модифицированный объект кода и функцию будут внедрены дополнительные ссылки на ячейки.
bpo-10544: Выражения Yield теперь не используются в осмыслениях и генераторных выражениях. Они по-прежнему разрешены в определении крайнего итерируемого, поскольку он оценивается непосредственно в объемлющей области видимости.
bpo-32137: При выполнении repr глубоко вложенных dict теперь возникает ошибка RecursionError, а не аварийное завершение работы из-за переполнения стека.
bpo-32096: Верните изменения аллокаторов памяти в C API: переместите структуры обратно из _PyRuntime в Objects/obmalloc.c. Аллокаторы памяти снова инициализируются статически, и поэтому PyMem_RawMalloc() и Py_DecodeLocale() могут быть вызваны до _PyRuntime_Initialize().
bpo-32043: Добавьте новый «режим разработчика»: новый параметр командной строки «-X dev» для включения отладочных проверок во время выполнения.
bpo-32023: SyntaxError теперь корректно выдается, если вместо списка наследования в определении класса используется выражение генератора без скобок. Дублирование круглых скобок может быть опущено только при вызовах.
bpo-32012: SyntaxError теперь корректно выдается, когда в качестве аргумента передается выражение генератора без круглых скобок, но за ним следует запятая в конце. Выражение-генератор всегда должно находиться непосредственно внутри набора круглых скобок и не может иметь запятой ни с одной стороны.
bpo-28180: Разрешить параметры с именами
_Py_SetLocaleFromEnv(category)
иlibc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31949: Исправлено несколько проблем с печатью трассировок (PyTraceBack_Print()). Установка sys.tracebacklimit в 0 или меньше теперь подавляет печать трассировок. Установка sys.tracebacklimit в None теперь приводит к использованию лимита по умолчанию. Установка sys.tracebacklimit в целое число, большее LONG_MAX, теперь означает использование ограничения LONG_MAX, а не ограничения по умолчанию. Исправлено целочисленное переполнение в случае более чем
2**31
элементов трассировки на Windows. Исправлена обработка ошибок вывода.bpo-30696: Исправление бесконечного зацикливания интерактивного интерпретатора при отсутствии памяти.
bpo-20047: Методы Bytearray partition() и rpartition() теперь принимают в качестве разделителя только байтоподобные объекты, как это и задокументировано. В частности, они теперь выдают ошибку TypeError, а не возвращают ложный результат, если в качестве разделителя передано целое число.
bpo-21720: Разрешить параметры с именами
__import__()
и__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31845: Переменные окружения снова корректно считываются при запуске интерпретатора.
bpo-28936: Разрешить параметры с именами
global
иnonlocal
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31825: Исправлена ошибка переполнения в кодеке „unicode-escape“ и в codecs.escape_decode() при декодировании экранированного неасквидного байта.
bpo-31618: Разрешить параметры с именами
frame->f_lineno
и"line"
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28603: Выводить полную цепочку контекста/причины исключений при выходе из интерпретатора, даже если исключение в цепочке является нехешируемым или сравнивается с более поздними. Исправление Зейна Биттера.
bpo-31786: Исправлено округление таймаута в модуле select для корректного округления отрицательных таймаутов между -1.0 и 0.0. Теперь функции блокируют ожидание событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Исправление от Пабло Галиндо.
bpo-31781: Предотвращение сбоев при вызове методов неинициализированного объекта
zipimport.zipimporter
. Исправление от Орена Милмана.bpo-30399: Стандартный repr() BaseException с единственным аргументом больше не содержит лишней запятой в конце.
bpo-31626: Исправлена ошибка в отладочном аллокаторе памяти. После уменьшения блока памяти происходила запись в освобожденную память.
bpo-30817: Разрешить параметры с именами
PyErr_PrintEx()
и_PySys_SetObjectId()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-28556: Разрешить параметры с именами
typing
и__init_subclass__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32214: PEP 557, Классы данных. Предоставляет декоратор, который добавляет шаблонные методы в классы, использующие аннотации типов для указания полей.
bpo-27240: Разрешить параметры с именами bpo-30788 и bpo-31831 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-32186: io.FileIO.readall() и io.FileIO.read() теперь освобождают GIL при получении размера файла. Исправлено зависание всех потоков при недоступном NFS-сервере. Исправление Нира Соффера.
bpo-32101: Добавить флаг
sys.flags.dev_mode
bpo-32154: Разрешить параметры с именами
asyncio.windows_utils.socketpair()
иsocket.socketpair()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32089: предупреждения: В режиме разработки (-X dev) и отладки (pydebug build) используйте действие «по умолчанию» для ResourceWarning, а не действие «всегда» в фильтрах предупреждений по умолчанию.
bpo-32107: Разрешить параметры с именами
uuid.getnode()
иuuid.uuid1()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23033: Wildcard теперь поддерживается в имени хоста, когда он является одним и единственным символом в крайнем левом сегменте имени хоста во втором аргументе
ssl.match_hostname()
. Исправление от Mandeep Singh.bpo-12239: Разрешить параметры с именами
msilib.SummaryInformation.GetProperty()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28334: Разрешить параметры с именами
os.path.expanduser()
и~/.netrc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32121: Разрешить параметры с именами
tracemalloc.Traceback
иTraceback.format()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31325: Разрешить параметры с именами
collections.namedtuple()
иRobotFileParser.parse()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-12382:
msilib.OpenDatabase()
теперь выдает лучшее сообщение об исключении, если не удалось открыть или создать файл MSI. Первоначальный патч от Уильяма Тизера.bpo-19610: Разрешить параметры с именами
setup()
иdistutils.dist.Distribution
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32071: Разрешить параметры с именами
-k
иpython -m unittest
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-10049: В контекстную библиотеку добавлен неопциональный менеджер контекста nullcontext. Это обеспечивает более простую и быструю альтернативу ExitStack() при работе с необязательными менеджерами контекста.
bpo-28684: Новый декоратор test.support.skip_unless_bind_unix_socket() используется здесь для пропуска тестов asyncio, которые терпят неудачу из-за отсутствия в платформе функциональной функции bind() для сокетов домена unix (как это происходит с не root-пользователями в последних версиях Android, которые теперь работают с SELinux в режиме принудительного исполнения).
bpo-32110: Разрешить параметры с именами
codecs.StreamReader.read(n)
иread()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27535: Модуль warnings больше не сливает память в реестр скрытых предупреждений для действия «игнорировать» фильтров warnings. Функция warn_explicit() больше не добавляет ключ предупреждения в реестр для действия «игнорировать».
bpo-32088: Разрешить параметры с именами
Py_DEBUG
иDeprecationWarning
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-1647489: Исправлен поиск шаблонов регулярных выражений, которые могли соответствовать пустой строке. Теперь непустая строка может быть корректно найдена после сопоставления с пустой строкой.
bpo-25054: Добавлена поддержка разбиения на шаблоны, которые могут соответствовать пустой строке.
bpo-32072: Исправлены проблемы с бинарными списками: Исправлено сохранение байтовых массивов. Идентичные объекты будут сохраняться только один раз. Равные ссылки будут загружаться как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.
bpo-32069: Отбросьте устаревший SSL-транспорт из asyncio, ssl.MemoryBIO всегда используется в любом случае.
bpo-32066: asyncio: Поддержка pathlib.Path в create_unix_connection; аргумент sock должен быть необязательным
bpo-32046: Обновление 2to3 для преобразования operator.isCallable(obj) в callable(obj). Исправление от Donghee Na.
bpo-32018: inspect.signature должен следовать за PEP 8, если параметр имеет аннотацию и значение по умолчанию. Исправление от Donghee Na.
bpo-32025: Добавьте time.thread_time() и time.thread_time_ns()
bpo-32037: Целые числа, которые помещаются в знаковое 32-битное целое число, теперь будут травиться по протоколу 0 с использованием опкода INT. Это уменьшит размер pickle, ускорит процесс pickling и unpickling и сделает эти целые числа распаковываемыми как экземпляры int в Python 2.
bpo-32034: Сделайте asyncio.IncompleteReadError и LimitOverrunError pickleable.
bpo-32015: Исправлено зацикливание asyncio в случае переподключения сокета во время ожидания асинхронного чтения/записи из/в сокет.
bpo-32011: Восстановлена поддержка загрузки маршаловых файлов с кодом TYPE_INT64. Эти файлы могут быть созданы в Python 2.7.
bpo-28369: Улучшена проверка add_reader/writer на то, что сокет не используется каким-либо транспортом. Раньше поддерживались только случаи, когда add_reader/writer вызывался с int FD. Теперь проверка реализована корректно для всех файлоподобных объектов.
bpo-31976: Исправление состояния гонки при медленной промывке файла, что может привести к segfault при закрытии файла из другого потока.
bpo-31985: Формально устарели aifc.openfp, sunau.openfp и wave.openfp. С момента изменения 7bc817d5ba917528e8bd07ec461c635291e7b06a в 1993 году openfp в каждом из этих трех модулей указывал на функцию open этого модуля в качестве обратной совместимости, хотя это было непроверено и недокументировано.
bpo-21862: командная строка cProfile теперь принимает
-m module_name
в качестве альтернативы пути к скрипту. Исправление от Sanyam Khurana.bpo-31970: Снижение накладных расходов на производительность режима отладки asyncio.
bpo-31843: Аргумент база данных в sqlite3.connect() теперь принимает path-like object, а не просто строку.
bpo-31945: Разрешить параметры с именами
HTTPConnection
иHTTPSConnection
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31943: Разрешить параметры с именами
cancelled()
иasyncio.Handle
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-9678: Исправлено определение MAC-адреса в модуле uuid: Использование ifconfig в NetBSD и OpenBSD. Использование arp в Linux, FreeBSD, NetBSD и OpenBSD. Основано на исправлении Такаюки Шимизукавы.
bpo-30057: Исправьте потенциальный пропущенный сигнал в signal.signal().
bpo-31933: Исправление параметров Blake2 leaf_size и node_offset на платформах с большим эндианом. Исправление от Джека О’Коннора.
bpo-21423: Добавьте аргумент инициализатора к {Process,Thread}PoolExecutor
bpo-31927: Исправлена компиляция модуля сокетов на NetBSD 8. Исправлен сбой утверждения или чтение произвольных данных при разборе адреса AF_BLUETOOTH на NetBSD и DragonFly BSD.
bpo-27666: Исправлено повреждение стека в curses.box() и curses.ungetmouse(), когда размер типов chtype или mmask_t меньше размера C long. curses.box() теперь принимает символы в качестве аргументов. Основано на исправлении Стива Финка.
bpo-31917: Разрешить параметры с именами
time.CLOCK_BOOTTIME
иtime.CLOCK_PROF
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31897: plistlib теперь отлавливает больше ошибок при чтении бинарных списков и поднимает InvalidFileException вместо неожиданных исключений.
bpo-25720: Исправление метода проверки состояния прокладки curses WINDOW. Исправление от Масаюки Ямамото.
bpo-31893: Исправлено расположение структуры kqueue_event на OpenBSD и NetBSD. Исправлено сравнение объектов kqueue_event.
bpo-31891: Исправлена сборка модуля curses на NetBSD.
bpo-31884: добавлены необходимые константы в модуль подпроцесса для установки приоритета в окнах
bpo-28281: Уберите ограничения на год (1-9999) для функции Calendar.weekday(). Исправление от Марка Голлахона.
bpo-31702: crypt.mksalt() теперь позволяет указать количество раундов для хеширования SHA-256 и SHA-512.
bpo-30639:
inspect.getfile()
больше не вычисляет repr неизвестных объектов для отображения в сообщении об ошибке, чтобы защититься от плохого поведения пользовательских repr.bpo-30768: Исправление реализации pthread+semaphore функции PyThread_acquire_lock_timed() при вызове с timeout > 0 и intr_flag=0: перерасчет таймаута, если sem_timedwait() прерывается сигналом (EINTR). См. также PEP 475.
bpo-31854: Добавить константу
mmap.ACCESS_DEFAULT
.bpo-31834: Используйте оптимизированный код для BLAKE2 только с SSSE3+. Чистая реализация SSE2 медленнее, чем чистая эталонная реализация C.
bpo-28292: Calendar.itermonthdates() теперь будет последовательно вызывать исключение, если дата выходит за пределы диапазона от 0001-01-01 до 9999-12-31. Для поддержки приложений, не терпящих таких исключений, добавлены новые методы itermonthdays3() и itermonthdays4(). Новые методы возвращают кортежи и не ограничены диапазоном, поддерживаемым datetime.date.
bpo-28564: Работа функции shutil.rmtree() была ускорена на 20-40 %. Это было сделано с помощью функции os.scandir().
bpo-28416: Экземпляры подкласса pickle.Pickler с методом persistent_id() и подкласса pickle.Unpickler с методом persistent_load() больше не создают циклов ссылок.
bpo-31653: Не освобождайте GIL, если мы можем немедленно получить многопроцессорный семафор.
bpo-28326: Исправьте multiprocessing.Process, когда stdout и/или stderr закрыты или None.
bpo-20825: Разрешить параметры с именами
subnet_of
иsuperset_of
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31827: Удалите функцию os.stat_float_times(). Она была введена в Python 2.3 для обратной совместимости с Python 2.2 и была устаревшей с Python 3.1.
bpo-31756: Разрешить параметры с именами
subprocess.Popen(text=False)
иsubprocess
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31819: Добавьте AbstractEventLoop.sock_recv_into().
bpo-31457: Если используются вложенные адаптеры журналов, внутренние методы
process()
больше не опускаются.bpo-31457: Свойство
manager
в объектах LoggerAdapter теперь правильно задается.bpo-31806: Исправлено округление таймаута в time.sleep(), threading.Lock.acquire() и socket.socket.settimeout() для корректного округления отрицательных таймаутов от -1.0 до 0.0. Теперь функции блокируют ожидание событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Автор исправления - Пабло Галиндо.
bpo-31803: time.clock() и time.get_clock_info(„clock“) теперь выдают предупреждение DeprecationWarning.
bpo-31800: Расширена поддержка разбора смещений UTC. strptime „%z“ теперь может разбирать вывод, сгенерированный datetime.isoformat, включая секунды и микросекунды.
bpo-28603: traceback: Исправление ошибки TypeError, возникавшей при печати трассировки исключений, когда либо текущее исключение, либо исключение в его контексте/цепочке причин было нехешируемым. Исправление Зейна Биттера.
bpo-30541: Добавьте новую функцию для запечатывания макета и предотвращения автоматического создания дочерних макетов. Исправление от Марио Корчеро.
bpo-31784: Разрешить параметры с именами PEP 564 и
time
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30143: 2to3 теперь генерирует код, использующий абстрактные классы коллекций из collections.abc, а не collections.
bpo-31770: Разрешить параметры с именами
__init__()
иsqlite3.Cursor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31764: Разрешить параметры с именами
sqlite3.Cursor.close()
иCursor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31752: Исправление возможного сбоя в конструкторе timedelta, вызываемом с пользовательскими целыми числами.
bpo-31620: пустая очередь asyncio.Queue теперь не сливает память при таймауте queue.get pollers
bpo-31690: Разрешает использовать флаги re.ASCII, re.LOCALE и re.UNICODE в качестве групповых флагов для регулярных выражений.
bpo-30349: FutureWarning теперь выдается, если регулярное выражение содержит конструкции набора символов, которые семантически изменятся в будущем (вложенные множества и операции с множествами).
bpo-31664: Добавлена поддержка хэширования Blowfish в модуле crypt.
bpo-31632: Исправьте метод set_protocol() класса _SSLProtocolTransport в модуле asyncio. Ранее этот метод изменял неверную ссылку на протокол.
bpo-15037: Добавлено обходное решение для getkey() в curses для ncurses 5.7 и более ранних версий.
bpo-31307: Разрешить использование байтовых объектов в качестве аргументов для
configparser.ConfigParser.read()
. Исправление от Винсента Мишеля.bpo-31334: Разрешить параметры с именами
poll.poll([timeout])
иselect
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31310: семафорный трекер мультипроцессора должен быть запущен снова в случае сбоя.
bpo-31308: Сделайте многопроцессорный процесс forkserver невосприимчивым к Ctrl-C и другим прерываниям пользователя. Если он падает, перезапустите его при необходимости.
bpo-31245: Добавлена поддержка сокета AF_UNIX в asyncio
create_datagram_endpoint
.bpo-30553: Добавьте код состояния HTTP/2 421 (ошибочный запрос) в
http.HTTPStatus
. Исправление Витора Перейры.
Документация¶
bpo-32105: Добавлен маркер asyncio.BaseEventLoop.connect_accepted_socket versionadded.
Тесты¶
bpo-31380: Пропустить test_httpservers test_undecodable_file на macOS: не удается на APFS.
bpo-31705: Пропустите test_socket.test_sha256() на ядре Linux старше 4.5. Тест не проходит с ENOKEY на ядре 3.10 (на ppc64le). Исправление было добавлено в ядро 4.5.
bpo-32138: Пропускайте тесты test_faulthandler для Android, которые поднимают SIGSEGV, и удалите декоратор test.support.requires_android_level.
bpo-32136: Разрешить параметры с именами
Lib/test/test_capi.py
иLib/test/test_embed.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28668: test.support.requires_multiprocessing_queue удален. Пропускайте тесты с test.support.import_module(„multiprocessing.synchronize“) вместо этого, если реализация семафора сломана или отсутствует.
bpo-32126: Пропустите test_get_event_loop_new_process в test.test_asyncio.test_events, когда sem_open() не работает.
bpo-31174: Исправьте test_tools.test_unparse: DirectoryTestCase теперь сохраняет выборку имен, чтобы всегда проверять одни и те же файлы. Это предотвращает ложные срабатывания при поиске утечек ссылок.
Построить¶
bpo-28538: Верните предыдущие изменения, структура if_nameindex определена в Unified Headers.
bpo-28762: Отмена последней фиксации, макрос F_LOCK определен в Android Unified Headers.
bpo-29040: Поддержка сборки Android с унифицированными заголовками. Первым выпуском NDK с поддержкой Unified Headers стал android-ndk-r14.
bpo-32059: Разрешить параметры с именами
detect_modules()
иsetup.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31957: Исправлено определение версии Windows SDK при сборке под Windows.
bpo-31609: Исправляет кавычки в файле PCbuild/clean.bat
bpo-31934: Прерывает сборку при сборке из нечистого дерева исходных текстов.
bpo-31926: Исправлена ошибка Argument Clinic, иногда вызывавшая ошибки компиляции, когда в .c-файле было более одной функции и/или метода с одинаковым именем.
bpo-28791: Обновите сборки Windows для использования SQLite 3.21.0.
bpo-28791: Обновите программу установки OS X для использования SQLite 3.21.0.
bpo-28643: Запись хода сборки profile-opt с файлами штампов.
bpo-31866: Завершите удаление поддержки AtheOS.
Windows¶
bpo-1102: Разрешить параметры с именами
None
иView.Fetch()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31944: Исправлена кнопка «Изменить» в диалоге «Приложения и функции».
bpo-20486: Реализуйте метод
Database.Close()
для помощи в закрытии объектов базы данных MSI.bpo-31857: Сделать поведение USE_STACKCHECK детерминированным в многопоточной среде.
macOS¶
bpo-31392: Обновление программы установки macOS для использования OpenSSL 1.0.2m
IDLE¶
bpo-32207: Улучшение трассировки исключений событий tk в IDLE. Когда обработка событий tk управляется циклом выполнения IDLE, контекст queue.EMPTY больше не добавляется к трассировкам исключений tk. Возврат к трассировке теперь такой же, как и при обработке событий пользовательским кодом. Исправление основано на предложении Сергея Сторчака.
bpo-32164: Удалите неиспользуемый файл idlelib/tabbedpages.py. Использование TabbedPageSet в configdialog было заменено на ttk.Notebook.
bpo-32100: IDLE: Исправление старых и новых ошибок в pathbrowser; улучшение тестов. Патч в основном разработан Шерил Сабелла.
bpo-31858: IDLE – Ограничивает манипуляции с приглашениями оболочки только оболочкой. Окна редактора и вывода видят только пустую последнюю строку подсказки. Это упрощает код и исправляет небольшую ошибку при вставке новой строки. Sys.ps1, если он присутствует, считывается при запуске оболочки, но не устанавливается и не изменяется.
bpo-31860: Образец шрифта в диалоге конфигурации IDLE теперь можно редактировать. Изменения сохраняются, пока IDLE остается открытым
bpo-31836: Test_code_module теперь проходит, если запущен после test_idle, который устанавливает ps1. Модуль кода использует sys.ps1, если он есть, или устанавливает его в „>>> „, если его нет. Test_code_module теперь правильно проверяет оба поведения. То же самое касается ps2.
bpo-28603: Исправление ошибки TypeError, которая приводила к перезапуску оболочки при печати трассировки, включающей исключение, которое невозможно хэшировать. Исправление от Зейна Биттера.
bpo-13802: Использовать нелатинские символы в примере настроек шрифта IDLE. Даже если выбрать шрифт, определяющий ограниченное подмножество юникода Базовой многоязычной плоскости, tcl/tk будет использовать другие шрифты, определяющие символ. Расширенный пример дает пользователям нелатинских символов лучшее представление о том, что они могут увидеть в оболочке и редакторах IDLE. Чтобы освободить место для расширенного примера, фреймы на вкладке «Шрифт» переставляются. В справке «Шрифт/вкладки» немного рассказано об этих дополнениях.
Инструменты/демоверсии¶
bpo-32159: Удалите инструменты CVS и Subversion: удалите скрипты svneol.py и treesync.py. CPython мигрировал с CVS на Subversion, на Mercurial, а затем на Git. CVS и Subversion больше не используются для разработки CPython.
bpo-30722: Заставьте redemo работать с Python 3.6 и более новыми версиями. Также удалите опцию
LOCALE
, так как она не работает со строковыми шаблонами в Python 3. Исправление Кристофа Сарновски.
C API¶
bpo-20891: Исправьте PyGILState_Ensure(). Если PyGILState_Ensure() вызывается в не-Python потоке до PyEval_InitThreads(), вызывайте PyEval_InitThreads() только после вызова PyThreadState_New(), чтобы исправить падение.
bpo-32125: Флаг
Py_UseClassExceptionsFlag
был удален. Он был устаревшим и больше не использовался, начиная с Python 2.0.bpo-25612: Перемещает текущее состояние исключения из объекта фрейма в ко-программу. Это упрощает интерпретатор и исправляет пару непонятных ошибок, вызванных подменой состояния исключения при входе и выходе из генератора.
bpo-23699: Добавьте макрос Py_RETURN_RICHCOMPARE, чтобы уменьшить количество кодового кода в функциях сравнения.
bpo-30697: Разрешить параметры с именами
PyExc_RecursionErrorInst
иPyErr_NormalizeException()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.7.0 alpha 2¶
Дата выхода: 2017-10-16
Ядро и встроенные модули¶
bpo-31558:
gc.freeze()
- это новый API, который позволяет переместить все объекты, отслеживаемые сборщиком мусора, в постоянное поколение, фактически удалив их из будущих событий сбора. Это может быть использовано для защиты этих объектов от мутирования их PyGC_Head. По сути, это обеспечивает большую стабильность копирования при записи в fork().bpo-31642: Восстановили блокировку «from package import module», установив для sys.modules[«package.module»] значение None.
bpo-31708: Разрешить использование выражений асинхронных генераторов в синхронных функциях.
bpo-31709: Отказ от поддержки асинхронного __aiter__.
bpo-30404: Опция -u теперь делает потоки stdout и stderr небуферизованными, а не линейно-буферизованными.
bpo-31619: Исправлена ошибка ValueError при преобразовании строки с большим количеством символов подчеркивания в целое число с двоичной основой.
bpo-31602: Разрешить параметры с именами
zipimporter.get_source()
иzlib.decompress()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31592: Исправлен сбой утверждения в парсере Python в случае плохого
unicodedata.normalize()
. Исправление от Орена Милмана.bpo-31588: Разрешить параметры с именами
TypeError
и__prepare__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31574: Importlib был оснащен двумя датчиками dtrace для профилирования времени импорта.
bpo-31566: Разрешить параметры с именами
_warnings.warn()
и__name__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31506: Разрешить параметры с именами
object.__new__
иobject.__init__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31505: Разрешить параметры с именами
json
и_json.make_encoder()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31492: Исправление ошибок утверждения в случае невозможности импорта из модуля с плохим атрибутом
__name__
, а также в случае невозможности доступа к атрибуту такого модуля. Исправление от Орена Милмана.bpo-31478: Разрешить параметры с именами
_random.Random.seed()
и__abs__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31336: Ускорение создания классов на 10-20% за счет снижения накладных расходов на необходимые специальные поиски методов. Исправление Стефана Бехнеля.
bpo-31415: Разрешить параметры с именами
-X importtime
иPYTHONPROFILEIMPORTTIME
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31410: Оптимизирована обертка вызова и дескрипторы методов класса.
bpo-31353: Разрешить параметры с именами PEP 553 и
breakpoint()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-17852: Ведение списка открытых буферизованных файлов, их промывка перед выходом из интерпретатора. Основано на патче от Армина Риго.
bpo-31315: Исправление ошибки утверждения в imp.create_dynamic(), когда spec.name не является строкой. Исправление от Орена Милмана.
bpo-31311: Разрешить параметры с именами
__setstate__()
иctypes._CData
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31293: Исправление сбоев при истинном делении и умножении объекта timedelta на float с плохим методом as_integer_ratio(). Исправление от Орена Милмана.
bpo-31285: Разрешить параметры с именами
warnings.warn_explicit
иget_source()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30406: Разрешить параметры с именами
async
иawait
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-30058: Исправлено переполнение буфера в select.kqueue.control().
bpo-31672: Разрешить параметры с именами
idpattern
иstring.Template
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31701: В Windows функция faulthandler.enable() теперь игнорирует исключения MSC и COM.
bpo-31728: Разрешить параметры с именами
_elementtree
иElement.text
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31671: Теперь
re.compile()
преобразует переданный RegexFlag в обычный объект int перед компиляцией. Бенчмарк bm_regex_compile показывает 14 % прироста производительности.bpo-30397: Разрешить параметры с именами
re.Pattern
иre.Match
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31675: Исправлена утечка памяти в методах Tkinter splitlist() и split() при передаче строки размером более 2 ГБ.
bpo-31673: Исправлена опечатка в названии метода Tkinter adderrorinfo().
bpo-31648: Улучшения в предикатах пути в ElementTree: Разрешить пробелы вокруг частей предиката, т. е. «[a = „text“]» вместо того, чтобы требовать менее читабельного «[a=„text“]». Добавить поддержку текстового сравнения текущего узла, например «[.=„text“]». Исправление Стефана Бехнеля.
bpo-30806: Исправьте строковое представление объекта netrc.
bpo-31638: Разрешить параметры с именами
compressed
иzipapp.create_archive
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25351: Избегайте сбоев при активации venv с неопределенными переменными
bpo-20519: Избегайте использования ctypes (если это возможно) и улучшайте время импорта для uuid.
bpo-28293: Кэш регулярных выражений больше не очищается полностью, когда он переполнен.
bpo-31596: Добавлена функция pthread_getcpuclockid() в модуль времени
bpo-27494: Заставьте 2to3 принимать запятую в конце выражений генератора. Например, теперь разрешено использовать
set(x for x in [],)
.bpo-30347: Прекращение сбоев при одновременном выполнении итераций над итераторами itertools.groupby().
bpo-30346: Итератор, созданный итератором itertools.groupby(), теперь становится исчерпанным после продвижения итератора groupby.
bpo-31556: Отмените asyncio.wait_for future faster, если таймаут <= 0
bpo-31540: Разрешить параметры с именами
concurrent.futures.ProcessPoolExecutor
иconcurrent.futures.ProcessPoolExecutor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31516:
threading.current_thread()
не должен возвращать фиктивный поток при завершении работы.bpo-31525: В модуле sqlite требуется API sqlite3_prepare_v2. Таким образом, модуль sqlite теперь требует sqlite версии не ниже 3.3.9.
bpo-26510: подпарсеры argparse теперь требуются по умолчанию. Это соответствует поведению в Python 2. Для необязательных подпарсеров используйте новый параметр
add_subparsers(required=False)
. Исправление Энтони Соттила. (Начиная с версии 3.7.0rc1, значение по умолчанию было изменено на необязательное, как это было с Python 3.3).bpo-27541: Разрешить параметры с именами
bytearray
иarray.array
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31351: python -m ensurepip теперь завершается с ненулевым кодом выхода, если загрузка pip завершилась неудачно.
bpo-31389: Разрешить параметры с именами
pdb.set_trace()
иheader
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-31537: Исправьте неправильное использование
get_history_length
в примере примера документации readline. Исправление от Брэда Смита.bpo-30085: Операторные функции без двойного подчеркивания предпочтительнее для наглядности. Те, что с подчеркиванием, сохраняются только для обратной совместимости.
Построить¶
bpo-31696: Улучшение информации о версии компилятора в
sys.version
, когда Python собран с помощью Clang.bpo-31625: Прекратите использовать ranlib для статических библиотек. Вместо этого мы предполагаем, что ar поддерживает флаг „s“.
bpo-31624: Удалите поддержку BSD/OS.
bpo-22140: Предотвращение двойной подстановки префикса в python-config.sh.
bpo-31569: Исправьте регистр PCBuild/ на PCbuild/ в скриптах сборки и документации.
bpo-31536: Избегайте оптовой перестройки после
make regen-all
, если ничего не изменилось.
IDLE¶
bpo-31460: Упрощение API браузера модулей IDLE. Передача виджета вместо flist с корневым виджетом открывает возможность создания фрейма браузера, который является только частью окна. Передача полного имени файла вместо фрагментов, которые, как предполагается, происходят из файла .py, открывает возможность просмотра файлов python, которые не заканчиваются на .py.
bpo-31649: IDLE - Сделайте параметры _htest, _utest только ключевыми.
bpo-31559: Удалите зависимость от порядка выполнения теста в idle_test.test_browser.
bpo-31459: Переименование браузера модулей IDLE из Class Browser в Module Browser. Первоначальный браузер классов и методов на уровне модулей стал браузером модулей с добавлением функций на уровне модулей много лет назад. Вложенные классы и функции были добавлены вчера. Для обратной совместимости виртуальное событие <<open-class-browser>>, которое отображается на вкладке Keys диалога Settings, не изменяется. Исправление от Шерил Сабелла.
bpo-31500: Шрифты по умолчанию теперь масштабируются на дисплеях HiDPI.
bpo-1612262: Браузер модулей IDLE теперь показывает вложенные классы и функции. Оригинальные исправления кода и тестов от Гильерме Поло и Шерил Сабелла, соответственно.
C API¶
bpo-28280: Разрешить параметры с именами
PyMapping_Keys()
иPyMapping_Values()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31532: Исправление повреждения памяти из-за смешения аллокаторов в getpath.c между Py_GetPath() и Py_SetPath()
bpo-25658: Реализуйте PEP 539 для Thread Specific Storage (TSS) API: это новый Thread Local Storage (TLS) API для CPython, который заменит использование существующего TLS API в интерпретаторе CPython, в то время как существующий API будет устаревшим. PEP написан Эриком М. Бреем, патч - Масаюки Ямамото.
Python 3.7.0 alpha 1¶
Дата выхода: 2017-09-19
Безопасность¶
bpo-29781: SSLObject.version() теперь корректно возвращает None, если рукопожатие по BIO еще не было выполнено.
bpo-29505: Добавьте fuzz-тесты для float(str), int(str), unicode(str); для oss-fuzz.
bpo-30947: Обновите встроенную копию libexpat с версии 2.2.1 до 2.2.3, чтобы получить исправления безопасности.
bpo-30730: Предотвращает внедрение переменных окружения в подпроцесс в Windows. Предотвращает передачу других переменных окружения и командных аргументов.
bpo-30694: Разрешить параметры с именами CVE-2017-9233 и CVE-2016-9063 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-30500: Разрешить параметры с именами
splithost('//127.0.0.1#@evil.com/')
и127.0.0.1
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29591: Разрешить параметры с именами CVE-2016-0718 и CVE-2016-4472 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-31490: Разрешить параметры с именами
ctypes
и_anonymous_
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31471: Разрешить параметры с именами
subprocess.Popen()
иkeys()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31418: Разрешить параметры с именами
PyErr_WriteUnraisable()
и__module__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31416: Исправление ошибок утверждения в случае неверных warnings.filters или warnings.defaultaction. Исправление от Орена Милмана.
bpo-28411: Измените прямое использование PyInterpreterState.modules на PyImport_GetModuleDict(). Также вводится больше единообразия в остальной код, работающий с sys.modules. Это поможет уменьшить сложности при работе с sys.modules.
bpo-28411: Разрешить параметры с именами
PyInterpreterState.modules
иPyImport_GetModule()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31411: Вызывать ошибку TypeError вместо SystemError в случае, если warnings.onceregistry не является словарем. Исправление от Орена Милмана.
bpo-31344: Разрешить параметры с именами
f_trace_lines
иTrue
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31373: Исправление нескольких возможных случаев неопределенного поведения из-за понижения плавающей точки.
bpo-30465: Разрешить параметры с именами
lineno
иcol_offset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30860: Консолидируйте глобальное состояние времени выполнения CPython в одной структуре. Это улучшает доступность состояния времени выполнения.
bpo-31347: Исправление возможного неопределенного поведения в _PyObject_FastCall_Prepend.
bpo-31343: Включите в sys/sysmacros.h функции major(), minor() и makedev(). Библиотека GNU C планирует удалить эти функции из sys/types.h.
bpo-31291: Разрешить параметры с именами
zipimport.zipimporter.get_data
иpathname.replace('/','\\')
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31271: Разрешить параметры с именами
write()
иio.TextIOWrapper
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31243: Исправление сбоя в некоторых методах
io.TextIOWrapper
, когда состояние декодера недействительно. Исправление от Орена Милмана.bpo-30721:
print
теперь показывает правильную подсказку для использования синтаксиса перенаправления в Python 2. Исправление от Sanyam Khurana.bpo-31070: Исправление состояния гонки в importlib _get_module_lock().
bpo-30747: Добавьте нефиктивную реализацию _Py_atomic_store и _Py_atomic_load на MSVC.
bpo-31095: Разрешить параметры с именами
tp_dealloc
иPyObject_GC_UnTrack()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31071: Избегайте маскировки исходной ошибки TypeError в вызове с * распаковкой, когда передаются другие аргументы.
bpo-30978: str.format_map() теперь пропускает исключения поиска ключей. Ранее любое исключение заменялось исключением KeyError.
bpo-30808: Используйте _Py_atomic API для чувствительного к параллелизму состояния сигнала.
bpo-30876: Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо ошибки SystemError. Относительный импорт из непакета теперь завершается с ошибкой ImportError, а не SystemError.
bpo-30703: Улучшение доставки сигналов. Избегайте использования Py_AddPendingCall из обработчика сигналов, чтобы избежать вызова функций, небезопасных для сигналов. Тесты, которые я добавляю сюда, не работают без остальных патчей на Linux и OS X. Это означает, что наша логика доставки сигналов имеет дефекты (некоторые сигналы могут быть потеряны).
bpo-30765: Избегайте блокировки в pthread_mutex_lock(), когда PyThread_acquire_lock() просят не блокировать.
bpo-31161: Убедитесь, что сообщение об ошибке синтаксиса „Missing parenthes“ применяется только к SyntaxError, а не к подклассам. Исправление от Martijn Pieters.
bpo-30814: Исправлено состояние гонки при импорте подмодуля из пакета.
bpo-30736: Внутренняя база данных unicodedata была обновлена до версии Unicode 10.0.
bpo-30604: Перенесите co_extra_freefuncs с per-thread на per-interpreter, чтобы избежать падений.
bpo-30597:
print
теперь показывает ожидаемый ввод в пользовательском сообщении об ошибке, когда используется в качестве оператора Python 2. Исправление от Sanyam Khurana.bpo-30682: Удалено слишком строгое утверждение, которое не срабатывало для некоторых f-строк, таких как eval(«f„\n“») и eval(«f„\r“»).
bpo-30501: Компилятор теперь выдает более оптимальный код для сложных выражений условий в операторах «if», «while» и «assert», выражения «if», а также генераторных выражений и осмыслений.
bpo-28180: Реализуйте PEP 538 (принудительное использование локали в устаревшем языке C). Это означает, что при наличии подходящей целевой локали для кодирования, как основной интерпретатор, так и локально-ориентированные расширения C будут использовать UTF-8 в качестве текстовой кодировки по умолчанию, а не ASCII.
bpo-30486: Позволяет задавать значения ячеек для __закрытия__. Исправление Лизы Роуч.
bpo-30537: itertools.islice теперь принимает целочисленные объекты (имеющие метод __index__) в качестве аргументов start, stop и slice
bpo-25324: Разрешить параметры с именами
COMMENT
иNL
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29104: Исправлен разбор обратных слэшей в f-строках.
bpo-27945: Исправлены различные segfault’ы с dict, когда входные коллекции мутируют во время поиска, вставки или сравнения. Основано на исправлениях Дуэйна Гриффина и Тима Митчелла.
bpo-25794: Исправлены type.__setattr__() и type.__delattr__() для неинтернированных имен атрибутов. Основано на исправлении Эрика Суна.
bpo-30039: Если прерывание KeyboardInterrupt происходит, когда интерпретатор находится в середине возобновления цепочки вложенных вызовов „yield from“ или „await“, то теперь оно корректно доставляется во внутренний фрейм.
bpo-28974: Разрешить параметры с именами
object.__format__(x, '')
иstr(x)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30024: Циклический импорт с абсолютным импортом и привязкой подмодуля к имени теперь поддерживается.
bpo-12414: sys.getsizeof() на кодовом объекте теперь возвращает размеры, включающие кодовую структуру и размеры объектов, на которые она ссылается. Исправление от Donghee Na.
bpo-29839: len() теперь выдает ValueError, а не OverflowError, если __len__() возвращает большое отрицательное целое число.
bpo-11913: README.rst теперь включен в список стандартных README distutils и, следовательно, включен в исходные дистрибутивы.
bpo-29914: Исправлена реализация по умолчанию __reduce__ и __reduce_ex__(). object.__reduce__() больше не принимает аргументов, object.__reduce_ex__() теперь требует один аргумент.
bpo-29949: Исправление регрессии использования памяти объектами set и frozenset.
bpo-29935: Исправлены сообщения об ошибках в методе index() кортежей, списков и deque при передаче индексов неправильного типа.
bpo-29816: Операция сдвига теперь имеет меньше возможностей вызвать ошибку OverflowError. При отрицательном счете всегда возникает ValueError, а не OverflowError. Сдвиг нуля с неотрицательным счетом всегда возвращает ноль.
bpo-24821: Исправлено замедление до 25 раз при поиске некоторых неудачных символов Unicode.
bpo-29102: Добавляет уникальный идентификатор к PyInterpreterState. Это облегчает идентификацию каждого субинтерпретатора.
bpo-29894: Предупреждение об устаревании выдается, если __complex__ возвращает экземпляр строгого подкласса complex. В будущих версиях Python это может быть ошибкой.
bpo-29859: Показывать корректные сообщения об ошибках при сбое любого из вызовов pthread_* в thread_pthread.h.
bpo-29849: Исправление утечки памяти при возникновении ошибки ImportError во время импорта из.
bpo-28856: Исправление ошибки, связанной с тем, что формат %b для байтов должен поддерживать объекты, следующие за буферным протоколом.
bpo-29723: Разрешить параметры с именами
sys.path[0]
и bpo-29139 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29568: Сбегающий процент «%%» в строке формата для классического форматирования строки больше не допускает никаких символов между двумя процентами.
bpo-29714: Исправление ошибки, из-за которой формат байтов мог не работать, если внутри содержался нулевой байт.
bpo-29695: bool(), float(), list() и tuple() больше не принимают аргументы в виде ключевых слов. Первый аргумент int() теперь может передаваться только как позиционный аргумент.
bpo-28893: Установите правильную __cause__ для ошибок о недействительных awaitables, возвращаемых из __aiter__ и __anext__.
bpo-28876: Разрешить параметры с именами
bool(range)
иlen(range)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29683: Исправление выделения памяти в _PyCode_SetExtra. Исправление от Брайана Коулмана.
bpo-29684: Исправьте небольшую регрессию в PyEval_CallObjectWithKeywords. Она должна вызывать TypeError, если kwargs не является dict. Но это может привести к segv, когда args=NULL и kwargs не является dict.
bpo-28598: Поддержка __rmod__ для подклассов str, вызываемых перед str.__mod__. Исправление от Martijn Pieters.
bpo-29607: Исправление вычисления эффекта стека для CALL_FUNCTION_EX. Исправление от Матьё Дартиаиля (Matthieu Dartiailh).
bpo-29602: Исправлена некорректная обработка подписанных нулей в конструкторе complex для подклассов complex и для входов, имеющих метод __complex__. Исправление Сергея Сторчака.
bpo-29347: Исправлена возможность разыменования неопределенных указателей при создании объектов weakref.
bpo-29463: Разрешить параметры с именами
docstring
иco_firstlineno
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29438: Исправлена проблема use-after-free в дикте разделения ключей.
bpo-29546: Установите атрибуты „path“ и „name“ на ImportError для
from ... import ...
.bpo-29546: Улучшение сообщения об ошибке при импорте с указанием местоположения
bpo-29478: Если при использовании политики Compat32 указано значение max_line_length=None, оно больше не игнорируется. Исправление Мирчи Косбука.
bpo-29319: Предотвращение перезаписи RunMainFromImporter в sys.path[0].
bpo-29337: Исправлено возможное предупреждение BytesWarning при сравнении объектов кода. Предупреждения могли выдаваться во время компиляции.
bpo-29327: Исправлено падение при передаче ключевого слова iterable в sorted().
bpo-29034: Исправление утечки памяти и use-after-free в модуле os (path_converter).
bpo-29159: Исправление регрессии в bytes(x), когда x.__index__() поднимает исключение.
bpo-29049: Ленивый вызов _PyObject_GC_TRACK() при вызове Python-функции. Вызов функции происходит на 5 % быстрее.
bpo-28927: bytes.fromhex() и bytearray.fromhex() теперь игнорируют все пробельные символы ASCII, а не только пробелы. Исправление Роберта Сяо.
bpo-28932: Не включайте <sys/random.h>, если он не существует.
bpo-25677: Исправление позиционирования символа синтаксической ошибки для блоков с отступами. Основано на исправлении Майкла Лейзелла.
bpo-29000: Исправлено форматирование байтов окталов с нулевой прокладкой в альтернативной форме.
bpo-18896: Функция Python теперь может иметь более 255 параметров. collections.namedtuple() теперь поддерживает кортежи с более чем 255 элементами.
bpo-28596: В Android предпочтительной кодировкой является UTF-8. Автор патча - Чи Хсуан Йен.
bpo-26919: На Android данные операционной системы теперь всегда кодируются/декодируются в/из UTF-8, а не из кодировки локали, чтобы избежать несоответствий с os.fsencode() и os.fsdecode(), которые уже используют UTF-8.
bpo-28991: functools.lru_cache() был подвержен неясной ошибке реентерабельности, вызываемой исправленной функцией len().
bpo-28147: Исправлена утечка памяти в словарях с разделенными таблицами: setattr() не должна преобразовывать объединенную таблицу в разделенную. Патч написан INADA Naoki.
bpo-28739: выражения f-строк больше не принимаются в качестве docstrings и в ast.literal_eval(), даже если они не содержат выражений.
bpo-28512: Исправлена установка атрибута смещения SyntaxError с помощью PyErr_SyntaxLocationEx() и PyErr_SyntaxLocationObject().
bpo-28918: Исправьте кросс-компиляцию xxlimited, когда Python был собран с определением Py_DEBUG.
bpo-23722: Разрешить параметры с именами
super()
и__classcell__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28797: Изменение класса __dict__ внутри метода __set_name__ дескриптора, который используется внутри этого класса, больше не предотвращает вызов метода __set_name__ других дескрипторов.
bpo-28799: Разрешить параметры с именами
PyEval_GetCallStats()
иsys.callstats()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-12844: Теперь в функцию можно передавать более 255 аргументов.
bpo-28782: Разрешить параметры с именами
yield from
и bpo-26647 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28774: Исправление позиции ошибки юникода в кодеках ASCII и Latin1, когда строка, возвращаемая обработчиком ошибки, содержит несколько некодируемых символов (не-ASCII для кодека ASCII, символы вне диапазона U+0000-U+00FF для Latin1).
bpo-28731: Оптимизация _PyDict_NewPresized() для создания dict правильного размера. Улучшение скорости работы литерала dict с постоянными ключами до 30 %.
bpo-28532: Показывать версию sys.version, когда опция -V предоставляется дважды.
bpo-27100: Предложение with теперь проверяет __enter__ перед проверкой __exit__. Это дает менее путаные сообщения об ошибках, когда оба метода отсутствуют. Исправление Джонатана Эллингтона.
bpo-28746: Исправьте метод set_inheritable() файлового дескриптора на платформах, где нет команд ioctl FIOCLEX и FIONCLEX.
bpo-26920: Исправление неполучения charset локали при инициализации интерпретатора, на платформах, не имеющих langinfo.
bpo-28648: Исправлен сбой в Py_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Исправление от Xiang Zhang.
bpo-28665: Повышение скорости работы опкода STORE_DEREF на 40%.
bpo-19398: Лишний слэш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.
bpo-28621: Ускорено преобразование int в float за счет использования более быстрой реализации подсчета битов. Исправление от Adrian Wielgosik.
bpo-28580: Оптимизация итерации значений таблицы разбиения. Исправление от Xiang Zhang.
bpo-28583: PyDict_SetDefault не объединял таблицу разбиения, когда это было необходимо. Исправление от Xiang Zhang.
bpo-28128: Предупреждение об устаревании недопустимых управляющих последовательностей str и byte теперь выводит более точную информацию о месте возникновения ошибки. Исправление Сергея Сторчака и Эрика Смита.
bpo-28509: dict.update() больше не выделяет ненужный большой объем памяти.
bpo-28426: Исправлен потенциальный сбой в PyUnicode_AsDecodedObject() в отладочной сборке.
bpo-28517: Исправлена ошибка of-by-one в оптимизаторе peephole, которая приводила к сохранению недостижимого кода.
bpo-28214: Улучшено сообщение об исключениях для проблемных атрибутов __set_name__.
bpo-23782: Исправлена возможная утечка памяти в _PyTraceback_Add() и потеря исключений в PyTraceBack_Here().
bpo-28183: Оптимизация и очистка итерации диктовки.
bpo-26081: Добавлена реализация asyncio.Future на языке C. Оригинальный патч Юрия Селиванова.
bpo-28379: Добавлены проверки на вменяемость и тесты для PyUnicode_CopyCharacters(). Исправление от Xiang Zhang.
bpo-28376: Тип итератора дальнего действия теперь регистрируется как Iterator. Исправление от Орена Милмана.
bpo-28376: Создание экземпляров range_iterator путем вызова типа range_iterator теперь запрещено. Вызов iter() на экземпляре range - единственный способ. Исправление от Орена Милмана.
bpo-26906: Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо отказа.
bpo-18287: PyType_Ready() теперь проверяет, что tp_name не является NULL. Автор оригинального патча - Никлас Коеп.
bpo-24098: Исправлено возможное падение при изменении AST в процессе компиляции.
bpo-28201: Дикт уменьшает вероятность возникновения второго конфликта в хэш-таблице, когда хэши имеют одинаковые младшие биты.
bpo-28350: Строковые константы с нулевым символом больше не интернируются.
bpo-26617: Исправление сбоя при запуске GC во время обратного вызова weakref.
bpo-27942: Строковые константы теперь рекурсивно интернализируются в кортежах и фростенсетах.
bpo-28289: ImportError.__init__ теперь сбрасывает не указанные атрибуты.
bpo-21578: Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми ключевыми словами args.
bpo-28203: Исправление неправильного типа в сообщении об ошибке complex(1.0, {2:3}). Исправление от Soumya Sharma.
bpo-28086: Одиночный аргумент var-позиции подтипа tuple был передан в функцию, определенную на языке C, невредимым. Теперь он преобразуется в точный кортеж.
bpo-28214: Теперь __set_name__ ищется в классе, а не в экземпляре.
bpo-27955: Откат при чтении устройства /dev/urandom, когда системный вызов getrandom() терпит неудачу с EPERM, например, при блокировке SECCOMP.
bpo-28192: Не импортируйте readline в изолированном режиме.
bpo-27441: Удалите некоторые избыточные присваивания ob_size в longobject.c. Спасибо Орену Милману.
bpo-27222: Очистите избыточный код в функции long_rshift. Спасибо Орену Милману.
Обновите внутренние базы данных юникода до версии 9.0.0.
bpo-28131: Исправление регрессии в zipimport’s compile_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.
bpo-28126: Замените Py_MEMCPY на memcpy(). Visual Studio может правильно оптимизировать memcpy().
bpo-28120: Исправьте dict.pop() для словаря split при попытке удалить «ожидающий ключ» (еще не вставленный в split-таблицу). Исправление от Xiang Zhang.
bpo-26182: Выдавать предупреждение об обесценивании при использовании ключевых слов async и await в качестве имени переменной/атрибута/класса/функции.
bpo-26182: Исправьте утечку в коде, вызывающем DeprecationWarning.
bpo-28721: Исправьте асинхронные генераторы aclose() и athrow() для правильной обработки распространения StopAsyncIteration.
bpo-26110: Ускорение вызовов методов: добавлены опкоды LOAD_METHOD и CALL_METHOD.
Библиотека¶
bpo-31499: xml.etree: Исправление сбоя, когда парсер является частью цикла ссылок.
bpo-31482:
random.seed()
теперь работает с байтами в версии=1bpo-28556: typing.get_type_hints теперь по умолчанию находит нужные глобалы для классов и модулей (если вызывающая сторона не указала
globalns
).bpo-28556: Улучшение скорости работы модуля
typing
. Оригинальные PR Ивана Левкивского и Митара.bpo-31544: Модуль C-ускорителя ElementTree игнорировал исключения, возникающие при поиске целевых методов TreeBuilder в XMLParser().
bpo-31234: socket.create_connection() теперь вручную исправляет цикл ссылок: очищает переменную, хранящую последнее исключение при успехе.
bpo-31457: Объекты LoggerAdapter теперь могут быть вложенными.
bpo-31431: SSLContext.check_hostname теперь автоматически устанавливает SSLContext.verify_mode в ssl.CERT_REQUIRED, а не выдает ошибку ValueError.
bpo-31233: socketserver.ThreadingMixIn теперь хранит список не демонических потоков, чтобы дождаться завершения всех этих потоков в server_close().
bpo-28638: Изменили стратегию реализации collections.namedtuple(), чтобы существенно сократить использование exec() в пользу методов с предварительными вычислениями. В результате параметр verbose и атрибут _source больше не поддерживаются. Преимущества: 1) меньший объем памяти для приложений, использующих множество именованных кортежей, 2) более быстрое создание класса именованных кортежей (примерно в 4-6 раз в зависимости от способа измерения) и 3) незначительное увеличение скорости создания экземпляров с помощью __new__, _make и _replace. (Основной автор патча - Jelle Zijlstra, дальнейшие улучшения внесли INADA Naoki, Serhiy Storchaka и Raymond Hettinger).
bpo-31400: Улучшена обработка ошибок SSL, чтобы избежать потери номеров ошибок.
bpo-27629: Сделайте настраиваемыми типы возврата SSLContext.wrap_bio() и SSLContext.wrap_socket().
bpo-28958: ssl.SSLContext() теперь использует информацию об ошибке OpenSSL, когда контекст не может быть создан.
bpo-28182: Модуль SSL теперь поднимает сообщение SSLCertVerificationError, когда OpenSSL не удается проверить сертификат партнера. Исключение содержит дополнительную информацию об ошибке.
bpo-27340: SSLSocket.sendall() теперь использует memoryview для создания фрагментов данных. Это исправляет поддержку всех байтоподобных объектов. Это также более эффективно и позволяет избежать дорогостоящих копий.
bpo-14191: Новая функция
argparse.ArgumentParser.parse_intermixed_args
позволяет разбирать командные строки, в которых пользователь смешивает опции и позиционные аргументы.bpo-31178: Исправление ошибки конкатенации строк в редком пути ошибки в модуле подпроцесса
bpo-31350: Микрооптимизируйте
asyncio._get_running_loop()
, чтобы он стал на 10% быстрее.bpo-31170: expat: Обновление libexpat с 2.2.3 до 2.2.4. Исправление копирования частичных символов для ввода UTF-8 (ошибка 115 в libexpat): https://github.com/libexpat/libexpat/issues/115.
bpo-29136: Добавьте наборы шифров TLS 1.3 и OP_NO_TLSv1_3.
bpo-1198569: Разрешить параметры с именами
string.Template
иbraceidpattern
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31326: concurrent.futures.ProcessPoolExecutor.shutdown() теперь явно закрывает очередь вызовов. Более того, shutdown(wait=True) теперь также присоединяется к потоку очереди вызовов, чтобы предотвратить утечку висящего потока.
bpo-27144: Разрешить параметры с именами
map()
иas_completed()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31281: Разрешить параметры с именами
fileinput.FileInput(files, inplace=True)
иfiles
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-10746: Исправление ctypes, выдающего неверные коды типов PEP 3118 для целочисленных типов.
bpo-27584:
AF_VSOCK
был добавлен интерфейс сокетов, обеспечивающий связь между виртуальными машинами и их хостом.bpo-22536: Модуль подпроцесса теперь устанавливает имя файла, когда на POSIX-системах возникает ошибка FileNotFoundError, связанная с тем, что исполняемый файл или cwd не найдены.
bpo-29741: Обновите некоторые методы в модуле _pyio, чтобы они также принимали целочисленные типы. Исправление от Орена Милмана.
bpo-31249: concurrent.futures: WorkItem.run(), используемый ThreadPoolExecutor, теперь разрывает цикл ссылок между объектом исключения и объектом WorkItem.
bpo-31247: xmlrpc.server теперь явно разрывает циклы ссылок при использовании sys.exc_info() в коде, обрабатывающем исключения.
bpo-23835: Разрешить параметры с именами
ConfigParser()
иread_dict()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31238: pydoc: метод stop() частного класса ServerThread теперь ожидает завершения работы DocServer.serve_until_quit(), а затем явно устанавливает атрибут docserver в None, чтобы прервать цикл ссылок.
bpo-5001: Многие утверждения в
multiprocessing
теперь более информативны, а некоторые типы ошибок заменены на более конкретные.bpo-31109: Преобразование zipimport для использования Argument Clinic.
bpo-30102: Модули ssl и hashlib теперь вызывают OPENSSL_add_all_algorithms_noconf() на OpenSSL < 1.1.0. Функция определяет особенности процессора и включает оптимизацию на некоторых процессорных архитектурах, таких как POWER8. Патч основан на исследованиях Густаво Серра Скалета.
bpo-18966: Недемонические потоки, созданные многопроцессорным процессом, теперь объединяются при выходе из дочернего процесса.
bpo-31183:
dis
теперь работает с асинхронными генераторами и объектами coroutine. Исправление Джорджа Коллинза, основанное на диагностике Лусиано Рамальо.bpo-5001: Разрешить параметры с именами
multiprocessing
иmultiprocessing.managers.convert_to_error
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31185: Исправлены различные ошибки в модуле ускорения asyncio.
bpo-31151: socketserver.ForkingMixIn.server_close() теперь ожидает завершения всех дочерних процессов, чтобы предотвратить утечку зомби-процессов.
bpo-31072: Разрешить параметры с именами
include_file
иzipapp.create_archive()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24700: Оптимизировано сравнение массивов с массивами. Теперь сравнение массивов, содержащих значения одного и того же целочисленного типа, выполняется от 10 раз до 70 раз быстрее.
bpo-31135: ttk: исправьте метод destroy() классов LabeledScale и OptionMenu. Вызывает родительский метод destroy(), даже если используемый атрибут не существует. Метод LabeledScale.destroy() теперь также явно очищает атрибуты label и scale, чтобы помочь сборщику мусора уничтожить все виджеты.
bpo-31107: Исправление
copyreg._slotnames()
искаженного вычисления атрибутов для классов, чье имя начинается с подчеркивания. Исправление от Shane Harvey.bpo-31080: Разрешите
logging.config.fileConfig
принимать kwargs и/или args.bpo-30897: Разрешить параметры с именами
pathlib.Path
иis_mount()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31061: Исправлено падение при использовании asyncio и потоков.
bpo-30987: Добавлена поддержка протокола CAN ISO-TP в модуль сокетов.
bpo-30522: Разрешить параметры с именами
setStream
иlogging.StreamHandler
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30502: Исправление обработки длинных оидов в ssl. Основано на патче Кристиана Хаймса.
bpo-5288: Поддержка объектов tzinfo с субминутными смещениями.
bpo-30919: Исправление регрессии производительности общей памяти при многопроцессорной обработке в 3.x. Общая память использовала анонимные отображения памяти в 2.x, в то время как 3.x отображает реальные файлы. Старайтесь делать как можно меньше дисковых операций ввода-вывода.
bpo-26732: Исправление слишком большого количества fds в процессах, запущенных методом «forkserver». Дочерний процесс наследовал столько fds, сколько было запущено дочерних процессов.
bpo-29403: Исправьте autospec
unittest.mock
, чтобы он не ошибался при использовании встроенных функций с привязкой к методу. Исправление Аарона Галлахера.bpo-30961: Исправление декрементирования заимствованной ссылки в tracemalloc.
bpo-19896: Разрешить параметры с именами
'q'
и'Q'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30946: Удалите устаревший код в модуле readline для платформ, где GNU readline старше 2.1 или где select() недоступен.
bpo-25684: Разрешить параметры с именами
ttk.OptionMenu
иOptionMenu
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30886: Исправьте multiprocessing.Queue.join_thread(): теперь он ожидает завершения потока, даже если поток был запущен тем же процессом, который создал очередь.
bpo-29854: Исправление segfault в readline при использовании опции readline’s history-size. Исправление Нира Соффера.
bpo-30794: Добавлен метод multiprocessing.Process.kill для завершения работы с помощью сигнала SIGKILL на Unix.
bpo-30319: socket.close() теперь игнорирует ошибку ECONNRESET.
bpo-30828: Исправьте запредельную запись в
asyncio.CFuture.remove_done_callback()
.bpo-30302: Разрешить параметры с именами
repr
иdatetime.timedelta
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30807: signal.setitimer() может отключить таймер при передаче крошечного значения. Крошечные значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), которая задана как принимающая интервалы с микросекундным разрешением. Однако на некоторых платформах наша процедура преобразования может превратить 1e-6 в нулевой интервал, тем самым отключив таймер вместо того, чтобы (повторно) запланировать его.
bpo-30441: Исправление ошибки при изменении os.environ во время итерации по нему
bpo-29585: Разрешить параметры с именами
sysconfig
иsite
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29293: Добавьте недостающий параметр «n» в multiprocessing.Condition.notify(). В документации утверждается, что multiprocessing.Condition ведет себя как threading.Condition, но в его методе notify() отсутствует необязательный аргумент «n» (для указания количества спящих, которых нужно разбудить), который принимает threading.Condition.notify().
bpo-30532: Исправление парсера значений заголовков электронной почты, удаляющего пробелы при складывании в некоторых случаях.
bpo-30596: Разрешить параметры с именами
close()
иmultiprocessing.Process
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-9146: Исправление ошибки сегментации в _hashopenssl, когда стандартные хэш-функции, такие как md5, недоступны в подключенной библиотеке OpenSSL. Как в некоторых специальных средах сборки FIPS-140.
bpo-29169: Обновление zlib до версии 1.2.11.
bpo-30119: ftplib.FTP.putline() теперь выбрасывает ошибку ValueError на команды, содержащие CR или LF. Исправление от Donghee Na.
bpo-30879: os.listdir() и os.scandir() теперь выдают имена байтов при вызове с аргументом типа bytes.
bpo-30746: Разрешить параметры с именами
os.putenv()
иos.spawn*()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30664: Описание подтеста unittest теперь сохраняет порядок аргументов ключевых слов TestCase.subTest().
bpo-21071: Разрешить параметры с именами
str
иbytes
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29212: Исправьте потоки concurrent.futures.thread.ThreadPoolExecutor, чтобы они по умолчанию имели имя потока, не основанное на repr(), когда не указан префикс thread_name_prefix. Теперь они будут идентифицировать себя как «ThreadPoolExecutor-y_n».
bpo-29755: Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают байты.
bpo-30616: Функциональный API перечисления позволяет создавать пустые перечисления. Исправлено Donghee Na
bpo-30038: Исправление состояния гонки между доставкой сигнала и дескриптором файла пробуждения. Исправление от Натаниэля Смита.
bpo-23894: Разрешить параметры с именами
rb'...'
иf'...'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24744: функция pkgutil.walk_packages теперь вызывает ошибку ValueError, если path является строкой. Исправление от Sanyam Khurana.
bpo-24484: Избегайте состояния гонки при многопроцессорной очистке.
bpo-30589: Исправьте multiprocessing.Process.exitcode, чтобы при использовании метода «forkserver» возвращался номер сигнала, противоположный номеру сигнала, когда процесс убит сигналом (вместо 255).
bpo-28994: Больше не отображается обратный след для SystemExit, вызванного в обратном вызове, зарегистрированном atexit.
bpo-30508: Не регистрируйте исключения, если был вызван метод Task/Future «cancel()».
bpo-30645: Исправьте вычисление пути в
imp.load_package()
, исправляя его для случаев, когда пакет поставляется только с байткодами. Исправление от Alexandru Ardelean.bpo-11822: Функция dis.dis() теперь может разбирать вложенные объекты кода.
bpo-30624: селекторы не учитывают KeyboardInterrupt и SystemExit, оставляя fd в плохом состоянии в случае ошибки. Исправление от Giampaolo Rodola“.
bpo-30595: multiprocessing.Queue.get() с таймаутом теперь опрашивает своего читателя в неблокирующем режиме, если ему удалось получить блокировку, но получение заняло больше времени, чем таймаут.
bpo-28556: Обновления в модуле типизации: Добавление общего AsyncContextManager, добавление поддержки ContextManager на всех версиях. Авторы оригинальных PR: Jelle Zijlstra и Ivan Levkivskyi
bpo-30605: re.compile() больше не выдает предупреждение BytesWarning при компиляции экземпляра bytes с ошибочно вставленным модификатором inline. Исправление Роя Уильямса.
bpo-29870: Исправление утечек ssl-сокетов при прерывании соединения в реализации asyncio/ssl. Исправление от Michaël Sghaïer.
bpo-29743: Закрытие транспорта во время процесса рукопожатия приводит к утечке открытого сокета. Исправление от Николая Кима
bpo-27585: Исправление отмены ожидания в asyncio.Lock. Исправление от Mathieu Sornay.
bpo-30014: метод modify() классов poll(), epoll() и devpoll() модуля selectors работает примерно на 10% быстрее. Исправление от Giampaolo Rodola“.
bpo-30418: В Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс все еще запущен, но закрыл трубу.
bpo-30463: В abc.ABC добавлены пустые __слоты__. Это позволяет подкластерам запретить создание __dict__ и __weakref__. Исправление Аарона Холла.
bpo-30520: Логгеры теперь можно выбирать.
bpo-30557: faulthandler теперь правильно фильтрует и отображает коды исключений на Windows
bpo-30526: Добавьте TextIOWrapper.reconfigure() и атрибут TextIOWrapper.write_through.
bpo-30245: Исправление возможного переполнения при организации сообщения об ошибке struct.pack_into. Исправление от Yuan Liu.
bpo-30378: Исправление проблемы, из-за которой logging.handlers.SysLogHandler не может обрабатывать IPv6-адреса.
bpo-16500: Разрешить регистрацию обработчиков at-fork.
bpo-30470: Отменяем защиту от недействительных вызовов ctypes в Windows. Исправление от Mariatta Wijaya.
bpo-30414: multiprocessing.Queue._feed фоновый запущенный поток не прерывается из главного цикла при исключении.
bpo-30003: Исправлена работа со сбегающими символами в кодеке HZ. Основано на патче Ма Лина.
bpo-30149: inspect.signature() теперь поддерживает callables с параметрами с переменными аргументами, обернутыми partialmethod. Исправление от Donghee Na.
bpo-30436: importlib.find_spec() выдает ModuleNotFoundError вместо AttributeError, если указанный родительский модуль не является пакетом (т. е. не имеет атрибута __path__).
bpo-30301: Исправление ошибки AttributeError при использовании SimpleQueue.empty() в методах запуска spawn и forkserver.
bpo-30375: Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в пользовательском коде. Ранее они могли указывать на внутренности модуля re, если выдавались изнутри групп или условий.
bpo-30329: imaplib и poplib теперь отлавливают ошибку WSAEINVAL сокета Windows (код 10022) при выключении(SHUT_RDWR): Была предпринята попытка выполнить недопустимую операцию. Эта ошибка иногда возникает при SSL-соединениях.
bpo-29196: Удалены ранее устаревшие в Python 2.4 классы Plist, Dict и _InternalDict в модуле plistlib. Значения Dict в результатах функций readPlist() и readPlistFromBytes() теперь являются обычными dicts. Вы больше не можете использовать атрибутный доступ для доступа к элементам этих словарей.
bpo-9850:
macpath
теперь устарел и будет удален в Python 3.8.bpo-30299: Компиляция регулярных выражений в режиме отладки на CPython теперь отображает скомпилированный байткод в удобочитаемом виде.
bpo-30048: Разрешить параметры с именами
Task.cancel()
иawait
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30266: contextlib.AbstractContextManager теперь поддерживает антирегистрацию путем установки __enter__ = None или __exit__ = None, следуя шаблону, представленному в bpo-25958. Исправление от Jelle Zijlstra.
bpo-30340: Улучшена оптимизация регулярных выражений. Это увеличило производительность сопоставления некоторых шаблонов до 25 раз.
bpo-30298: Разрешить параметры с именами
'(?i)(?s)...'
и'(?x) (?i) (?s)...'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30285: Оптимизировано сопоставление и поиск регулярных выражений без учета регистра.
bpo-29990: Исправление проверки диапазона в декодере GB18030. Оригинальный патч от Ma Lin.
bpo-29979: перепишите cgi.parse_multipart, используя класс FieldStorage и делая его результаты согласованными с результатами FieldStorage для запросов multipart/form-data. Исправление Пьера Квентела.
bpo-30243: Удалены методы __init__ сканера и кодировщика _json. Их неправильное использование могло привести к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах __new__.
bpo-30215: Скомпилированные объекты регулярных выражений с флагом re.LOCALE больше не зависят от локали во время компиляции. Только локаль во время сопоставления влияет на результат сопоставления.
bpo-30185: Избегайте отслеживания прерываний KeyboardInterrupt в вспомогательном процессе forkserver при получении Ctrl-C.
bpo-30103: Разрешить параметры с именами ``“` и `` с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-28556: Различные обновления модуля типизации: добавление типа typing.NoReturn, использование WrapperDescriptorType, исправление мелких ошибок. Авторы оригинальных PR - Джим Фасаракис-Хиллиард и Иван Левкивский.
bpo-30205: Исправление getsockname() для несвязанных сокетов AF_UNIX в Linux.
bpo-30228: Методы seek() и tell() io.FileIO теперь устанавливают внутренний атрибут seekable, чтобы избежать одного вызова системы при open() (в буферизованном или текстовом режиме).
bpo-30190: unittest’s assertAlmostEqual и assertNotAlmostEqual предоставляют лучшее сообщение в случае неудачи, которое включает разницу между левым и правым аргументами. (патч от Giampaolo Rodola“)
bpo-30101: Добавьте поддержку curses.A_ITALIC.
bpo-29822: inspect.isabstract() теперь работает во время __init_subclass__. Исправление от Nate Soares.
bpo-29960: Сохранение состояния генератора, когда _random.Random.setstate() вызывает исключение. Исправление от Bryan Olson.
bpo-30070: Исправлены утечки и сбои в обработке ошибок в модуле парсера.
bpo-22352: Ширина столбцов в выводе dis.dis() теперь корректируется с учетом больших номеров строк и смещений инструкций.
bpo-30061: Исправлены сбои в методах IOBase __next__() и readlines(), когда readline() или __next__() соответственно возвращали объект, не имеющий размера. Исправлены возможные другие ошибки, вызванные непроверкой результатов PyObject_Size(), PySequence_Size() или PyMapping_Size().
bpo-30218: Исправление поддержки PathLike для shutil.unpack_archive. Исправление от Jelle Zijlstra.
bpo-10076: Скомпилированные объекты регулярных выражений и совпадений в модуле re теперь поддерживают copy.copy() и copy.deepcopy() (они считаются атомарными).
bpo-30068: _io._IOBase.readlines будет проверять, закрыт ли он первым при наличии подсказки.
bpo-29694: Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Исправление от Армина Риго.
bpo-29692: Исправлена произвольная развязка исключений RuntimeError в contextlib.contextmanager. Исправление Сиддхарта Веланкара.
bpo-26187: Проверка того, что обратный вызов sqlite3 trace не вызывается несколько раз при изменении схемы. Косвенно исправлено переходом на использование sqlite3_prepare_v2() в bpo-9303. Исправление Авива Паливоды.
bpo-30017: Разрешалось вызывать метод close() объекта записи zip-файла несколько раз. Теперь при записи в закрытую запись всегда выдается ошибка ValueError.
bpo-29998: При пикировке и копировании ImportError теперь сохраняются атрибуты имени и пути.
bpo-29995: re.escape() теперь экранирует только специальные символы regex.
bpo-29962: Добавлена операция math.remainder, реализующая остаток, как указано в IEEE 754.
bpo-29649: Улучшение сообщений об исключениях struct.pack_into() для проблем с размером буфера и смещением. Исправление Эндрю Нестера.
bpo-29654: Поддержка HTTP-заголовка If-Modified-Since (кэш браузера). Исправление от Пьера Квентела.
bpo-29931: Исправлена проверка сравнения для объектов ipaddress.ip_interface. Исправление от Sanjay Sundaresan.
bpo-29953: Исправлена утечка памяти в методе replace() для объектов datetime и time при передаче аргумента bound fold.
bpo-29942: Исправление сбоя в itertools.chain.from_iterable при столкновении с длинными прогонами пустых итераций.
bpo-10030: Ускорение чтения зашифрованных ZIP-файлов в 2 раза.
bpo-29204: Element.getiterator() и параметр html в XMLParser() были устаревшими только в документации (начиная с Python 3.2 и 3.4 соответственно). Теперь при их использовании выдается предупреждение об устаревании.
bpo-27863: Исправлены многочисленные сбои в ElementTree, вызванные условиями гонки и неправильными типами.
bpo-25996: Добавлена поддержка файловых дескрипторов в os.scandir() на Unix. os.fwalk() ускоряется в 2 раза за счет использования os.scandir().
bpo-28699: Исправлена ошибка в пулах в файле multiprocessing.pool, в результате которой при возникновении исключения в самом начале итерабельной таблицы исключение могло быть проглочено или привести к зависанию программы. Исправление подготовили Дэвин Поттс и Сян Чжан.
bpo-23890: unittest.TestCase.assertRaises() теперь вручную разрывает цикл ссылок, чтобы не держать объекты живыми дольше, чем ожидается.
bpo-29901: Модуль zipapp теперь поддерживает общие объекты типа path, а не только pathlib.Path.
bpo-25803: Избегайте некорректных ошибок, выдаваемых Path.mkdir(exist_ok=True), когда ОС отдает приоритет ошибкам типа EACCES перед EEXIST.
bpo-29861: Освободите ссылки на задачи, их аргументы и результаты, как только они завершатся в multiprocessing.Pool.
bpo-19930: Аргумент mode в os.makedirs() больше не влияет на биты разрешения файлов вновь созданных каталогов промежуточного уровня.
bpo-29884: faulthandler: Восстановление старого sigaltstack во время сноса. Исправление Кристофа Зейтуни.
bpo-25455: Исправлены сбои при repr рекурсивных буферизованных файлоподобных объектов.
bpo-29800: Исправление сбоев в partial.__repr__, если ключи partial.keywords не являются строками. Исправление от Michael Seifert.
bpo-8256: Исправлена возможность сбоя или падения input(), если атрибуты «encoding» или «errors» в sys.stdin или sys.stdout не установлены или не являются строками.
bpo-28692: Использование нецелого значения для выбора формы множественного числа в gettext теперь устарело.
bpo-26121: Используйте реализацию библиотеки C для математических функций erf() и erfc().
bpo-29619: os.stat() и os.DirEntry.inode() теперь преобразуют inode (st_ino) с помощью целых чисел без знака.
bpo-28298: Исправлена ошибка, из-за которой массивы „Q“, „L“ и „I“ не могли принимать в качестве элементов большие intables (объекты, имеющие __int__).
bpo-29645: Ускорен импорт модуля webbrowser. webbrowser.register() теперь потокобезопасен.
bpo-28231: Модуль zipfile теперь принимает path-подобные объекты для внешних путей.
bpo-26915: методы index() и count() в collections.abc.Sequence теперь проверяют идентичность перед проверкой равенства при выполнении сравнений.
bpo-28682: Добавлена поддержка байтовых путей в os.fwalk().
bpo-29728: Добавьте новую константу
socket.TCP_NOTSENT_LOWAT
(Linux 3.12). Исправление Натаниэля Дж. Смита.bpo-29623: Разрешить использование path-like объекта в качестве единственного аргумента в ConfigParser.read(). Исправление Дэвида Эллиса.
bpo-9303: Перенос модуля sqlite3 на API _v2. Исправление от Авива Паливоды.
bpo-28963: Исправление выходящей за границы итерации в asyncio.Future.remove_done_callback, реализованном на C.
bpo-29704: asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до закрытия всех труб.
bpo-29271: Исправьте Task.current_task и Task.all_tasks, реализованные на C, чтобы они принимали аргумент None, как их чистая реализация на Python.
bpo-29703: Исправьте asyncio для поддержки инстанцирования новых циклов событий в дочерних процессах.
bpo-29615: SimpleXMLRPCDispatcher больше не цепляет KeyError (или любое другое исключение) к исключению(ям), поднятому(ым) в диспетчеризируемых методах. Исправление от Петра Мотейлека.
bpo-7769: Метод register_function() из xmlrpc.server.SimpleXMLRPCDispatcher и его подклассов теперь можно использовать в качестве декоратора.
bpo-29376: Исправьте ошибку утверждения в threading._DummyThread.is_alive().
bpo-28624: Добавьте тест, проверяющий, что параметр cwd функции Popen() принимает объекты PathLike. Исправление от Sayan Chowdhury.
bpo-28518: Неявное начало транзакции перед оператором DML. Исправление Авива Паливоды.
bpo-29742: get_extra_info() вызывает исключение, если вызывается на закрытом ssl-транспорте. Исправление от Николая Кима.
bpo-16285: urllib.parse.quote теперь основан на RFC 3986 и, следовательно, включает „~“ в набор символов, которые по умолчанию не берутся в кавычки. Исправление от Christian Theune и Ratnadeep Debnath.
bpo-29532: Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на частичный объект после его создания.
bpo-29110: Исправление утечки объекта файла в aifc.open(), когда файл указан как путь к файловой системе и не является допустимым форматом AIFF. Исправление Энтони Чжана.
bpo-22807: Добавьте uuid.SafeUUID и uuid.UUID.is_safe для передачи информации от платформы о том, сгенерированы ли UUID безопасным для многопроцессорной обработки методом.
bpo-29576: Улучшены некоторые устаревшие методы в importlib. Некоторые устаревшие методы теперь выдают DeprecationWarnings и имеют лучшие описательные сообщения.
bpo-29534: Исправлено различное поведение Decimal.from_float() для _decimal и _pydecimal. Спасибо Эндрю Нестеру.
bpo-10379: locale.format_string теперь поддерживает ключевой аргумент „monetary“, а locale.format устарел.
bpo-29851: importlib.reload() теперь выдает ошибку ModuleNotFoundError, если у модуля нет спецификации.
bpo-28556: Различные обновления модуля типизации: typing.Counter, typing.ChainMap, улучшено кэширование ABC и т.д. Авторы оригинальных PR: Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.
bpo-29100: Исправьте регрессию datetime.fromtimestamp(), появившуюся в Python 3.6.0: проверьте минимальный и максимальный годы.
bpo-29416: Предотвращение бесконечного цикла в pathlib.Path.mkdir
bpo-29444: Исправлено обращение к буферу за пределами границ в методе group() объекта match. Основано на исправлении от WGH.
bpo-29377: Добавляет встроенные типы WrapperDescriptorType, MethodWrapperType и MethodDescriptorType в модуль types. Оригинальный патч Мануэля Креббера.
bpo-29218: Неиспользуемая команда install_misc теперь удалена. Она была задокументирована как неиспользуемая с 2000 года. Исправление Эрика Н. Вандер Вила.
bpo-29368: Метод extend() теперь вызывается вместо метода append() при распикировке collections.deque и других спископодобных объектов. Это позволяет ускорить распикировку в 2 раза.
bpo-29338: В справке встроенного или расширенного класса теперь указывается подпись конструктора, если для класса задана __text_signature__.
bpo-29335: Исправьте subprocess.Popen.wait(), когда дочерний процесс вышел не в завершенное, а в остановленное состояние (например, при наличии ptrace).
bpo-29290: Исправление регрессии в argparse, из-за которой сообщения справки обрывались на неразрывных пробелах.
bpo-28735: Исправлено сравнение mock.MagickMock с mock.ANY.
bpo-29197: Удалена устаревшая функция ntpath.splitunc().
bpo-29210: Убрана поддержка устаревшего аргумента «exclude» в tarfile.TarFile.add().
bpo-29219: Исправлена бесконечная рекурсия при повторном использовании неинициализированных экземпляров ctypes.CDLL.
bpo-29192: Удалены устаревшие функции в модуле http.cookies.
bpo-29193: Аргумент строки формата для string.Formatter.format() теперь только позиционный.
bpo-29195: Убрана поддержка устаревших недокументированных аргументов ключевых слов в методах объектов регулярных выражений.
bpo-28969: Исправлено состояние гонки в реализации functools.lru_cache на C. KeyError могла быть вызвана, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми некэшированными аргументами.
bpo-20804: Атрибуты unittest.mock.sentinel теперь сохраняют свою идентичность при копировании или мариновании.
bpo-29142: В urllib.request суффиксы в переменной окружения no_proxy с ведущими точками могли повторно соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление Милана Оберкирха.
bpo-28961: Исправление помощника unittest.mock._Call: больше не игнорирует параметр name. Автор патча - Jiajun Huang.
bpo-15812: inspect.getframeinfo() теперь корректно показывает первую строку контекста. Исправление Сэма Бриза.
bpo-28985: Обновление констант авторизатора в модуле sqlite3. Исправление от Dingyuan Wang.
bpo-29079: Предотвращение бесконечного цикла в pathlib.resolve() на Windows
bpo-13051: Исправлены ошибки рекурсии в больших или измененных по размеру curses.textpad.Textbox. Основано на патче Тихо Андерсена.
bpo-9770: предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.
bpo-28427: старые ключи не должны удалять новые значения из WeakValueDictionary при сборе из другого потока.
bpo-28923: Удалите артефакты редактора из Tix.py.
bpo-28871: Исправлен сбой при деаллокации глубокого дерева ElementTree.
bpo-19542: Исправление ошибок в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сбор GC происходит в другом потоке.
bpo-20191: Исправлен сбой в resource.prlimit() при передаче в качестве ограничений последовательности, не имеющей собственных элементов.
bpo-16255: subprocess.Popen использует /system/bin/sh на Android в качестве оболочки, а не /bin/sh.
bpo-28779: multiprocessing.set_forkserver_preload() приведет к аварийному завершению процесса forkserver, если предварительно загруженный модуль инстанцирует некоторые объекты мультипроцессинга, такие как блокировки.
bpo-26937: Метод chown() класса tarfile.TarFile теперь не дает сбоев, когда модуль grp не может быть импортирован, как, например, на платформах Android.
bpo-28847: dbm.dumb теперь поддерживает чтение файлов только для чтения и больше не записывает индексный файл, если он не изменен. Теперь выдается предупреждение об устаревании, если индексный файл пропущен и создан заново в режимах „r“ и „w“ (в будущих релизах Python это будет ошибкой).
bpo-27030: Неизвестные эскейпы, состоящие из
'\'
и буквы ASCII, в регулярных выражениях шаблонов замены re.sub() теперь являются ошибками.bpo-28835: Исправление регрессии в warnings.catch_warnings(): вызов warnings.showwarning(), если он был переопределен внутри менеджера контекста.
bpo-27172: Чтобы помочь при обновлении с версии 2.7, ранее задокументированная депривация
inspect.getfullargspec()
была отменена. Это решение может быть пересмотрено после того, как ветка Python 2.7 перестанет официально поддерживаться.bpo-28740: Добавьте sys.getandroidapilevel(): возвращает версию API Android на момент сборки в виде целого числа. Функция доступна только для Android.
bpo-26273: Разрешить параметры с именами
socket.TCP_CONGESTION
иsocket.TCP_USER_TIMEOUT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28752: Восстановлены методы __reduce__() для объектов datetime.
bpo-28727: Шаблоны регулярных выражений, объекты _sre.SRE_Pattern, создаваемые re.compile(), становятся сопоставимыми (только операторы x==y и x!=y). Это изменение должно исправить bpo-18383: не дублировать фильтры предупреждений при перезагрузке модуля warnings (обычно это делается только в модульных тестах).
bpo-20572: Удалите параметр subprocess.Popen.wait endtime. Он был устаревшим в версии 3.4 и недокументированным до этого.
bpo-25659: В ctypes предотвратите падение при вызове методов from_buffer() и from_buffer_copy() для абстрактных классов типа Array.
bpo-28548: В модуле «http.server» по возможности анализируйте версию протокола, чтобы избежать использования HTTP 0.9 в некоторых ответах на ошибки.
bpo-19717: Заставляет Path.resolve() успешно работать с несуществующими путями. Исправление от Вайраски Кока
bpo-28563: Исправлена возможность DoS и выполнения произвольного кода при обработке множественного выбора формы в модуле gettext. Парсер выражений теперь поддерживает точный синтаксис, поддерживаемый GNU gettext.
bpo-28387: Исправлено возможное падение деаллокатора _io.TextIOWrapper, когда сборщик мусора вызывался в другом потоке. Основано на исправлении Себастьяна Куфре.
bpo-27517: Компрессор и декомпрессор LZMA больше не вызывают исключения, если им дважды передаются пустые данные. Исправление от Бенджамина Фогла.
bpo-28549: Исправлена ошибка segfault в addch() в curses с ncurses6.
bpo-28449: tarfile.open() с режимом «r» или «r:» теперь пытается открыть tar-файл со сжатием, прежде чем пытаться открыть его без сжатия. В противном случае с вероятностью 50% он терпел неудачу при ignore_zeros=True.
bpo-23262: Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче Олега Бройтмана.
bpo-24241: Веб-браузер в среде X теперь предпочитает использовать браузер по умолчанию напрямую. Кроме того, функция webbrowser register() теперь имеет документированный аргумент „preferred“, чтобы указать браузеры, которые будут возвращаться функцией get() без аргументов. Исправление Дэвида Стила
bpo-27939: Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы как float-значения в Tk. tkinter.IntVar теперь работает, если float-значение установлено в базовую переменную Tk.
bpo-28255: calendar.TextCalendar.prweek() больше не печатает пробел после календаря недели. calendar.TextCalendar.pryear() больше не печатает лишнюю новую строку после календаря года. Основано на исправлении от Xiang Zhang.
bpo-28255: calendar.TextCalendar.prmonth() no longer prints a space at the start of new line after printing a month’s calendar. Patch by Xiang Zhang.
bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. Based on patch by Kaarle Ritvanen.
bpo-28353: os.fwalk() no longer fails on broken links.
bpo-28430: Fix iterator of C implemented asyncio.Future doesn’t accept non-None value is passed to it.send(val).
bpo-27025: Generated names for Tkinter widgets now start by the «!» prefix for readability.
bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a workaround to Tix library bug.
bpo-28488: shutil.make_archive() no longer adds entry «./» to ZIP archive.
bpo-25953: re.sub() now raises an error for invalid numerical group reference in replacement template even if the pattern is not found in the string. Error message for invalid group reference now includes the group index and the position of the reference. Based on patch by SilentGhost.
bpo-28469: timeit now uses the sequence 1, 2, 5, 10, 20, 50,… instead of 1, 10, 100,… for autoranging.
bpo-28115: Command-line interface of the zipfile module now uses argparse. Added support of long options.
bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by Mariatta Wijaya.
bpo-28448: Fix C implemented asyncio.Future didn’t work on Windows.
bpo-23214: In the «io» module, the argument to BufferedReader and BytesIO’s read1() methods is now optional and can be -1, matching the BufferedIOBase specification.
bpo-28480: Fix error building socket module when multithreading is disabled.
bpo-28240: Разрешить параметры с именами
-c/--clock
и-t/--time
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28240: timeit now repeats the benchmarks 5 times instead of only 3 to make benchmarks more reliable.
bpo-28240: timeit autorange now uses a single loop iteration if the benchmark takes less than 10 seconds, instead of 10 iterations. «python3 -m timeit -s „import time“ „time.sleep(1)“» now takes 4 seconds instead of 40 seconds.
Distutils.sdist now looks for README and setup.py files with case sensitivity. This behavior matches that found in Setuptools 6.0 and later. See setuptools 100 for rationale.
bpo-24452: Make webbrowser support Chrome on Mac OS X. Patch by Ned Batchelder.
bpo-20766: Fix references leaked by pdb in the handling of SIGINT handlers.
bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by Eryk Sun.
bpo-28317: The disassembler now decodes FORMAT_VALUE argument.
bpo-28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once.
bpo-28229: lzma module now supports pathlib.
bpo-28321: Fixed writing non-BMP characters with binary format in plistlib.
bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan Furman.
bpo-28227: gzip now supports pathlib. Patch by Ethan Furman.
bpo-28332: Deprecated silent truncations in socket.htons and socket.ntohs. Original patch by Oren Milman.
bpo-27358: Optimized merging var-keyword arguments and improved error message when passing a non-mapping as a var-keyword argument.
bpo-28257: Improved error message when passing a non-iterable as a var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
bpo-28322: Fixed possible crashes when unpickle itertools objects from incorrect pickle data. Based on patch by John Leitch.
bpo-28228: imghdr now supports pathlib.
bpo-28226: compileall now supports pathlib.
bpo-28314: Fix function declaration (C flags) for the getiterator() method of xml.etree.ElementTree.Element.
bpo-28148: Stop using localtime() and gmtime() in the time module. Introduced platform independent _PyTime_localtime API that is similar to POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.
bpo-28253: Fixed calendar functions for extreme months: 0001-01 and 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so that they don’t call itermonthdates() which can cause datetime.date under/overflow.
bpo-28275: Fixed possible use after free in the decompress() methods of the LZMADecompressor and BZ2Decompressor classes. Original patch by John Leitch.
bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() if pass invalid string-like object as a name. Patch by Xiang Zhang.
bpo-18844: random.choices() now has k as a keyword-only argument to improve the readability of common cases and come into line with the signature used in other languages.
bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. Patch by Madison May.
bpo-27611: Fixed support of default root window in the tkinter.tix module. Added the master parameter in the DisplayStyle constructor.
bpo-27348: In the traceback module, restore the formatting of exception messages like «Exception: None». This fixes a regression introduced in 3.5a2.
bpo-25651: Allow false values to be used for msg parameter of subTest().
bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is interrupted by a signal and a signal handler raises a Python exception.
bpo-28200: Fix memory leak on Windows in the os module (fix path_converter() function).
bpo-25400: RobotFileParser now correctly returns default values for crawl_delay and request_rate. Initial patch by Peter Wirtz.
bpo-27932: Prevent memory leak in win32_ver().
Fix UnboundLocalError in socket._sendfile_use_sendfile.
bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of os.stat(). Patch by Eryk Sun.
bpo-22493: Warning message emitted by using inline flags in the middle of regular expression now contains a (truncated) regex pattern. Patch by Tim Graham.
bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed.
bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by Gergely Imreh and Markus Holtermann.
bpo-28114: Fix a crash in parse_envlist() when env contains byte strings. Patch by Eryk Sun.
bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().
bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by Kevin Conway.
bpo-28174: Handle when SO_REUSEPORT isn’t properly supported. Patch by Seth Michael Larson.
bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by iceboy.
bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
bpo-27759: Fix selectors incorrectly retain invalid file descriptors. Patch by Mark Williams.
bpo-28325: Remove vestigial MacOS 9 macurl2path module and its tests.
bpo-28368: Refuse monitoring processes if the child watcher has no loop attached. Patch by Vincent Michel.
bpo-28369: Raise RuntimeError when transport’s FD is used with add_reader, add_writer, etc.
bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг Марк.
bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
bpo-28372: Fix asyncio to support formatting of non-python coroutines.
bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг Марк.
bpo-27972: Prohibit Tasks to await on themselves.
bpo-24142: Reading a corrupt config file left configparser in an invalid state. Original patch by Florian Höch.
bpo-29581: ABCMeta.__new__ now accepts
**kwargs
, allowing abstract base classes to use keyword parameters in __init_subclass__. Patch by Nate Soares.bpo-25532: inspect.unwrap() will now only try to unwrap an object sys.getrecursionlimit() times, to protect against objects which create a new object on every attribute access.
bpo-30177: path.resolve(strict=False) no longer cuts the path after the first element not present in the filesystem. Patch by Antoine Pietri.
Документация¶
bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and ZeroMQSocketHandler examples and adapt them to Python 3.
bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL documentation.
bpo-31128: Allow the pydoc server to bind to arbitrary hostnames.
bpo-30803: Clarify doc on truth value testing. Original patch by Peter Thomassen.
bpo-30176: Add missing attribute related constants in curses documentation.
bpo-30052: Разрешить параметры с именами
bytes()
иbytearray()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26985: Add missing info of code object in inspect documentation.
bpo-19824: Разрешить параметры с именами bpo-20314 и bpo-12518 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-28929: Link the documentation to its source file on GitHub.
bpo-25008: Document smtpd.py as effectively deprecated and add a pointer to aiosmtpd, a third-party asyncio-based replacement.
bpo-26355: Add canonical header link on each page to corresponding major version of the documentation. Patch by Matthias Bussonnier.
bpo-29349: Fix Python 2 syntax in code for building the documentation.
bpo-23722: Разрешить параметры с именами
__classcell__
и PEP 487 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28513: Documented command-line interface of zipfile.
Тесты¶
bpo-29639: test.support.HOST is now «localhost», a new HOSTv4 constant has been added for your
127.0.0.1
needs, similar to the existing HOSTv6 constant.bpo-31320: Silence traceback in test_ssl
bpo-31346: Prefer PROTOCOL_TLS_CLIENT and PROTOCOL_TLS_SERVER protocols for SSLContext.
bpo-25674: Remove sha256.tbs-internet.com ssl test
bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
bpo-30822: regrtest: Exclude tzdata from regrtest –all. When running the test suite using –use=all / -u all, exclude tzdata since it makes test_datetime too slow (15-20 min on some buildbots) which then times out on some buildbots. Fix also regrtest command line parser to allow passing -u extralargefile to run test_zipfile64.
bpo-30695: Разрешить параметры с именами
set_nomemory(start, stop)
иremove_mem_hooks()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30357: test_thread: setUp() now uses support.threading_setup() and support.threading_cleanup() to wait until threads complete to avoid random side effects on following tests. Initial patch written by Grzegorz Grzywacz.
bpo-30197: Enhanced functions swap_attr() and swap_item() in the test.support module. They now work when delete replaced attribute or item inside the with statement. The old value of the attribute or item (or None if it doesn’t exist) now will be assigned to the target of the «as» clause, if there is one.
bpo-24932: Use proper command line parsing in _testembed
bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line arguments.
bpo-28683: Fix the tests that bind() a unix socket and raise PermissionError on Android for a non-root user.
bpo-26936: Fix the test_socket failures on Android - getservbyname(), getservbyport() and getaddrinfo() are broken on some Android API levels.
bpo-28666: Now test.support.rmtree is able to remove unwritable or unreadable directories.
bpo-23839: Various caches now are cleared before running every test file.
bpo-26944: Fix test_posix for Android where „id -G“ is entirely wrong or missing the effective gid.
bpo-28409: regrtest: fix the parser of command line arguments.
bpo-28217: Adds _testconsole module to test console input.
bpo-26939: Add the support.setswitchinterval() function to fix test_functools hanging on the Android armv7 qemu emulator.
Построить¶
bpo-31354: Разрешить параметры с именами
--with-lto
иmake profile-opt
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31370: Remove support for building –without-threads. This option is not really useful anymore in the 21st century. Removing lots of conditional paths allows us to simplify the code base, including in difficult to maintain low-level internal code.
bpo-31341: Per PEP 11, support for the IRIX operating system was removed.
bpo-30854: Fix compile error when compiling –without-threads. Patch by Masayuki Yamamoto.
bpo-30687: Locate msbuild.exe on Windows when building rather than vcvarsall.bat
bpo-20210: Support the disabled marker in Setup files. Extension modules listed after this marker are not built at all, neither by the Makefile nor by setup.py.
bpo-29941: Разрешить параметры с именами
--with-assertions
иassert()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28787: Fix out-of-tree builds of Python when configured with
--with--dtrace
.bpo-29243: Разрешить параметры с именами
make test
иmake install
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23404: Разрешить параметры с именами
make touch
иmake regen-all
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29643: Fix
--enable-optimization
didn’t work.bpo-27593: sys.version and the platform module python_build(), python_branch(), and python_revision() functions now use git information rather than hg when building from a repo.
bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.
bpo-27659: Prohibit implicit C function declarations: use
-Werror=implicit-function-declaration
when possible (GCC and Clang, but it depends on the compiler version). Patch written by Chi Hsuan Yen.bpo-29384: Remove old Be OS helper scripts.
bpo-26851: Set Android compilation and link flags.
bpo-28768: Fix implicit declaration of function _setmode. Patch by Masayuki Yamamoto
bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
bpo-23903: Added missed names to PC/python3.def.
bpo-28762: lockf() is available on Android API level 24, but the F_LOCK macro is not defined in android-ndk-r13.
bpo-28538: Fix the compilation error that occurs because if_nameindex() is available on Android API level 24, but the if_nameindex structure is not defined.
bpo-20211: Do not add the directory for installing C header files and the directory for installing object code libraries to the cross compilation search paths. Original patch by Thomas Petazzoni.
bpo-28849: Do not define sys.implementation._multiarch on Android.
bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and Michael Haubenwallner.
bpo-26359: Rename –with-optimiations to –enable-optimizations.
bpo-28444: Fix missing extensions modules when cross compiling.
bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.
bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
bpo-21124: Разрешить параметры с именами
NULL
и&PyType_Type
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-13756: Fix building extensions modules on Cygwin. Patch by Roumen Petrov, based on original patch by Jason Tishler.
bpo-21085: Add configure check for siginfo_t.si_band, which Cygwin does not provide. Patch by Masayuki Yamamoto with review and rebase by Erik Bray.
bpo-28258: Fixed build with Estonian locale (python-config and distclean targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
bpo-26661: setup.py now detects system libffi with multiarch wrapper.
bpo-27979: A full copy of libffi is no longer bundled for use when building _ctypes on non-OSX UNIX platforms. An installed copy of libffi is now required when building _ctypes on such platforms.
bpo-15819: Remove redundant include search directory option for building outside the source tree.
bpo-28676: Prevent missing „getentropy“ declaration warning on macOS. Patch by Gareth Rees.
Windows¶
bpo-31392: Update Windows build to use OpenSSL 1.1.0f
bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.
bpo-31358: zlib is no longer bundled in the CPython source, instead it is downloaded on demand just like bz2, lzma, OpenSSL, Tcl/Tk, and SQLite.
bpo-31340: Change to building with MSVC v141 (included with Visual Studio 2017)
bpo-30581: os.cpu_count() now returns the correct number of processors on Windows when the number of logical processors is greater than 64.
bpo-30916: Pre-build OpenSSL, Tcl and Tk and include the binaries in the build.
bpo-30731: Add a missing xmlns to python.manifest so that it matches the schema.
bpo-30291: Allow requiring 64-bit interpreters from py.exe using -64 suffix. Contributed by Steve (Gadget) Barnes.
bpo-30362: Adds list options (-0, -0p) to py.exe launcher. Contributed by Steve Barnes.
bpo-23451: Fix socket deprecation warnings in socketmodule.c. Patch by Segev Finer.
bpo-30450: The build process on Windows no longer depends on Subversion, instead pulling external code from GitHub via a Python script. If Python 3.6 is not found on the system (via
py -3.6
), NuGet is used to download a copy of 32-bit Python.bpo-29579: Removes readme.txt from the installer.
bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)
bpo-28896: Deprecate WindowsRegistryFinder and disable it by default
bpo-28522: Fixes mishandled buffer reallocation in getpathp.c
bpo-28402: Adds signed catalog files for stdlib on Windows.
bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk Sun)
bpo-28251: Improvements to help manuals on Windows.
bpo-28110: launcher.msi has different product codes between 32-bit and 64-bit
bpo-28161: Opening CON for write access fails
bpo-28162: WindowsConsoleIO readall() fails if first line starts with Ctrl+Z
bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle
bpo-28164: _PyIO_get_console_type fails for various paths
bpo-28137: Renames Windows path file to ._pth
bpo-28138: Windows ._pth file should allow import site
IDLE¶
bpo-31493: IDLE code context – fix code update and font update timers. Canceling timers prevents a warning message when test_idle completes.
bpo-31488: IDLE - Update non-key options in former extension classes. When applying configdialog changes, call .reload for each feature class. Change ParenMatch so updated options affect existing instances attached to existing editor windows.
bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace strips more than blank spaces. Multiline string literals are not skipped.
bpo-31480: IDLE - make tests pass with zzdummy extension disabled by default.
bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk update in the background in order to make live interaction and experimentation with tkinter applications much easier.
bpo-31414: IDLE – fix tk entry box tests by deleting first. Adding to an int entry is not the same as deleting and inserting because int(„“) will fail.
bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and Help sections.
bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor. Move some data and functions from the class to module level. Patch by Cheryl Sabella.
bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.
bpo-27099: Convert IDLE’s built-in „extensions“ to regular features. About 10 IDLE features were implemented as supposedly optional extensions. Their different behavior could be confusing or worse for users and not good for maintenance. Hence the conversion. The main difference for users is that user configurable key bindings for builtin features are now handled uniformly. Now, editing a binding in a keyset only affects its value in the keyset. All bindings are defined together in the system-specific default keysets in config-extensions.def. All custom keysets are saved as a whole in config-extension.cfg. All take effect as soon as one clicks Apply or Ok. The affected events are „<<force-open-completions>>“, „<<expand-word>>“, „<<force-open-calltip>>“, „<<flash-paren>>“, „<<format-paragraph>>“, „<<run-module>>“, „<<check-module>>“, and „<<zoom-height>>“. Any (global) customizations made before 3.6.3 will not affect their keyset-specific customization after 3.6.3. and vice versa. Initial patch by Charles Wohlganger.
bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by Cheryl Sabella.
bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl Sabella.
bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The slightly modified tests continue to pass. Patch by Cheryl Sabella.
bpo-31130: IDLE – stop leaks in test_configdialog. Initial patch by Victor Stinner.
bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.
bpo-19903: Разрешить параметры с именами
inspect.signature
иinspect.getfullargspec
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31083: IDLE - Add an outline of a TabPage class in configdialog. Update existing classes to match outline. Initial patch by Cheryl Sabella.
bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly modified tests continue to pass. Patch by Cheryl Sabella.
bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly modified tests continue to pass. Fix General tests. Patch mostly by Cheryl Sabella.
bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan Reedy and Cheryl Sabella.
bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping methods pertaining to each tab and the buttons will aid writing tests and improving the tabs and will enable splitting the groups into classes.
bpo-30853: IDLE – Factor a VarTrace class out of ConfigDialog. Instance tracers manages pairs consisting of a tk variable and a callback function. When tracing is turned on, setting the variable calls the function. Test coverage for the new class is 100%.
bpo-31003: IDLE: Add more tests for General tab.
bpo-30993: IDLE - Improve configdialog font page and tests. In configdialog: Document causal pathways in create_font_tab docstring. Simplify some attribute names. Move set_samples calls to var_changed_font (idea from Cheryl Sabella). Move related functions to positions after the create widgets function. In test_configdialog: Fix test_font_set so not order dependent. Fix renamed test_indent_scale so it tests the widget. Adjust tests for movement of set_samples call. Add tests for load functions. Put all font tests in one class and tab indent tests in another. Except for two lines, these tests completely cover the related functions.
bpo-30981: IDLE – Add more configdialog font page tests.
bpo-28523: IDLE: replace „colour“ with „color“ in configdialog.
bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from 46% to 96%. Patch by Louie Lu.
bpo-30934: Document coverage details for idlelib tests. Add section to idlelib/idle-test/README.txt. Include check that branches are taken both ways. Exclude IDLE-specific code that does not run during unit tests.
bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in docstrings This will facilitate improving the dialog and splitting up the class. Original patch by Cheryl Sabella.
bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by Louie Lu.
bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.
bpo-30851: IDLE: Remove unused variables in configdialog. One is a duplicate, one is set but cannot be altered by users. Patch by Cheryl Sabella.
bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as well as mouse. Initial patch by Louie Lu.
bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.
bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in config; test. * In config, put dump test code in a function; run it and unittest in „if __name__ == „__main__“. * Add class config.ConfigChanges based on changes_class_v4.py on bpo issue. * Add class test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise configdialog to use ConfigChanges; see tracker msg297804. * Revise test_configdialog to match configdialog changes. * Remove configdialog functions unused or moved to ConfigChanges. Cheryl Sabella contributed parts of the patch.
bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by Cheryl Sabella.
bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more tests. Patch by Cheryl Sabella.
bpo-30723: IDLE: Make several improvements to parenmatch. Add „parens“ style to highlight both opener and closer. Make „default“ style, which is not default, a synonym for „opener“. Make time-delay work the same with all styles. Add help for config dialog extensions tab, including help for parenmatch. Add new tests. Original patch by Charles Wohlganger.
bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella
bpo-21519: IDLE’s basic custom key entry dialog now detects duplicates properly. Original patch by Saimadhav Heblikar.
bpo-29910: IDLE no longer deletes a character after commenting out a region by a key shortcut. Add
return 'break'
for this and other potential conflicts between IDLE and default key bindings.bpo-30728: Review and change idlelib.configdialog names. Lowercase method and attribute names. Replace „colour“ with „color“, expand overly cryptic names, delete unneeded underscores. Replace
import *
with specific imports. Patches by Cheryl Sabella.bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them with tk. Add tests for all 3 validation functions. Original patch by G Polo. Tests added by Cheryl Sabella.
bpo-15786: Fix several problems with IDLE’s autocompletion box. The following should now work: clicking on selection box items; using the scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no longer happen. Patch by Louie Lu.
bpo-25514: Add doc subsubsection about IDLE failure to start. Popup no-connection message directs users to this section.
bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and Terry Jan Reedy.
bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by Cheryl Sabella and Terry Jan Reedy.
bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.
bpo-30303: Add _utest option to textview; add new tests. Increase coverage to 100%. Patches by Louie Lu and Terry Jan Reedy.
bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).
bpo-28572: Add 10% to coverage of IDLE’s test_configdialog. Update and augment description of the configuration system.
Инструменты/демоверсии¶
bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared builds now, too. PEP 523 introduced _PyEval_EvalFrameDefault which inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the ability to use py-bt, py-up, and a few other Python-specific gdb integrations. The problem is fixed by only looking for _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno «Polaco» Penteado.
bpo-29748: Added the slice index converter in Argument Clinic.
bpo-24037: Разрешить параметры с именами
bool(accept={int})
иint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29367: Разрешить параметры с именами
method-wrapper
иwrapperobject
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28023: Fix python-gdb.py didn’t support new dict implementation.
bpo-15369: The pybench and pystone microbenchmark have been removed from Tools. Please use the new Python benchmark suite https://github.com/python/pyperformance which is more reliable and includes a portable version of pybench working on Python 2 and Python 3.
bpo-28102: The zipfile module CLI now prints usage to stderr. Patch by Stephen J. Turnbull.
C API¶
bpo-31338: Added the
Py_UNREACHABLE()
macro for code paths which are never expected to be reached. This and a few other useful macros are now documented in the C API manual.bpo-30832: Remove own implementation for thread-local storage. CPython has provided the own implementation for thread-local storage (TLS) on Python/thread.c, it’s used in the case which a platform has not supplied native TLS. However, currently all supported platforms (Windows and pthreads) have provided native TLS and defined the Py_HAVE_NATIVE_TLS macro with unconditional in any case.
bpo-30708: PyUnicode_AsWideCharString() now raises a ValueError if the second argument is NULL and the wchar_t* string contains null characters.
bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(), PyOS_AfterFork_Parent() and PyOS_AfterFork_Child().
bpo-6532: The type of results of PyThread_start_new_thread() and PyThread_get_thread_ident(), and the id parameter of PyThreadState_SetAsyncExc() changed from «long» to «unsigned long».
bpo-27867: Function PySlice_GetIndicesEx() is deprecated and replaced with a macro if Py_LIMITED_API is not set or set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher. Added functions PySlice_Unpack() and PySlice_AdjustIndices().
bpo-29083: Fixed the declaration of some public API functions. PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.
bpo-28769: Разрешить параметры с именами
const char *
иchar *
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29058: All stable API extensions added after Python 3.2 are now available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of the minimum Python version supporting this API.
bpo-28822: The index parameters start and end of PyUnicode_FindChar() are now adjusted to behave like
str[start:end]
.bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
bpo-28761: Разрешить параметры с именами
const char *
иchar *
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28748: Разрешить параметры с именами
const char *
иchar *
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-19569: Compiler warnings are now emitted if use most of deprecated functions.
bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and PyUnicode_AsEncodedUnicode().
Python 3.6.6 final¶
Дата выхода: 2018-06-27
There were no new changes in version 3.6.6.
Python 3.6.6 release candidate 1¶
Release date: 2018-06-11
Ядро и встроенные модули¶
bpo-33786: Исправьте асинхронные генераторы для корректной обработки GeneratorExit в athrow()
bpo-30654: Исправлен сброс обработчика SIGINT на SIG_DFL при выключении интерпретатора, даже если ранее был установлен пользовательский обработчик. Исправление от Филиппа Керлинга.
bpo-33622: Разрешить параметры с именами
__del__
иgc.garbage
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31849: Исправьте предупреждение о сравнении знака/незнака в pyhash.c.
bpo-33391: Исправьте утечку в функции set_symmetric_difference().
bpo-28055: Исправление не выровненных доступов в siphash24(). Исправление от Rolf Eike Beer.
bpo-33231: Исправьте потенциальную утечку памяти в
normalizestring()
.bpo-29922: Разрешить параметры с именами
__aenter__()
и__aexit__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33199: Исправление
ma_version_tag
в реализации dict не инициализируется при копировании из dict с общим доступом к ключу.bpo-33041: Исправлено выскакивание, когда функция содержит цикл
async for
.bpo-32282: Исправьте ненужный ifdef в include файла VersionHelpers.h в socketmodule под Windows.
bpo-21983: Исправление сбоя в
ctypes.cast()
в случае, если аргумент type является структурированным типом данных ctypes. Исправление от Эрика Суна и Орена Милмана.
Библиотека¶
bpo-30167: Предотвращение исключения site.main(), если установлен PYTHONSTARTUP. Исправление от Стива Вебера.
bpo-33812: Экземпляр Datetime d с tzinfo не None, но с d.tzinfo.utcoffset(d), возвращающим None, теперь рассматривается методом astimezone() как наивный.
bpo-30805: Избегайте состояния гонки с помощью отладочного протоколирования
bpo-33767: Разрешить параметры с именами
+
и*
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32684: Исправьте сбор, чтобы он распространял отмену самого себя даже при return_exceptions.
bpo-33674: Исправьте состояние гонки в SSLProtocol.connection_made() из asyncio.sslproto: немедленно начинайте рукопожатие вместо использования call_soon(). Ранее функция data_received() могла быть вызвана до начала хендшейка, что приводило к зависанию или сбою хендшейка.
bpo-31647: Исправлена ошибка, при которой вызов write_eof() на _SelectorSocketTransport после того, как он уже закрыт, приводил к ошибке AttributeError.
bpo-33672: Исправление сбоя Task.__repr__ при использовании фальшивых корутинов Cython
bpo-33469: Исправление RuntimeError после закрытия цикла, в котором использовался run_in_executor
bpo-11874: Используйте лучший регекс при разбиении использования на оборачиваемые части. Позволяет избежать ошибок утверждения при использовании пользовательских строк metavar.
bpo-30877: Исправлена ошибка в Python-реализации декодера JSON, из-за которой кэш разобранных строк не очищался после завершения декодирования. Основано на исправлении от c-fos.
bpo-33548: tempfile._candidate_tempdir_list должен учитывать общие места TEMP
bpo-33542: Запретите
uuid.get_node
использовать DUID вместо MAC в Windows. Исправление от Цви Эффронаbpo-26819: Исправление состояния гонки с
ReadTransport.resume_reading
в цикле событий проактора Windows.bpo-28556: Разрешить параметры с именами
NamedTuple.__new__
и*args
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20087: Обновлено сопоставление псевдонимов с локалями, поддерживаемыми glibc 2.27.
bpo-33422: Исправление удаления кавычек в конце строки при поиске байтовых/строковых литералов в pydoc. Исправление от Андреса Дельфино.
bpo-33197: Обновление сообщения об ошибке при построении недействительного inspect.Parameters Исправление от Donghee Na.
bpo-33383: Исправлен сбой в методе get() объекта базы данных
dbm.ndbm
при его вызове с одним аргументом.bpo-33329: Исправление регрессии многопроцессорной обработки на новых версиях glibcs
bpo-991266: Разрешить параметры с именами
Comment
иhttp.cookies.SimpleCookie
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33131: Обновление поставляемой версии pip до 10.0.1.
bpo-33308: Разрешить параметры с именами
parser
иline_info=False
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33263: Исправление утечки FD в
_SelectorSocketTransport
. Патч от Влада Старостина.bpo-33256: Разрешить параметры с именами
<module>
иcgitb.html()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33203: Разрешить параметры с именами
random.Random.choice()
иIndexError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33224: Обновите difflib.mdiff() для PEP 479. Преобразуйте не пойманную StopIteration в генераторе в return-выражение.
bpo-33209: Конечное обрамление в конце реализации C
pickle.Pickler.dump()
.bpo-32861: Представление
__str__
urllib.robotparser’а теперь включает записи с подстановочными знаками и поля «Crawl-delay» и «Request-rate». Исправление Майкла Лазара.bpo-33096: Разрешите ttk.Treeview.insert вставлять iid, имеющий булево значение false. Обратите внимание, что iid=0 и iid=False будут одинаковыми. Исправление Гарвита Кхатри.
bpo-33127: Модуль ssl теперь компилируется с LibreSSL 2.7.1.
bpo-33021: Освобождение GIL во время вызова fstat(), что позволяет избежать зависания всех потоков при вызове mmap.mmap(), os.urandom() и random.seed(). Исправление Нира Соффера.
bpo-27683: Разрешить параметры с именами
ipaddress
иhosts()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32844: Исправление неправильного перенаправления низкого дескриптора (0 или 1) на stderr в подпроцессе, если другой низкий дескриптор закрыт.
bpo-31908: Разрешить параметры с именами
trace
и--missing
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31457: Если используются вложенные адаптеры журналов, внутренние методы
process()
больше не опускаются.bpo-16865: Поддержка массивов >=2GiB в
ctypes
. Исправление от Сегева Файнера.bpo-31238: pydoc: метод stop() частного класса ServerThread теперь ожидает завершения работы DocServer.serve_until_quit(), а затем явно устанавливает атрибут docserver в None, чтобы прервать цикл ссылок.
Документация¶
bpo-33503: Исправьте неработающую ссылку на pypi
bpo-33421: Добавьте недостающую документацию для
typing.AsyncContextManager
.bpo-33378: Добавьте переключатель корейского языка для https://docs.python.org/3/
bpo-33276: Уточните, что атрибут
__path__
в модулях не может быть просто любым значением.bpo-33201: Модернизируйте документацию по написанию типов расширения C.
bpo-33195: Разрешить параметры с именами
Py_UNICODE
иc-api/arg
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33126: Документ PyBuffer_ToContiguous().
bpo-27212: Измените документацию для рецепта
islice()
, чтобы он потреблял начальные значения вплоть до начального индекса.bpo-28247: Обновите документацию
zipapp
, чтобы описать, как создавать автономные приложения.bpo-18802: Изменения в документации для ipaddress. Исправление от Jon Foster и Berker Peksag.
bpo-27428: Разрешить параметры с именами
WindowsRegistryFinder
иMetaPathFinder
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-8243: Добавьте примечание о поведении исключений curses.addch и curses.addstr при записи за пределами окна или блокнота.
bpo-31432: Уточните значение флагов CERT_NONE, CERT_OPTIONAL и CERT_REQUIRED для ssl.SSLContext.verify_mode.
Тесты¶
Построить¶
bpo-5755: Разрешить параметры с именами
-Wstrict-prototypes
иCFLAGS_NODIST
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-33614: Обеспечивает правильную регенерацию файлов определения модулей для стабильного ABI в Windows.
bpo-33522: Включите сборки CI в Visual Studio Team Services по адресу https://python.visualstudio.com/cpython.
bpo-33012: Добавьте
-Wno-cast-function-type
для gcc 8 для отключения предупреждений о приведении функций к PyCFunction в списках определений методов.bpo-33394: Включает подробную сборку для модулей расширения, когда GNU make передаются макросы в командной строке.
Windows¶
bpo-33184: Update Windows installer to OpenSSL 1.0.2o.
macOS¶
bpo-33184: Update macOS installer build to use OpenSSL 1.0.2o.
IDLE¶
bpo-33656: В Windows добавьте вызов API, сообщающий, что tk масштабируется с учетом DPI. В Windows 8.1+ или 10, при неизменных свойствах DPI-совместимости бинарного файла Python и разрешении монитора более 96 DPI, это должно сделать текст и линии более четкими. В остальных случаях это не должно иметь никакого эффекта.
bpo-33768: Щелчок по контекстной строке перемещает эту строку в верхнюю часть окна редактора.
bpo-33763: IDLE: Используйте текстовый виджет, доступный только для чтения, для контекста кода вместо виджета метки.
bpo-33664: Прокрутка текста редактора IDLE по строкам. Ранее колесо мыши и ползунок полосы прокрутки перемещали текст на фиксированное количество пикселей, что приводило к неполным строкам в верхней части окна редактора. Это изменение также применяется к окнам вывода shell и grep, но не к представлениям текста только для чтения.
bpo-33679: Включить настройку цвета для контекста кода в зависимости от темы. Используйте вкладку «Основные моменты», чтобы посмотреть настройки для встроенных тем или добавить настройки в пользовательские темы.
bpo-33642: Отображение до maxlines непустых строк для контекста кода. Если текущий контекст отсутствует, отображается одна пустая строка.
bpo-33628: IDLE: Очистка файла codecontext.py и его теста.
bpo-33564: Контекст кода IDLE теперь распознает async как открывающий блок.
bpo-29706: IDLE now colors async and await as keywords in 3.6. They become full keywords in 3.7.
bpo-21474: Обновление определения слова/идентификатора с ascii на unicode. В текстовых полях и полях ввода это влияет на выделение двойным щелчком мыши, перемещение влево/вправо с помощью Control-left/right и удаление влево/вправо с помощью Control-BACKSPACE/DEL.
bpo-33204: IDLE: постоянно окрашивает недопустимые строковые префиксы. Строковый префикс „u“ не может быть сопряжен ни с „r“, ни с „f“. Последовательно закрашивайте столько префиксов, начиная с правого, сколько допустимо. Пересмотрите и расширьте тест колоризатора.
bpo-32831: Добавьте документацию и тесты для codecontext.
Инструменты/демоверсии¶
bpo-33189: pygettext.py теперь распознает только литеральные строки в качестве документальных строк и переводимых строк и отвергает байтовые литералы и выражения f-строк.
bpo-31920: Исправлена работа с каталогами в качестве аргументов в скрипте
pygettext
. Основано на патче Олега Красникова.bpo-29673: Исправьте макросы pystackv и pystack gdbinit.
bpo-32885: Разрешить параметры с именами
-n
иTools/scripts/pathfix.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31583: Исправление 2to3 для использования с опцией –add-suffix, но без опции –output-dir для относительного пути к файлам в текущем каталоге.
C API¶
bpo-32374: Документируйте, что m_traverse для многофазных инициализированных модулей может вызываться с m_state=NULL, и добавьте проверку на вменяемость
Python 3.6.5 final¶
Release date: 2018-03-28
Тесты¶
bpo-32872: Избежать проблемы совместимости regrtest с пакетами пространства имен.
Построить¶
bpo-33163: Обновите pip до версии 9.0.3 и setuptools до версии 39.0.1.
Python 3.6.5 release candidate 1¶
Release date: 2018-03-13
Безопасность¶
bpo-33001: Минимальное исправление для предотвращения выхода за пределы буфера в os.symlink на Windows
bpo-32981: Разрешить параметры с именами CVE-2018-1060 и CVE-2018-1061 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-33026: Исправлено выскакивание из блока «с» при установке f_lineno.
bpo-17288: Предотвращение переходов из событий трассировки „return“ и „exception“.
bpo-32889: Разрешить параметры с именами
Py_ADDRESS_IN_RANG
иaddress_in_range
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32650: Pdb и другие отладчики, зависящие от bdb.py, будут корректно перешагивать через (следующую команду) нативные корутины. Исправление от Pablo Galindo.
bpo-32685: Улучшение предложения, когда Python 2 форма оператора print либо присутствует в той же строке, что и заголовок составного оператора, либо завершается точкой с запятой вместо новой строки. Исправление Нитиша Чандры.
bpo-32583: Исправление возможного падения встроенных декодеров Unicode, вызванного ошибками записи за пределы границ при использовании настраиваемых обработчиков ошибок декодирования.
bpo-26163: Улучшен хэш frozenset() для создания более четких значений хэша при работе с наборами данных, содержащими много похожих значений.
bpo-27169: Разрешить параметры с именами
__debug__
и bpo-22091 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32329: Разрешить параметры с именами
sys.flags.hash_randomization
иPYTHONHASHSEED=0
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30416: The optimizer is now protected from spending much time doing complex calculations and consuming much memory for creating large constants in constant folding.
bpo-18533: Разрешить параметры с именами
repr()
иvalues()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32028: Ведущие пробельные символы теперь корректно игнорируются при генерации предложений по преобразованию операторов печати Py2 в вызовы встроенных функций печати Py3. Исправление от Sanyam Khurana.
bpo-32137: При выполнении repr глубоко вложенных dict теперь возникает ошибка RecursionError, а не аварийное завершение работы из-за переполнения стека.
Библиотека¶
bpo-33064: Разрешить параметры с именами
*args
и**kwargs
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31804: Избегайте сбоев в multiprocessing.Process, если стандартные потоки закрыты или отсутствуют при выходе.
bpo-33037: Пропускать отправку/получение данных после закрытия транспорта SSL.
bpo-30353: Fix ctypes pass-by-value for structs on 64-bit Cygwin/MinGW.
bpo-33009: Исправьте inspect.signature() для однопараметрических partialmethods.
bpo-32969: Раскрытие нескольких отсутствующих констант в zlib и исправление соответствующей документации.
bpo-32713: Исправлена работа tarfile.itn с выходящими за границы плавающими значениями. Автор исправления - Джоффри Фюрер.
bpo-30622: Модуль ssl теперь обнаруживает отсутствие поддержки NPN в LibreSSL.
bpo-32922: dbm.open() теперь кодирует имя файла кодировкой файловой системы, а не кодировкой по умолчанию.
bpo-32859: Разрешить параметры с именами
os.dup2
иdup3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21060: Перепишите сбивающее с толку сообщение из setup.py upload с «No dist file created in earlier command» на более полезное «Must create and upload files in one command».
bpo-32857: Разрешить параметры с именами
tkinter
иafter_cancel(None)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32852: Убедитесь, что sys.argv остается в виде списка при выполнении трассировки.
bpo-32841: Исправлена проблема
asyncio.Condition
, из-за которой после уведомления и отмены условной блокировки отмена молча игнорировалась. Исправление от Bar Harel.bpo-31787: Исправлены утечки методов
__init__()
в различных модулях. (Внесено Ореном Милманом)bpo-30157: Исправлено угадывание кавычек и разделителя в csv.Sniffer.sniff(), когда только последнее поле заключено в кавычки. Исправление от Джейка Дэвиса.
bpo-32394: socket: Remove TCP_FASTOPEN, TCP_KEEPCNT flags on older version Windows during run-time.
bpo-32777: Исправление редкого, но потенциально возможного тупика дочернего процесса preexec в подпроцессе на POSIX-системах при пометке дескрипторов файлов, наследуемых при exec в дочернем процессе. Эта ошибка, похоже, появилась в версии 3.4.
bpo-32647: Модуль ctypes раньше зависел от косвенной линковки для dlopen. Теперь разделяемое расширение явно связывается с libdl на платформах с dl.
bpo-32734: Исправлена проблема безопасности
asyncio.Lock()
, из-за которой один и тот же замок можно было получить и заблокировать несколько раз, не освобождая его. Исправление от Bar Harel.bpo-32727: Не включать поле имени в SMTP-конверт с адреса. Исправление от Стефана Виртела
bpo-27931: Исправление ошибки разбора заголовка адреса электронной почты, когда имя пользователя представляет собой пустую строку с кавычками. Исправление от Xiang Zhang.
bpo-32304: команда загрузки distutils больше не повреждает tar-файлы, заканчивающиеся байтом CR, и больше не пытается преобразовать CR в CRLF в любом из текстовых полей загрузки.
bpo-32502: uuid.uuid1 больше не вызывает исключение, если встречается 64-битный аппаратный адрес.
bpo-31848: Исправьте обработку ошибок в Aifc_read.initfp(), когда чанк SSND не был найден. Исправление от Zackery Spytz.
bpo-32555: On FreeBSD and Solaris, os.strerror() now always decode the byte string from the current locale encoding, rather than using ASCII/surrogateescape in some cases.
bpo-32521: Модуль nis теперь совместим с новым расположением libnsl и headers.
bpo-32473: Улучшение читаемости вывода ABCMeta._dump_registry()
bpo-32521: glibc удалил Sun RPC. Используйте заменяющие заголовки и библиотеку libtirpc в модуле nis.
bpo-32228: Разрешить параметры с именами
truncate()
иtell()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26133: Не отписывать сигналы в цикле событий asyncio UNIX при выключении интерпретатора.
bpo-32185: The SSL module no longer sends IP addresses in SNI TLS extension on platforms with OpenSSL 1.0.2+ or inet_pton.
bpo-32323:
urllib.parse.urlsplit()
теперь не преобразует идентификатор зоны (scope) в нижний регистр для скопированных IPv6-адресов в именах хостов.bpo-32302: Исправьте bdist_wininst в distutils для CRT v142: он бинарно совместим с CRT v140.
bpo-32255: Одиночное пустое поле теперь всегда берется в кавычки при записи в CSV-файл. Это позволяет отличить пустую строку от строки, состоящей из одного пустого поля. Исправление Лихта Такеучи.
bpo-32277: Разрешить параметры с именами
NotImplementedError
иSystemError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32199: В геттере ip getnode() теперь используется „ip link“ вместо „ip link list“.
bpo-27456: Убедитесь, что TCP_NODELAY установлен в Linux. Проверено Виктором Стиннером.
bpo-31900: Разрешить параметры с именами
locale.localeconv()
иLC_CTYPE
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31802: Разрешить параметры с именами
posixpath
иntpath
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Документация¶
bpo-17232: Уточнение документации для -O и -OO. Исправление Терри Риди.
bpo-32800: Обновление ссылки на w3c doc для стандартных пространств имен xml.
bpo-8722: Разрешить параметры с именами
__getattr__()
иget()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32614: Измените примеры RE в документации, чтобы использовать необработанные строки для предотвращения
DeprecationWarning
, и добавьте текст в REGEX HOWTO, чтобы подчеркнуть это ухудшение.bpo-31972: Улучшите документацию для подклассов
pathlib.PurePath
.bpo-17799: Объясните реальное поведение sys.settrace и sys.setprofile и их C-API аналогов относительно того, какой тип событий принимается в каждой функции. Исправление от Pablo Galindo Salgado.
Тесты¶
bpo-32517: Разрешить параметры с именами
test_asyncio
иKqueueSelector
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32721: Исправьте test_hashlib, чтобы он не выходил из строя, если модуль _md5 не собран.
bpo-32252: Исправлена функция faulthandler_suppress_crash_report(), используемая для предотвращения создания дампов ядра при тестировании аварий. getrlimit() возвращает ноль в случае успеха.
bpo-31518: Debian Unstable has disabled TLS 1.0 and 1.1 for SSLv23_METHOD(). Change TLS/SSL protocol of some tests to PROTOCOL_TLS or PROTOCOL_TLSv1_2 to make them pass on Debian.
Построить¶
bpo-32635: Исправление segfault модуля crypt, когда в системе вместо libcrypt предоставляется libxcrypt.
Windows¶
bpo-33016: Исправьте потенциальное использование неинициализированной памяти в nt._getfinalpathname
bpo-32903: Исправление утечки памяти в os.chdir() в Windows, если текущий каталог задан как UNC-путь.
bpo-31966: Исправлена ошибка WindowsConsoleIO.write() для записи пустых данных.
bpo-32409: Убедитесь, что activate.bat может обрабатывать содержимое Unicode.
bpo-32457: Улучшена обработка денормализованного пути к исполняемому файлу при запуске Python.
bpo-32370: Используйте правильную кодировку для вывода ipconfig в модуле uuid. Исправление от Segev Finer.
bpo-29248: Разрешить параметры с именами
os.readlink()
иPrintNameOffset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32588: Create standalone _distutils_findvs module.
macOS¶
bpo-32726: Provide an additional, more modern macOS installer variant that supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied third-party libraries to OpenSSL 1.0.2n, XZ 5.2.3, and SQLite 3.22.0. The 10.9+ installer now links with and supplies its own copy of Tcl/Tk 8.6.8.
IDLE¶
bpo-32984: Разрешить параметры с именами
__file__
и-s
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32940: Упрощение и переименование StringTranslatePseudoMapping в pyparse.
bpo-32916: Разрешить параметры с именами
str
иcode
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32905: Удалите неиспользуемый код в модуле pyparse.
bpo-32874: Добавьте тесты для pyparse.
bpo-32837: Использование системной и зависящей от места кодировки по умолчанию для open() - плохая идея для системных и зависящих от места файлов IDLE.
bpo-32826: Добавьте «encoding=utf-8» к open() в test_help_about IDLE. GUI-тест test_file_buttons() просматривает только начальные строки с кодировкой ascii-only, но не работает на системах, где open() по умолчанию имеет значение „ascii“, потому что readline() внутренне читает и декодирует достаточно далеко вперед, чтобы встретить не-ascii символ в CREDITS.txt.
bpo-32765: Обновление документальной строки вкладки «Общие» в configdialog для добавления новых виджетов в список виджетов.
Инструменты/демоверсии¶
bpo-24960: 2to3 и lib2to3 теперь могут читать файлы с пикированными грамматиками, используя pkgutil.get_data(), а не прощупывая файловую систему. Это позволяет 2to3 и lib2to3 работать при запуске из zip-файла.
bpo-32222: Исправление того, что pygettext не извлекал документальные строки для функций с аргументами, аннотированными типом. Исправление Тоби Харрадайна.
C API¶
bpo-29084: Недокументированный C API для OrderedDict был исключен из ограниченного C API. Он был добавлен по ошибке и фактически никогда не работал в ограниченном C API.
Python 3.6.4 final¶
Release date: 2017-12-18
There were no new code changes in version 3.6.4 since v3.6.4rc1.
Python 3.6.4 release candidate 1¶
Дата выхода: 2017-12-05
Ядро и встроенные модули¶
bpo-32176: co_flags.CO_NOFREE теперь всегда корректно устанавливается конструктором объекта кода на основе freevars и cellvars, а не требует корректной установки вызывающей стороной. Это гарантирует, что он будет автоматически очищен, когда в модифицированный объект кода и функцию будут внедрены дополнительные ссылки на ячейки.
bpo-31949: Исправлено несколько проблем с печатью трассировок (PyTraceBack_Print()). Установка sys.tracebacklimit в 0 или меньше теперь подавляет печать трассировок. Установка sys.tracebacklimit в None теперь приводит к использованию лимита по умолчанию. Установка sys.tracebacklimit в целое число, большее LONG_MAX, теперь означает использование ограничения LONG_MAX, а не ограничения по умолчанию. Исправлено целочисленное переполнение в случае более чем
2**31
элементов трассировки на Windows. Исправлена обработка ошибок вывода.bpo-30696: Исправление бесконечного зацикливания интерактивного интерпретатора при отсутствии памяти.
bpo-20047: Методы Bytearray partition() и rpartition() теперь принимают в качестве разделителя только байтоподобные объекты, как это и задокументировано. В частности, они теперь выдают ошибку TypeError, а не возвращают ложный результат, если в качестве разделителя передано целое число.
bpo-31852: Fix a segmentation fault caused by a combination of the async soft keyword and continuation lines.
bpo-21720: Разрешить параметры с именами
__import__()
и__all__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31825: Исправлена ошибка переполнения в кодеке „unicode-escape“ и в codecs.escape_decode() при декодировании экранированного неасквидного байта.
bpo-28603: Выводить полную цепочку контекста/причины исключений при выходе из интерпретатора, даже если исключение в цепочке является нехешируемым или сравнивается с более поздними. Исправление Зейна Биттера.
bpo-31786: Исправлено округление таймаута в модуле select для корректного округления отрицательных таймаутов между -1.0 и 0.0. Теперь функции блокируют ожидание событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Исправление от Пабло Галиндо.
bpo-31642: Восстановили блокировку «from package import module», установив для sys.modules[«package.module»] значение None.
bpo-31626: Исправлена ошибка в отладочном аллокаторе памяти. После уменьшения блока памяти происходила запись в освобожденную память.
bpo-31619: Исправлена ошибка ValueError при преобразовании строки с большим количеством символов подчеркивания в целое число с двоичной основой.
bpo-31592: Исправлен сбой утверждения в парсере Python в случае плохого
unicodedata.normalize()
. Исправление от Орена Милмана.bpo-31588: Разрешить параметры с именами
TypeError
и__prepare__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31566: Разрешить параметры с именами
_warnings.warn()
и__name__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31505: Разрешить параметры с именами
json
и_json.make_encoder()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31492: Исправление ошибок утверждения в случае невозможности импорта из модуля с плохим атрибутом
__name__
, а также в случае невозможности доступа к атрибуту такого модуля. Исправление от Орена Милмана.bpo-31490: Разрешить параметры с именами
ctypes
и_anonymous_
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31478: Разрешить параметры с именами
_random.Random.seed()
и__abs__()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31315: Исправление ошибки утверждения в imp.create_dynamic(), когда spec.name не является строкой. Исправление от Орена Милмана.
bpo-31311: Разрешить параметры с именами
__setstate__()
иctypes._CData
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31293: Исправление сбоев при истинном делении и умножении объекта timedelta на float с плохим методом as_integer_ratio(). Исправление от Орена Милмана.
bpo-31285: Разрешить параметры с именами
warnings.warn_explicit
иget_source()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30817: Разрешить параметры с именами
PyErr_PrintEx()
и_PySys_SetObjectId()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-28556: Разрешить параметры с именами
typing
и__init_subclass__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27240: Разрешить параметры с именами bpo-30788 и bpo-31831 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-32186: io.FileIO.readall() и io.FileIO.read() теперь освобождают GIL при получении размера файла. Исправлено зависание всех потоков при недоступном NFS-сервере. Исправление Нира Соффера.
bpo-12239: Разрешить параметры с именами
msilib.SummaryInformation.GetProperty()
иNone
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31325: Разрешить параметры с именами
collections.namedtuple()
иRobotFileParser.parse()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-12382:
msilib.OpenDatabase()
теперь выдает лучшее сообщение об исключении, если не удалось открыть или создать файл MSI. Первоначальный патч от Уильяма Тизера.bpo-32110: Разрешить параметры с именами
codecs.StreamReader.read(n)
иread()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-32072: Исправлены проблемы с бинарными списками: Исправлено сохранение байтовых массивов. Идентичные объекты будут сохраняться только один раз. Равные ссылки будут загружаться как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.
bpo-32034: Сделайте asyncio.IncompleteReadError и LimitOverrunError pickleable.
bpo-32015: Исправлено зацикливание asyncio в случае переподключения сокета во время ожидания асинхронного чтения/записи из/в сокет.
bpo-32011: Восстановлена поддержка загрузки маршаловых файлов с кодом TYPE_INT64. Эти файлы могут быть созданы в Python 2.7.
bpo-31970: Снижение накладных расходов на производительность режима отладки asyncio.
bpo-9678: Исправлено определение MAC-адреса в модуле uuid: Использование ifconfig в NetBSD и OpenBSD. Использование arp в Linux, FreeBSD, NetBSD и OpenBSD. Основано на исправлении Такаюки Шимизукавы.
bpo-30057: Исправьте потенциальный пропущенный сигнал в signal.signal().
bpo-31933: Исправление параметров Blake2 leaf_size и node_offset на платформах с большим эндианом. Исправление от Джека О’Коннора.
bpo-31927: Исправлена компиляция модуля сокетов на NetBSD 8. Исправлен сбой утверждения или чтение произвольных данных при разборе адреса AF_BLUETOOTH на NetBSD и DragonFly BSD.
bpo-27666: Исправлено повреждение стека в curses.box() и curses.ungetmouse(), когда размер типов chtype или mmask_t меньше размера C long. curses.box() теперь принимает символы в качестве аргументов. Основано на исправлении Стива Финка.
bpo-31897: plistlib теперь отлавливает больше ошибок при чтении бинарных списков и поднимает InvalidFileException вместо неожиданных исключений.
bpo-25720: Исправление метода проверки состояния прокладки curses WINDOW. Исправление от Масаюки Ямамото.
bpo-31893: Исправлено расположение структуры kqueue_event на OpenBSD и NetBSD. Исправлено сравнение объектов kqueue_event.
bpo-31891: Исправлена сборка модуля curses на NetBSD.
bpo-28416: Экземпляры подкласса pickle.Pickler с методом persistent_id() и подкласса pickle.Unpickler с методом persistent_load() больше не создают циклов ссылок.
bpo-28326: Исправьте multiprocessing.Process, когда stdout и/или stderr закрыты или None.
bpo-31457: Если используются вложенные адаптеры журналов, внутренние методы
process()
больше не опускаются.bpo-31457: Свойство
manager
в объектах LoggerAdapter теперь правильно задается.bpo-31806: Исправлено округление таймаута в time.sleep(), threading.Lock.acquire() и socket.socket.settimeout() для корректного округления отрицательных таймаутов от -1.0 до 0.0. Теперь функции блокируют ожидание событий, как и ожидалось. Ранее вызов был некорректно неблокирующим. Автор исправления - Пабло Галиндо.
bpo-28603: traceback: Исправление ошибки TypeError, возникавшей при печати трассировки исключений, когда либо текущее исключение, либо исключение в его контексте/цепочке причин было нехешируемым. Исправление Зейна Биттера.
bpo-30058: Исправлено переполнение буфера в select.kqueue.control().
bpo-31770: Разрешить параметры с именами
__init__()
иsqlite3.Cursor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31672: Разрешить параметры с именами
idpattern
иstring.Template
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31764: Разрешить параметры с именами
sqlite3.Cursor.close()
иCursor
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31752: Исправление возможного сбоя в конструкторе timedelta, вызываемом с пользовательскими целыми числами.
bpo-31701: В Windows функция faulthandler.enable() теперь игнорирует исключения MSC и COM.
bpo-31728: Разрешить параметры с именами
_elementtree
иElement.text
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31620: пустая очередь asyncio.Queue теперь не сливает память при таймауте queue.get pollers
bpo-31632: Исправьте метод set_protocol() класса _SSLProtocolTransport в модуле asyncio. Ранее этот метод изменял неверную ссылку на протокол.
bpo-31675: Исправлена утечка памяти в методах Tkinter splitlist() и split() при передаче строки размером более 2 ГБ.
bpo-31673: Исправлена опечатка в названии метода Tkinter adderrorinfo().
bpo-30806: Исправьте строковое представление объекта netrc.
bpo-15037: Добавлено обходное решение для getkey() в curses для ncurses 5.7 и более ранних версий.
bpo-25351: Избегайте сбоев при активации venv с неопределенными переменными
bpo-25532: inspect.unwrap() will now only try to unwrap an object sys.getrecursionlimit() times, to protect against objects which create a new object on every attribute access.
bpo-30347: Прекращение сбоев при одновременном выполнении итераций над итераторами itertools.groupby().
bpo-31516:
threading.current_thread()
не должен возвращать фиктивный поток при завершении работы.bpo-31351: python -m ensurepip теперь завершается с ненулевым кодом выхода, если загрузка pip завершилась неудачно.
bpo-31482:
random.seed()
теперь работает с байтами в версии=1bpo-31334: Разрешить параметры с именами
poll.poll([timeout])
иselect
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31310: семафорный трекер мультипроцессора должен быть запущен снова в случае сбоя.
bpo-31308: Сделайте многопроцессорный процесс forkserver невосприимчивым к Ctrl-C и другим прерываниям пользователя. Если он падает, перезапустите его при необходимости.
Документация¶
bpo-32105: Добавлен маркер asyncio.BaseEventLoop.connect_accepted_socket versionadded.
bpo-31537: Исправьте неправильное использование
get_history_length
в примере примера документации readline. Исправление от Брэда Смита.bpo-30085: Операторные функции без двойного подчеркивания предпочтительнее для наглядности. Те, что с подчеркиванием, сохраняются только для обратной совместимости.
Тесты¶
bpo-31380: Пропустить test_httpservers test_undecodable_file на macOS: не удается на APFS.
bpo-31705: Пропустите test_socket.test_sha256() на ядре Linux старше 4.5. Тест не проходит с ENOKEY на ядре 3.10 (на ppc64le). Исправление было добавлено в ядро 4.5.
bpo-31174: Исправьте test_tools.test_unparse: DirectoryTestCase теперь сохраняет выборку имен, чтобы всегда проверять одни и те же файлы. Это предотвращает ложные срабатывания при поиске утечек ссылок.
bpo-30695: Разрешить параметры с именами
set_nomemory(start, stop)
иremove_mem_hooks()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-32059: Разрешить параметры с именами
detect_modules()
иsetup.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31957: Исправлено определение версии Windows SDK при сборке под Windows.
bpo-31609: Исправляет кавычки в файле PCbuild/clean.bat
bpo-31934: Прерывает сборку при сборке из нечистого дерева исходных текстов.
bpo-31926: Исправлена ошибка Argument Clinic, иногда вызывавшая ошибки компиляции, когда в .c-файле было более одной функции и/или метода с одинаковым именем.
bpo-28791: Обновите сборки Windows для использования SQLite 3.21.0.
bpo-28791: Обновите программу установки OS X для использования SQLite 3.21.0.
bpo-22140: Предотвращение двойной подстановки префикса в python-config.sh.
bpo-31536: Избегайте оптовой перестройки после
make regen-all
, если ничего не изменилось.
Windows¶
macOS¶
bpo-31392: Обновление программы установки macOS для использования OpenSSL 1.0.2m
IDLE¶
bpo-32207: Улучшение трассировки исключений событий tk в IDLE. Когда обработка событий tk управляется циклом выполнения IDLE, контекст queue.EMPTY больше не добавляется к трассировкам исключений tk. Возврат к трассировке теперь такой же, как и при обработке событий пользовательским кодом. Исправление основано на предложении Сергея Сторчака.
bpo-32164: Удалите неиспользуемый файл idlelib/tabbedpages.py. Использование TabbedPageSet в configdialog было заменено на ttk.Notebook.
bpo-32100: IDLE: Исправление старых и новых ошибок в pathbrowser; улучшение тестов. Патч в основном разработан Шерил Сабелла.
bpo-31858: IDLE – Ограничивает манипуляции с приглашениями оболочки только оболочкой. Окна редактора и вывода видят только пустую последнюю строку подсказки. Это упрощает код и исправляет небольшую ошибку при вставке новой строки. Sys.ps1, если он присутствует, считывается при запуске оболочки, но не устанавливается и не изменяется.
bpo-31860: Образец шрифта в диалоге конфигурации IDLE теперь можно редактировать. Изменения сохраняются, пока IDLE остается открытым
bpo-31836: Test_code_module теперь проходит, если запущен после test_idle, который устанавливает ps1. Модуль кода использует sys.ps1, если он есть, или устанавливает его в „>>> „, если его нет. Test_code_module теперь правильно проверяет оба поведения. То же самое касается ps2.
bpo-28603: Исправление ошибки TypeError, которая приводила к перезапуску оболочки при печати трассировки, включающей исключение, которое невозможно хэшировать. Исправление от Зейна Биттера.
bpo-13802: Use non-Latin characters in the IDLE’s Font settings sample. Even if one selects a font that defines a limited subset of the unicode Basic Multilingual Plane, tcl/tk will use other fonts that define a character. The expanded example give users of non-Latin characters a better idea of what they might see in IDLE’s shell and editors. To make room for the expanded sample, frames on the Font tab are re-arranged. The Font/Tabs help explains a bit about the additions.
bpo-31460: Упрощение API браузера модулей IDLE. Передача виджета вместо flist с корневым виджетом открывает возможность создания фрейма браузера, который является только частью окна. Передача полного имени файла вместо фрагментов, которые, как предполагается, происходят из файла .py, открывает возможность просмотра файлов python, которые не заканчиваются на .py.
bpo-31649: IDLE - Сделайте параметры _htest, _utest только ключевыми.
bpo-31559: Удалите зависимость от порядка выполнения теста в idle_test.test_browser.
bpo-31459: Переименование браузера модулей IDLE из Class Browser в Module Browser. Первоначальный браузер классов и методов на уровне модулей стал браузером модулей с добавлением функций на уровне модулей много лет назад. Вложенные классы и функции были добавлены вчера. Для обратной совместимости виртуальное событие <<open-class-browser>>, которое отображается на вкладке Keys диалога Settings, не изменяется. Исправление от Шерил Сабелла.
bpo-31500: Шрифты по умолчанию теперь масштабируются на дисплеях HiDPI.
bpo-1612262: Браузер модулей IDLE теперь показывает вложенные классы и функции. Оригинальные исправления кода и тестов от Гильерме Поло и Шерил Сабелла, соответственно.
Инструменты/демоверсии¶
bpo-30722: Заставьте redemo работать с Python 3.6 и более новыми версиями. Также удалите опцию
LOCALE
, так как она не работает со строковыми шаблонами в Python 3. Исправление Кристофа Сарновски.
C API¶
bpo-20891: Исправьте PyGILState_Ensure(). Если PyGILState_Ensure() вызывается в не-Python потоке до PyEval_InitThreads(), вызывайте PyEval_InitThreads() только после вызова PyThreadState_New(), чтобы исправить падение.
bpo-31532: Исправление повреждения памяти из-за смешения аллокаторов в getpath.c между Py_GetPath() и Py_SetPath()
bpo-30697: Разрешить параметры с именами
PyExc_RecursionErrorInst
иPyErr_NormalizeException()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.6.3 final¶
Release date: 2017-10-03
Библиотека¶
bpo-31641: Re-allow arbitrary iterables in
concurrent.futures.as_completed()
. Fixes regression in 3.6.3rc1.
Построить¶
Python 3.6.3 release candidate 1¶
Release date: 2017-09-18
Безопасность¶
Ядро и встроенные модули¶
bpo-31471: Разрешить параметры с именами
subprocess.Popen()
иkeys()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31418: Разрешить параметры с именами
PyErr_WriteUnraisable()
и__module__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31416: Исправление ошибок утверждения в случае неверных warnings.filters или warnings.defaultaction. Исправление от Орена Милмана.
bpo-31411: Вызывать ошибку TypeError вместо SystemError в случае, если warnings.onceregistry не является словарем. Исправление от Орена Милмана.
bpo-31373: Исправление нескольких возможных случаев неопределенного поведения из-за понижения плавающей точки.
bpo-30465: Разрешить параметры с именами
lineno
иcol_offset
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31343: Включите в sys/sysmacros.h функции major(), minor() и makedev(). Библиотека GNU C планирует удалить эти функции из sys/types.h.
bpo-31291: Разрешить параметры с именами
zipimport.zipimporter.get_data
иpathname.replace('/','\\')
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31271: Разрешить параметры с именами
write()
иio.TextIOWrapper
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31243: Исправление сбоя в некоторых методах
io.TextIOWrapper
, когда состояние декодера недействительно. Исправление от Орена Милмана.bpo-30721:
print
теперь показывает правильную подсказку для использования синтаксиса перенаправления в Python 2. Исправление от Sanyam Khurana.bpo-31070: Исправление состояния гонки в importlib _get_module_lock().
bpo-31095: Разрешить параметры с именами
tp_dealloc
иPyObject_GC_UnTrack()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31071: Избегайте маскировки исходной ошибки TypeError в вызове с * распаковкой, когда передаются другие аргументы.
bpo-30978: str.format_map() теперь пропускает исключения поиска ключей. Ранее любое исключение заменялось исключением KeyError.
bpo-30808: Используйте _Py_atomic API для чувствительного к параллелизму состояния сигнала.
bpo-30876: Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо ошибки SystemError. Относительный импорт из непакета теперь завершается с ошибкой ImportError, а не SystemError.
bpo-30703: Улучшение доставки сигналов. Избегайте использования Py_AddPendingCall из обработчика сигналов, чтобы избежать вызова функций, небезопасных для сигналов. Тесты, которые я добавляю сюда, не работают без остальных патчей на Linux и OS X. Это означает, что наша логика доставки сигналов имеет дефекты (некоторые сигналы могут быть потеряны).
bpo-30765: Избегайте блокировки в pthread_mutex_lock(), когда PyThread_acquire_lock() просят не блокировать.
bpo-31161: Убедитесь, что сообщение об ошибке синтаксиса „Missing parenthes“ применяется только к SyntaxError, а не к подклассам. Исправление от Martijn Pieters.
bpo-30814: Исправлено состояние гонки при импорте подмодуля из пакета.
bpo-30597:
print
теперь показывает ожидаемый ввод в пользовательском сообщении об ошибке, когда используется в качестве оператора Python 2. Исправление от Sanyam Khurana.
Библиотека¶
bpo-31499: xml.etree: Исправление сбоя, когда парсер является частью цикла ссылок.
bpo-28556: typing.get_type_hints теперь по умолчанию находит нужные глобалы для классов и модулей (если вызывающая сторона не указала
globalns
).bpo-28556: Улучшение скорости работы модуля
typing
. Оригинальные PR Ивана Левкивского и Митара.bpo-31544: Модуль C-ускорителя ElementTree игнорировал исключения, возникающие при поиске целевых методов TreeBuilder в XMLParser().
bpo-31234: socket.create_connection() теперь вручную исправляет цикл ссылок: очищает переменную, хранящую последнее исключение при успехе.
bpo-31457: Объекты LoggerAdapter теперь могут быть вложенными.
bpo-31400: Улучшена обработка ошибок SSL, чтобы избежать потери номеров ошибок.
bpo-28958: ssl.SSLContext() теперь использует информацию об ошибке OpenSSL, когда контекст не может быть создан.
bpo-27340: SSLSocket.sendall() теперь использует memoryview для создания фрагментов данных. Это исправляет поддержку всех байтоподобных объектов. Это также более эффективно и позволяет избежать дорогостоящих копий.
bpo-31178: Исправление ошибки конкатенации строк в редком пути ошибки в модуле подпроцесса
bpo-31350: Микрооптимизируйте
asyncio._get_running_loop()
, чтобы он стал на 10% быстрее.bpo-31170: expat: Обновление libexpat с 2.2.3 до 2.2.4. Исправление копирования частичных символов для ввода UTF-8 (ошибка 115 в libexpat): https://github.com/libexpat/libexpat/issues/115.
bpo-29136: Добавьте наборы шифров TLS 1.3 и OP_NO_TLSv1_3.
bpo-29212: Исправьте потоки concurrent.futures.thread.ThreadPoolExecutor, чтобы они по умолчанию имели имя потока, не основанное на repr(), когда не указан префикс thread_name_prefix. Теперь они будут идентифицировать себя как «ThreadPoolExecutor-y_n».
bpo-9146: Исправление ошибки сегментации в _hashopenssl, когда стандартные хэш-функции, такие как md5, недоступны в подключенной библиотеке OpenSSL. Как в некоторых специальных средах сборки FIPS-140.
bpo-27144: Разрешить параметры с именами
map()
иas_completed()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-10746: Исправление ctypes, выдающего неверные коды типов PEP 3118 для целочисленных типов.
bpo-22536: Модуль подпроцесса теперь устанавливает имя файла, когда на POSIX-системах возникает ошибка FileNotFoundError, связанная с тем, что исполняемый файл или cwd не найдены.
bpo-31249: concurrent.futures: WorkItem.run(), используемый ThreadPoolExecutor, теперь разрывает цикл ссылок между объектом исключения и объектом WorkItem.
bpo-31247: xmlrpc.server теперь явно разрывает циклы ссылок при использовании sys.exc_info() в коде, обрабатывающем исключения.
bpo-30102: Модули ssl и hashlib теперь вызывают OPENSSL_add_all_algorithms_noconf() на OpenSSL < 1.1.0. Функция определяет особенности процессора и включает оптимизацию на некоторых процессорных архитектурах, таких как POWER8. Патч основан на исследованиях Густаво Серра Скалета.
bpo-31185: Исправлены различные ошибки в модуле ускорения asyncio.
bpo-31135: ttk: исправьте метод destroy() классов LabeledScale и OptionMenu. Вызывает родительский метод destroy(), даже если используемый атрибут не существует. Метод LabeledScale.destroy() теперь также явно очищает атрибуты label и scale, чтобы помочь сборщику мусора уничтожить все виджеты.
bpo-31107: Исправление
copyreg._slotnames()
искаженного вычисления атрибутов для классов, чье имя начинается с подчеркивания. Исправление от Shane Harvey.bpo-31061: Исправлено падение при использовании asyncio и потоков.
bpo-30502: Исправление обработки длинных оидов в ssl. Основано на патче Кристиана Хаймса.
bpo-30119: ftplib.FTP.putline() теперь выбрасывает ошибку ValueError на команды, содержащие CR или LF. Исправление от Donghee Na.
bpo-30595: multiprocessing.Queue.get() с таймаутом теперь опрашивает своего читателя в неблокирующем режиме, если ему удалось получить блокировку, но получение заняло больше времени, чем таймаут.
bpo-29403: Исправьте autospec
unittest.mock
, чтобы он не ошибался при использовании встроенных функций с привязкой к методу. Исправление Аарона Галлахера.bpo-30961: Исправление декрементирования заимствованной ссылки в tracemalloc.
bpo-25684: Разрешить параметры с именами
ttk.OptionMenu
иOptionMenu
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30886: Исправьте multiprocessing.Queue.join_thread(): теперь он ожидает завершения потока, даже если поток был запущен тем же процессом, который создал очередь.
bpo-29854: Исправление segfault в readline при использовании опции readline’s history-size. Исправление Нира Соффера.
bpo-30319: socket.close() теперь игнорирует ошибку ECONNRESET.
bpo-30828: Исправьте запредельную запись в
asyncio.CFuture.remove_done_callback()
.bpo-30807: signal.setitimer() может отключить таймер при передаче крошечного значения. Крошечные значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), которая задана как принимающая интервалы с микросекундным разрешением. Однако на некоторых платформах наша процедура преобразования может превратить 1e-6 в нулевой интервал, тем самым отключив таймер вместо того, чтобы (повторно) запланировать его.
bpo-30441: Исправление ошибки при изменении os.environ во время итерации по нему
bpo-30532: Исправление парсера значений заголовков электронной почты, удаляющего пробелы при складывании в некоторых случаях.
bpo-30879: os.listdir() и os.scandir() теперь выдают имена байтов при вызове с аргументом типа bytes.
bpo-30746: Разрешить параметры с именами
os.putenv()
иos.spawn*()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29755: Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают байты.
Документация¶
Тесты¶
bpo-31320: Silence traceback in test_ssl
bpo-25674: Remove sha256.tbs-internet.com ssl test
bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
bpo-30822: regrtest: Exclude tzdata from regrtest –all. When running the test suite using –use=all / -u all, exclude tzdata since it makes test_datetime too slow (15-20 min on some buildbots) which then times out on some buildbots. Fix also regrtest command line parser to allow passing -u extralargefile to run test_zipfile64.
Построить¶
bpo-30854: Fix compile error when compiling –without-threads. Patch by Masayuki Yamamoto.
Windows¶
bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.
bpo-31340: Change to building with MSVC v141 (included with Visual Studio 2017)
bpo-30581: os.cpu_count() now returns the correct number of processors on Windows when the number of logical processors is greater than 64.
bpo-30731: Add a missing xmlns to python.manifest so that it matches the schema.
IDLE¶
bpo-31493: IDLE code context – fix code update and font update timers. Canceling timers prevents a warning message when test_idle completes.
bpo-31488: IDLE - Update non-key options in former extension classes. When applying configdialog changes, call .reload for each feature class. Change ParenMatch so updated options affect existing instances attached to existing editor windows.
bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace strips more than blank spaces. Multiline string literals are not skipped.
bpo-31480: IDLE - make tests pass with zzdummy extension disabled by default.
bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk update in the background in order to make live interaction and experimentation with tkinter applications much easier.
bpo-31414: IDLE – fix tk entry box tests by deleting first. Adding to an int entry is not the same as deleting and inserting because int(„“) will fail.
bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and Help sections.
bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor. Move some data and functions from the class to module level. Patch by Cheryl Sabella.
bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.
bpo-27099: Convert IDLE’s built-in „extensions“ to regular features. About 10 IDLE features were implemented as supposedly optional extensions. Their different behavior could be confusing or worse for users and not good for maintenance. Hence the conversion. The main difference for users is that user configurable key bindings for builtin features are now handled uniformly. Now, editing a binding in a keyset only affects its value in the keyset. All bindings are defined together in the system-specific default keysets in config-extensions.def. All custom keysets are saved as a whole in config-extension.cfg. All take effect as soon as one clicks Apply or Ok. The affected events are „<<force-open-completions>>“, „<<expand-word>>“, „<<force-open-calltip>>“, „<<flash-paren>>“, „<<format-paragraph>>“, „<<run-module>>“, „<<check-module>>“, and „<<zoom-height>>“. Any (global) customizations made before 3.6.3 will not affect their keyset-specific customization after 3.6.3. and vice versa. Initial patch by Charles Wohlganger.
bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by Cheryl Sabella.
bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl Sabella.
bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The slightly modified tests continue to pass. Patch by Cheryl Sabella.
bpo-31130: IDLE – stop leaks in test_configdialog. Initial patch by Victor Stinner.
bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.
bpo-19903: Разрешить параметры с именами
inspect.signature
иinspect.getfullargspec
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-31083: IDLE - Add an outline of a TabPage class in configdialog. Update existing classes to match outline. Initial patch by Cheryl Sabella.
bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly modified tests continue to pass. Patch by Cheryl Sabella.
bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly modified tests continue to pass. Fix General tests. Patch mostly by Cheryl Sabella.
bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan Reedy and Cheryl Sabella.
bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping methods pertaining to each tab and the buttons will aid writing tests and improving the tabs and will enable splitting the groups into classes.
bpo-30853: IDLE – Factor a VarTrace class out of ConfigDialog. Instance tracers manages pairs consisting of a tk variable and a callback function. When tracing is turned on, setting the variable calls the function. Test coverage for the new class is 100%.
bpo-31003: IDLE: Add more tests for General tab.
bpo-30993: IDLE - Improve configdialog font page and tests. In configdialog: Document causal pathways in create_font_tab docstring. Simplify some attribute names. Move set_samples calls to var_changed_font (idea from Cheryl Sabella). Move related functions to positions after the create widgets function. In test_configdialog: Fix test_font_set so not order dependent. Fix renamed test_indent_scale so it tests the widget. Adjust tests for movement of set_samples call. Add tests for load functions. Put all font tests in one class and tab indent tests in another. Except for two lines, these tests completely cover the related functions.
bpo-30981: IDLE – Add more configdialog font page tests.
bpo-28523: IDLE: replace „colour“ with „color“ in configdialog.
bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from 46% to 96%. Patch by Louie Lu.
bpo-30934: Document coverage details for idlelib tests. Add section to idlelib/idle-test/README.txt. Include check that branches are taken both ways. Exclude IDLE-specific code that does not run during unit tests.
bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in docstrings This will facilitate improving the dialog and splitting up the class. Original patch by Cheryl Sabella.
bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by Louie Lu.
bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.
bpo-30851: IDLE: Remove unused variables in configdialog. One is a duplicate, one is set but cannot be altered by users. Patch by Cheryl Sabella.
bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as well as mouse. Initial patch by Louie Lu.
bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.
bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in config; test. * In config, put dump test code in a function; run it and unittest in „if __name__ == „__main__“. * Add class config.ConfigChanges based on changes_class_v4.py on bpo issue. * Add class test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise configdialog to use ConfigChanges; see tracker msg297804. * Revise test_configdialog to match configdialog changes. * Remove configdialog functions unused or moved to ConfigChanges. Cheryl Sabella contributed parts of the patch.
bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by Cheryl Sabella.
bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more tests. Patch by Cheryl Sabella.
bpo-30723: IDLE: Make several improvements to parenmatch. Add „parens“ style to highlight both opener and closer. Make „default“ style, which is not default, a synonym for „opener“. Make time-delay work the same with all styles. Add help for config dialog extensions tab, including help for parenmatch. Add new tests. Original patch by Charles Wohlganger.
bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella
bpo-21519: IDLE’s basic custom key entry dialog now detects duplicates properly. Original patch by Saimadhav Heblikar.
bpo-29910: IDLE no longer deletes a character after commenting out a region by a key shortcut. Add
return 'break'
for this and other potential conflicts between IDLE and default key bindings.bpo-30728: Review and change idlelib.configdialog names. Lowercase method and attribute names. Replace „colour“ with „color“, expand overly cryptic names, delete unneeded underscores. Replace
import *
with specific imports. Patches by Cheryl Sabella.bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them with tk. Add tests for all 3 validation functions. Original patch by G Polo. Tests added by Cheryl Sabella.
Инструменты/демоверсии¶
bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared builds now, too. PEP 523 introduced _PyEval_EvalFrameDefault which inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the ability to use py-bt, py-up, and a few other Python-specific gdb integrations. The problem is fixed by only looking for _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno «Polaco» Penteado.
Python 3.6.2 final¶
Release date: 2017-07-17
No changes since release candidate 2
Python 3.6.2 release candidate 2¶
Release date: 2017-07-07
Безопасность¶
bpo-30730: Предотвращает внедрение переменных окружения в подпроцесс в Windows. Предотвращает передачу других переменных окружения и командных аргументов.
bpo-30694: Разрешить параметры с именами CVE-2017-9233 и CVE-2016-9063 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-30500: Разрешить параметры с именами
splithost('//127.0.0.1#@evil.com/')
и127.0.0.1
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Python 3.6.2 release candidate 1¶
Release date: 2017-06-17
Безопасность¶
bpo-29591: Разрешить параметры с именами CVE-2016-0718 и CVE-2016-4472 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-30682: Удалено слишком строгое утверждение, которое не срабатывало для некоторых f-строк, таких как eval(«f„\n“») и eval(«f„\r“»).
bpo-30604: Move co_extra_freefuncs to not be per-thread to avoid crashes
bpo-29104: Исправлен разбор обратных слэшей в f-строках.
bpo-27945: Исправлены различные segfault’ы с dict, когда входные коллекции мутируют во время поиска, вставки или сравнения. Основано на исправлениях Дуэйна Гриффина и Тима Митчелла.
bpo-25794: Исправлены type.__setattr__() и type.__delattr__() для неинтернированных имен атрибутов. Основано на исправлении Эрика Суна.
bpo-30039: Если прерывание KeyboardInterrupt происходит, когда интерпретатор находится в середине возобновления цепочки вложенных вызовов „yield from“ или „await“, то теперь оно корректно доставляется во внутренний фрейм.
bpo-12414: sys.getsizeof() на кодовом объекте теперь возвращает размеры, включающие кодовую структуру и размеры объектов, на которые она ссылается. Исправление от Donghee Na.
bpo-29949: Исправление регрессии использования памяти объектами set и frozenset.
bpo-29935: Исправлены сообщения об ошибках в методе index() кортежей, списков и deque при передаче индексов неправильного типа.
bpo-29859: Показывать корректные сообщения об ошибках при сбое любого из вызовов pthread_* в thread_pthread.h.
bpo-28876: Разрешить параметры с именами
bool(range)
иlen(range)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29600: Fix wrapping coroutine return values in StopIteration.
bpo-28856: Исправление ошибки, связанной с тем, что формат %b для байтов должен поддерживать объекты, следующие за буферным протоколом.
bpo-29714: Исправление ошибки, из-за которой формат байтов мог не работать, если внутри содержался нулевой байт.
bpo-29478: Если при использовании политики Compat32 указано значение max_line_length=None, оно больше не игнорируется. Исправление Мирчи Косбука.
Библиотека¶
bpo-30616: Функциональный API перечисления позволяет создавать пустые перечисления. Исправлено Donghee Na
bpo-30038: Исправление состояния гонки между доставкой сигнала и дескриптором файла пробуждения. Исправление от Натаниэля Смита.
bpo-23894: Разрешить параметры с именами
rb'...'
иf'...'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23890: unittest.TestCase.assertRaises() теперь вручную разрывает цикл ссылок, чтобы не держать объекты живыми дольше, чем ожидается.
bpo-30149: inspect.signature() теперь поддерживает callables с параметрами с переменными аргументами, обернутыми partialmethod. Исправление от Donghee Na.
bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases when a package is only shipped with bytecodes. Patch by Alexandru Ardelean.
bpo-29931: Исправлена проверка сравнения для объектов ipaddress.ip_interface. Исправление от Sanjay Sundaresan.
bpo-30605: re.compile() больше не выдает предупреждение BytesWarning при компиляции экземпляра bytes с ошибочно вставленным модификатором inline. Исправление Роя Уильямса.
bpo-24484: Avoid race condition in multiprocessing cleanup (#2159)
bpo-28994: Больше не отображается обратный след для SystemExit, вызванного в обратном вызове, зарегистрированном atexit.
bpo-30508: Не регистрируйте исключения, если был вызван метод Task/Future «cancel()».
bpo-28556: Обновления в модуле типизации: Добавление общего AsyncContextManager, добавление поддержки ContextManager на всех версиях. Авторы оригинальных PR: Jelle Zijlstra и Ivan Levkivskyi
bpo-29870: Исправление утечек ssl-сокетов при прерывании соединения в реализации asyncio/ssl. Исправление от Michaël Sghaïer.
bpo-29743: Закрытие транспорта во время процесса рукопожатия приводит к утечке открытого сокета. Исправление от Николая Кима
bpo-27585: Исправление отмены ожидания в asyncio.Lock. Исправление от Mathieu Sornay.
bpo-30418: В Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс все еще запущен, но закрыл трубу.
bpo-29822: inspect.isabstract() теперь работает во время __init_subclass__. Исправление от Nate Soares.
bpo-29581: ABCMeta.__new__ now accepts
**kwargs
, allowing abstract base classes to use keyword parameters in __init_subclass__. Patch by Nate Soares.bpo-30557: faulthandler теперь правильно фильтрует и отображает коды исключений на Windows
bpo-30378: Исправление проблемы, из-за которой logging.handlers.SysLogHandler не может обрабатывать IPv6-адреса.
bpo-29960: Сохранение состояния генератора, когда _random.Random.setstate() вызывает исключение. Исправление от Bryan Olson.
bpo-30414: multiprocessing.Queue._feed фоновый запущенный поток не прерывается из главного цикла при исключении.
bpo-30003: Исправлена работа со сбегающими символами в кодеке HZ. Основано на патче Ма Лина.
bpo-30301: Исправление ошибки AttributeError при использовании SimpleQueue.empty() в методах запуска spawn и forkserver.
bpo-30329: imaplib и poplib теперь отлавливают ошибку WSAEINVAL сокета Windows (код 10022) при выключении(SHUT_RDWR): Была предпринята попытка выполнить недопустимую операцию. Эта ошибка иногда возникает при SSL-соединениях.
bpo-30375: Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в пользовательском коде. Ранее они могли указывать на внутренности модуля re, если выдавались изнутри групп или условий.
bpo-30048: Разрешить параметры с именами
Task.cancel()
иawait
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30266: contextlib.AbstractContextManager теперь поддерживает антирегистрацию путем установки __enter__ = None или __exit__ = None, следуя шаблону, представленному в bpo-25958. Исправление от Jelle Zijlstra.
bpo-30298: Разрешить параметры с именами
'(?i)(?s)...'
и'(?x) (?i) (?s)...'
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29990: Исправление проверки диапазона в декодере GB18030. Оригинальный патч от Ma Lin.
bpo-26293: Change resulted because of zipfile breakage. (See also: bpo-29094)
bpo-30243: Удалены методы __init__ сканера и кодировщика _json. Их неправильное использование могло привести к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах __new__.
bpo-30185: Избегайте отслеживания прерываний KeyboardInterrupt в вспомогательном процессе forkserver при получении Ctrl-C.
bpo-28556: Различные обновления модуля типизации: добавление типа typing.NoReturn, использование WrapperDescriptorType, исправление мелких ошибок. Авторы оригинальных PR - Джим Фасаракис-Хиллиард и Иван Левкивский.
bpo-30205: Исправление getsockname() для несвязанных сокетов AF_UNIX в Linux.
bpo-30070: Исправлены утечки и сбои в обработке ошибок в модуле парсера.
bpo-30061: Исправлены сбои в методах IOBase __next__() и readlines(), когда readline() или __next__() соответственно возвращали объект, не имеющий размера. Исправлены возможные другие ошибки, вызванные непроверкой результатов PyObject_Size(), PySequence_Size() или PyMapping_Size().
bpo-30017: Разрешалось вызывать метод close() объекта записи zip-файла несколько раз. Теперь при записи в закрытую запись всегда выдается ошибка ValueError.
bpo-30068: _io._IOBase.readlines будет проверять, закрыт ли он первым при наличии подсказки.
bpo-29694: Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Исправление от Армина Риго.
bpo-29692: Исправлена произвольная развязка исключений RuntimeError в contextlib.contextmanager. Исправление Сиддхарта Веланкара.
bpo-29998: При пикировке и копировании ImportError теперь сохраняются атрибуты имени и пути.
bpo-29953: Исправлена утечка памяти в методе replace() для объектов datetime и time при передаче аргумента bound fold.
bpo-29942: Исправление сбоя в itertools.chain.from_iterable при столкновении с длинными прогонами пустых итераций.
bpo-27863: Исправлены многочисленные сбои в ElementTree, вызванные условиями гонки и неправильными типами.
bpo-28699: Исправлена ошибка в пулах в файле multiprocessing.pool, в результате которой при возникновении исключения в самом начале итерабельной таблицы исключение могло быть проглочено или привести к зависанию программы. Исправление подготовили Дэвин Поттс и Сян Чжан.
bpo-25803: Избегайте некорректных ошибок, выдаваемых Path.mkdir(exist_ok=True), когда ОС отдает приоритет ошибкам типа EACCES перед EEXIST.
bpo-29861: Освободите ссылки на задачи, их аргументы и результаты, как только они завершатся в multiprocessing.Pool.
bpo-29884: faulthandler: Восстановление старого sigaltstack во время сноса. Исправление Кристофа Зейтуни.
bpo-25455: Исправлены сбои при repr рекурсивных буферизованных файлоподобных объектов.
bpo-29800: Исправление сбоев в partial.__repr__, если ключи partial.keywords не являются строками. Исправление от Michael Seifert.
bpo-29742: get_extra_info() вызывает исключение, если вызывается на закрытом ssl-транспорте. Исправление от Николая Кима.
bpo-8256: Исправлена возможность сбоя или падения input(), если атрибуты «encoding» или «errors» в sys.stdin или sys.stdout не установлены или не являются строками.
bpo-28298: Fix a bug that prevented array „Q“, „L“ and „I“ from accepting big intables (objects that have __int__) as elements. Patch by Oren Milman.
bpo-28231: Модуль zipfile теперь принимает path-подобные объекты для внешних путей.
bpo-26915: методы index() и count() в collections.abc.Sequence теперь проверяют идентичность перед проверкой равенства при выполнении сравнений.
bpo-29615: SimpleXMLRPCDispatcher больше не цепляет KeyError (или любое другое исключение) к исключению(ям), поднятому(ым) в диспетчеризируемых методах. Исправление от Петра Мотейлека.
bpo-30177: path.resolve(strict=False) no longer cuts the path after the first element not present in the filesystem. Patch by Antoine Pietri.
IDLE¶
bpo-15786: Fix several problems with IDLE’s autocompletion box. The following should now work: clicking on selection box items; using the scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no longer happen. Patch by Louie Lu.
bpo-25514: Add doc subsubsection about IDLE failure to start. Popup no-connection message directs users to this section.
bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and Terry Jan Reedy.
bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by Cheryl Sabella and Terry Jan Reedy.
bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.
bpo-30303: Add _utest option to textview; add new tests. Increase coverage to 100%. Patches by Louie Lu and Terry Jan Reedy.
C API¶
bpo-27867: Function PySlice_GetIndicesEx() no longer replaced with a macro if Py_LIMITED_API is not set.
Построить¶
bpo-29941: Разрешить параметры с именами
--with-assertions
иassert()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28787: Fix out-of-tree builds of Python when configured with
--with--dtrace
.bpo-29243: Разрешить параметры с именами
make test
иmake install
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23404: Разрешить параметры с именами
make touch
иmake regen-all
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29643: Fix
--enable-optimization
didn’t work.
Документация¶
bpo-30176: Add missing attribute related constants in curses documentation.
bpo-30052: Разрешить параметры с именами
bytes()
иbytearray()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26985: Add missing info of code object in inspect documentation.
Инструменты/демоверсии¶
bpo-29367: Разрешить параметры с именами
method-wrapper
иwrapperobject
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Тесты¶
bpo-30357: test_thread: setUp() now uses support.threading_setup() and support.threading_cleanup() to wait until threads complete to avoid random side effects on following tests. Initial patch written by Grzegorz Grzywacz.
bpo-30197: Enhanced functions swap_attr() and swap_item() in the test.support module. They now work when delete replaced attribute or item inside the with statement. The old value of the attribute or item (or None if it doesn’t exist) now will be assigned to the target of the «as» clause, if there is one.
Windows¶
bpo-30687: Locate msbuild.exe on Windows when building rather than vcvarsall.bat
bpo-30450: The build process on Windows no longer depends on Subversion, instead pulling external code from GitHub via a Python script. If Python 3.6 is not found on the system (via
py -3.6
), NuGet is used to download a copy of 32-bit Python.
Python 3.6.1 final¶
Release date: 2017-03-21
Ядро и встроенные модули¶
Построить¶
bpo-27593: fix format of git information used in sys.version
Fix incompatible comment in python.h
Python 3.6.1 release candidate 1¶
Release date: 2017-03-04
Ядро и встроенные модули¶
bpo-28893: Установите правильную __cause__ для ошибок о недействительных awaitables, возвращаемых из __aiter__ и __anext__.
bpo-29683: Исправление выделения памяти в _PyCode_SetExtra. Исправление от Брайана Коулмана.
bpo-29684: Исправьте небольшую регрессию в PyEval_CallObjectWithKeywords. Она должна вызывать TypeError, если kwargs не является dict. Но это может привести к segv, когда args=NULL и kwargs не является dict.
bpo-28598: Поддержка __rmod__ для подклассов str, вызываемых перед str.__mod__. Исправление от Martijn Pieters.
bpo-29607: Исправление вычисления эффекта стека для CALL_FUNCTION_EX. Исправление от Матьё Дартиаиля (Matthieu Dartiailh).
bpo-29602: Исправлена некорректная обработка подписанных нулей в конструкторе complex для подклассов complex и для входов, имеющих метод __complex__. Исправление Сергея Сторчака.
bpo-29347: Исправлена возможность разыменования неопределенных указателей при создании объектов weakref.
bpo-29438: Исправлена проблема use-after-free в дикте разделения ключей.
bpo-29319: Предотвращение перезаписи RunMainFromImporter в sys.path[0].
bpo-29337: Исправлено возможное предупреждение BytesWarning при сравнении объектов кода. Предупреждения могли выдаваться во время компиляции.
bpo-29327: Исправлено падение при передаче ключевого слова iterable в sorted().
bpo-29034: Исправление утечки памяти и use-after-free в модуле os (path_converter).
bpo-29159: Исправление регрессии в bytes(x), когда x.__index__() поднимает исключение.
bpo-28932: Не включайте <sys/random.h>, если он не существует.
bpo-25677: Исправление позиционирования символа синтаксической ошибки для блоков с отступами. Основано на исправлении Майкла Лейзелла.
bpo-29000: Исправлено форматирование байтов окталов с нулевой прокладкой в альтернативной форме.
bpo-26919: На Android данные операционной системы теперь всегда кодируются/декодируются в/из UTF-8, а не из кодировки локали, чтобы избежать несоответствий с os.fsencode() и os.fsdecode(), которые уже используют UTF-8.
bpo-28991: functools.lru_cache() был подвержен неясной ошибке реентерабельности, вызываемой исправленной функцией len().
bpo-28739: выражения f-строк больше не принимаются в качестве docstrings и в ast.literal_eval(), даже если они не содержат выражений.
bpo-28512: Исправлена установка атрибута смещения SyntaxError с помощью PyErr_SyntaxLocationEx() и PyErr_SyntaxLocationObject().
bpo-28918: Исправьте кросс-компиляцию xxlimited, когда Python был собран с определением Py_DEBUG.
bpo-28731: Оптимизация _PyDict_NewPresized() для создания dict правильного размера. Улучшение скорости работы литерала dict с постоянными ключами до 30 %.
Библиотека¶
bpo-29169: Обновление zlib до версии 1.2.11.
bpo-29623: Разрешить использование path-like объекта в качестве единственного аргумента в ConfigParser.read(). Исправление Дэвида Эллиса.
bpo-28963: Исправление выходящей за границы итерации в asyncio.Future.remove_done_callback, реализованном на C.
bpo-29704: asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до закрытия всех труб.
bpo-29271: Исправьте Task.current_task и Task.all_tasks, реализованные на C, чтобы они принимали аргумент None, как их чистая реализация на Python.
bpo-29703: Исправьте asyncio для поддержки инстанцирования новых циклов событий в дочерних процессах.
bpo-29376: Исправьте ошибку утверждения в threading._DummyThread.is_alive().
bpo-28624: Добавьте тест, проверяющий, что параметр cwd функции Popen() принимает объекты PathLike. Исправление от Sayan Chowdhury.
bpo-28518: Неявное начало транзакции перед оператором DML. Исправление Авива Паливоды.
bpo-29532: Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на частичный объект после его создания.
bpo-29110: Исправление утечки объекта файла в aifc.open(), когда файл указан как путь к файловой системе и не является допустимым форматом AIFF. Исправление Энтони Чжана.
bpo-28556: Различные обновления модуля типизации: typing.Counter, typing.ChainMap, улучшено кэширование ABC и т.д. Авторы оригинальных PR: Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.
bpo-29100: Исправьте регрессию datetime.fromtimestamp(), появившуюся в Python 3.6.0: проверьте минимальный и максимальный годы.
bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when used with a rare combination of multiprocessing and custom codecs.
bpo-29416: Предотвращение бесконечного цикла в pathlib.Path.mkdir
bpo-29444: Исправлено обращение к буферу за пределами границ в методе group() объекта match. Основано на исправлении от WGH.
bpo-29335: Исправьте subprocess.Popen.wait(), когда дочерний процесс вышел не в завершенное, а в остановленное состояние (например, при наличии ptrace).
bpo-29290: Исправление регрессии в argparse, из-за которой сообщения справки обрывались на неразрывных пробелах.
bpo-28735: Исправлено сравнение mock.MagickMock с mock.ANY.
bpo-29316: Restore the provisional status of typing module, add corresponding note to documentation. Patch by Ivan L.
bpo-29219: Исправлена бесконечная рекурсия при повторном использовании неинициализированных экземпляров ctypes.CDLL.
bpo-29011: Fix an important omission by adding Deque to the typing module.
bpo-28969: Исправлено состояние гонки в реализации functools.lru_cache на C. KeyError могла быть вызвана, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми некэшированными аргументами.
bpo-29142: В urllib.request суффиксы в переменной окружения no_proxy с ведущими точками могли повторно соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление Милана Оберкирха.
bpo-28961: Исправление помощника unittest.mock._Call: больше не игнорирует параметр name. Автор патча - Jiajun Huang.
bpo-29203: functools.lru_cache() now respects PEP 468 and preserves the order of keyword arguments. f(a=1, b=2) is now cached separately from f(b=2, a=1) since both calls could potentially give different results.
bpo-15812: inspect.getframeinfo() теперь корректно показывает первую строку контекста. Исправление Сэма Бриза.
bpo-29094: Offsets in a ZIP file created with extern file object and modes «w» and «x» now are relative to the start of the file.
bpo-29085: Allow random.Random.seed() to use high quality OS randomness rather than the pid and time.
bpo-29061: Fixed bug in secrets.randbelow() which would hang when given a negative input. Patch by Brendan Donegan.
bpo-29079: Предотвращение бесконечного цикла в pathlib.resolve() на Windows
bpo-13051: Исправлены ошибки рекурсии в больших или измененных по размеру curses.textpad.Textbox. Основано на патче Тихо Андерсена.
bpo-29119: Fix weakrefs in the pure python version of collections.OrderedDict move_to_end() method. Contributed by Andra Bogildea.
bpo-9770: предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.
bpo-28427: старые ключи не должны удалять новые значения из WeakValueDictionary при сборе из другого потока.
bpo-28923: Удалите артефакты редактора из Tix.py.
bpo-29055: Neaten-up empty population error on random.choice() by suppressing the upstream exception.
bpo-28871: Исправлен сбой при деаллокации глубокого дерева ElementTree.
bpo-19542: Исправление ошибок в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сбор GC происходит в другом потоке.
bpo-20191: Исправлен сбой в resource.prlimit() при передаче в качестве ограничений последовательности, не имеющей собственных элементов.
bpo-28779: multiprocessing.set_forkserver_preload() приведет к аварийному завершению процесса forkserver, если предварительно загруженный модуль инстанцирует некоторые объекты мультипроцессинга, такие как блокировки.
bpo-28847: dbm.dumb now supports reading read-only files and no longer writes the index file when it is not changed.
bpo-26937: Метод chown() класса tarfile.TarFile теперь не дает сбоев, когда модуль grp не может быть импортирован, как, например, на платформах Android.
IDLE¶
Windows¶
bpo-29579: Removes readme.txt from the installer
bpo-29326: Ignores blank lines in ._pth files (Patch by Alexey Izbyshev)
bpo-28164: Correctly handle special console filenames (patch by Eryk Sun)
bpo-29409: Implement PEP 529 for io.FileIO (Patch by Eryk Sun)
bpo-29392: Prevent crash when passing invalid arguments into msvcrt module.
bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)
bpo-28896: Deprecate WindowsRegistryFinder and disable it by default.
C API¶
bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if Py_LIMITED_API is not set or set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher.
bpo-29083: Fixed the declaration of some public API functions. PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.
bpo-29058: All stable API extensions added after Python 3.2 are now available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of the minimum Python version supporting this API.
Документация¶
bpo-28929: Link the documentation to its source file on GitHub.
bpo-25008: Document smtpd.py as effectively deprecated and add a pointer to aiosmtpd, a third-party asyncio-based replacement.
bpo-26355: Add canonical header link on each page to corresponding major version of the documentation. Patch by Matthias Bussonnier.
bpo-29349: Fix Python 2 syntax in code for building the documentation.
Тесты¶
bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip some tests of select.poll when running on macOS due to unresolved issues with the underlying system poll function on some macOS versions.
bpo-29571: Разрешить параметры с именами
re.LOCALE
иlocale.getpreferredencoding(False)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line arguments.
bpo-28683: Fix the tests that bind() a unix socket and raise PermissionError on Android for a non-root user.
bpo-26939: Add the support.setswitchinterval() function to fix test_functools hanging on the Android armv7 qemu emulator.
Построить¶
bpo-27593: sys.version and the platform module python_build(), python_branch(), and python_revision() functions now use git information rather than hg when building from a repo.
bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.
bpo-26851: Set Android compilation and link flags.
bpo-28768: Fix implicit declaration of function _setmode. Patch by Masayuki Yamamoto
bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
bpo-23903: Added missed names to PC/python3.def.
bpo-28762: lockf() is available on Android API level 24, but the F_LOCK macro is not defined in android-ndk-r13.
bpo-28538: Fix the compilation error that occurs because if_nameindex() is available on Android API level 24, but the if_nameindex structure is not defined.
bpo-20211: Do not add the directory for installing C header files and the directory for installing object code libraries to the cross compilation search paths. Original patch by Thomas Petazzoni.
bpo-28849: Do not define sys.implementation._multiarch on Android.
Python 3.6.0 final¶
Release date: 2016-12-23
No changes since release candidate 2
Python 3.6.0 release candidate 2¶
Release date: 2016-12-16
Ядро и встроенные модули¶
Инструменты/демоверсии¶
bpo-28770: Fix python-gdb.py for fastcalls.
Windows¶
bpo-28896: Deprecate WindowsRegistryFinder.
Построить¶
bpo-28898: Prevent gdb build errors due to HAVE_LONG_LONG redefinition.
Python 3.6.0 release candidate 1¶
Release date: 2016-12-06
Ядро и встроенные модули¶
bpo-23722: Разрешить параметры с именами
super()
и__classcell__
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28797: Изменение класса __dict__ внутри метода __set_name__ дескриптора, который используется внутри этого класса, больше не предотвращает вызов метода __set_name__ других дескрипторов.
bpo-28782: Разрешить параметры с именами
yield from
и bpo-26647 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-27030: Unknown escapes in re.sub() replacement template are allowed again. But they still are deprecated and will be disabled in 3.7.
bpo-28835: Исправление регрессии в warnings.catch_warnings(): вызов warnings.showwarning(), если он был переопределен внутри менеджера контекста.
bpo-27172: Чтобы помочь при обновлении с версии 2.7, ранее задокументированная депривация
inspect.getfullargspec()
была отменена. Это решение может быть пересмотрено после того, как ветка Python 2.7 перестанет официально поддерживаться.bpo-26273: Разрешить параметры с именами
socket.TCP_CONGESTION
иsocket.TCP_USER_TIMEOUT
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24142: Reading a corrupt config file left configparser in an invalid state. Original patch by Florian Höch.
bpo-28843: Fix asyncio C Task to handle exceptions __traceback__.
C API¶
bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
Документация¶
Инструменты/демоверсии¶
bpo-28023: Fix python-gdb.py didn’t support new dict implementation.
Python 3.6.0 beta 4¶
Release date: 2016-11-21
Ядро и встроенные модули¶
bpo-28532: Показывать версию sys.version, когда опция -V предоставляется дважды.
bpo-27100: Предложение with теперь проверяет __enter__ перед проверкой __exit__. Это дает менее путаные сообщения об ошибках, когда оба метода отсутствуют. Исправление Джонатана Эллингтона.
bpo-28746: Исправьте метод set_inheritable() файлового дескриптора на платформах, где нет команд ioctl FIOCLEX и FIONCLEX.
bpo-26920: Исправление неполучения charset локали при инициализации интерпретатора, на платформах, не имеющих langinfo.
bpo-28648: Исправлен сбой в Py_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Исправление от Xiang Zhang.
bpo-19398: Лишний слэш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.
bpo-28665: Повышение скорости работы опкода STORE_DEREF на 40%.
bpo-28583: PyDict_SetDefault не объединял таблицу разбиения, когда это было необходимо. Исправление от Xiang Zhang.
bpo-27243: Change PendingDeprecationWarning -> DeprecationWarning. As it was agreed in the issue, __aiter__ returning an awaitable should result in PendingDeprecationWarning in 3.5 and in DeprecationWarning in 3.6.
bpo-26182: Исправьте утечку в коде, вызывающем DeprecationWarning.
bpo-28721: Исправьте асинхронные генераторы aclose() и athrow() для правильной обработки распространения StopAsyncIteration.
Библиотека¶
bpo-28752: Восстановлены методы __reduce__() для объектов datetime.
bpo-28727: Шаблоны регулярных выражений, объекты _sre.SRE_Pattern, создаваемые re.compile(), становятся сопоставимыми (только операторы x==y и x!=y). Это изменение должно исправить bpo-18383: не дублировать фильтры предупреждений при перезагрузке модуля warnings (обычно это делается только в модульных тестах).
bpo-20572: The subprocess.Popen.wait method’s undocumented endtime parameter now raises a DeprecationWarning.
bpo-25659: В ctypes предотвратите падение при вызове методов from_buffer() и from_buffer_copy() для абстрактных классов типа Array.
bpo-19717: Заставляет Path.resolve() успешно работать с несуществующими путями. Исправление от Вайраски Кока
bpo-28563: Исправлена возможность DoS и выполнения произвольного кода при обработке множественного выбора формы в модуле gettext. Парсер выражений теперь поддерживает точный синтаксис, поддерживаемый GNU gettext.
bpo-28387: Исправлено возможное падение деаллокатора _io.TextIOWrapper, когда сборщик мусора вызывался в другом потоке. Основано на исправлении Себастьяна Куфре.
bpo-28600: Optimize loop.call_soon.
bpo-28613: Fix get_event_loop() return the current loop if called from coroutines/callbacks.
bpo-28634: Fix asyncio.isfuture() to support unittest.Mock.
bpo-26081: Fix refleak in _asyncio.Future.__iter__().throw.
bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin Mayfield.
bpo-28652: Make loop methods reject socket kinds they do not support.
bpo-28653: Fix a refleak in functools.lru_cache.
bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.
bpo-28704: Fix create_unix_server to support Path-like objects (PEP 519).
bpo-28720: Add collections.abc.AsyncGenerator.
Документация¶
bpo-28513: Documented command-line interface of zipfile.
Тесты¶
Построить¶
Python 3.6.0 beta 3¶
Release date: 2016-10-31
Ядро и встроенные модули¶
bpo-28128: Предупреждение об устаревании недопустимых управляющих последовательностей str и byte теперь выводит более точную информацию о месте возникновения ошибки. Исправление Сергея Сторчака и Эрика Смита.
bpo-28509: dict.update() больше не выделяет ненужный большой объем памяти.
bpo-28426: Исправлен потенциальный сбой в PyUnicode_AsDecodedObject() в отладочной сборке.
bpo-28517: Исправлена ошибка of-by-one в оптимизаторе peephole, которая приводила к сохранению недостижимого кода.
bpo-28214: Улучшено сообщение об исключениях для проблемных атрибутов __set_name__.
bpo-23782: Исправлена возможная утечка памяти в _PyTraceback_Add() и потеря исключений в PyTraceBack_Here().
bpo-28471: Fix «Python memory allocator called without holding the GIL» crash in socket.setblocking.
Библиотека¶
bpo-27517: Компрессор и декомпрессор LZMA больше не вызывают исключения, если им дважды передаются пустые данные. Исправление от Бенджамина Фогла.
bpo-28549: Исправлена ошибка segfault в addch() в curses с ncurses6.
bpo-28449: tarfile.open() с режимом «r» или «r:» теперь пытается открыть tar-файл со сжатием, прежде чем пытаться открыть его без сжатия. В противном случае с вероятностью 50% он терпел неудачу при ignore_zeros=True.
bpo-23262: Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче Олега Бройтмана.
bpo-27939: Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы как float-значения в Tk. tkinter.IntVar теперь работает, если float-значение установлено в базовую переменную Tk.
bpo-18844: The various ways of specifying weights for random.choices() now produce the same result sequences.
bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at the start of new line after printing a month’s calendar. Patch by Xiang Zhang.
bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. Based on patch by Kaarle Ritvanen.
bpo-28353: os.fwalk() no longer fails on broken links.
bpo-28430: Fix iterator of C implemented asyncio.Future doesn’t accept non-None value is passed to it.send(val).
bpo-27025: Generated names for Tkinter widgets now start by the «!» prefix for readability.
bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a workaround to Tix library bug.
bpo-28488: shutil.make_archive() no longer adds entry «./» to ZIP archive.
bpo-25953: re.sub() now raises an error for invalid numerical group reference in replacement template even if the pattern is not found in the string. Error message for invalid group reference now includes the group index and the position of the reference. Based on patch by SilentGhost.
bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by Mariatta Wijaya.
bpo-28448: Fix C implemented asyncio.Future didn’t work on Windows.
bpo-28480: Fix error building socket module when multithreading is disabled.
bpo-24452: Make webbrowser support Chrome on Mac OS X.
bpo-20766: Fix references leaked by pdb in the handling of SIGINT handlers.
bpo-28492: Fix how StopIteration exception is raised in _asyncio.Future.
bpo-28500: Fix asyncio to handle async gens GC from another thread.
bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children are done. Patch by Johannes Ebke.
bpo-26796: Don’t configure the number of workers for default threadpool executor. Initial patch by Hans Lawrenz.
bpo-28544: Implement asyncio.Task in C.
Windows¶
bpo-28522: Fixes mishandled buffer reallocation in getpathp.c
Построить¶
Тесты¶
Python 3.6.0 beta 2¶
Release date: 2016-10-10
Ядро и встроенные модули¶
bpo-28183: Оптимизация и очистка итерации диктовки.
bpo-26081: Добавлена реализация asyncio.Future на языке C. Оригинальный патч Юрия Селиванова.
bpo-28379: Добавлены проверки на вменяемость и тесты для PyUnicode_CopyCharacters(). Исправление от Xiang Zhang.
bpo-28376: Тип итератора дальнего действия теперь регистрируется как Iterator. Исправление от Орена Милмана.
bpo-28376: Creating instances of range_iterator by calling range_iterator type now is deprecated. Patch by Oren Milman.
bpo-28376: The constructor of range_iterator now checks that step is not 0. Patch by Oren Milman.
bpo-26906: Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо отказа.
bpo-18287: PyType_Ready() теперь проверяет, что tp_name не является NULL. Автор оригинального патча - Никлас Коеп.
bpo-24098: Исправлено возможное падение при изменении AST в процессе компиляции.
bpo-28201: Дикт уменьшает вероятность возникновения второго конфликта в хэш-таблице, когда хэши имеют одинаковые младшие биты.
bpo-28350: Строковые константы с нулевым символом больше не интернируются.
bpo-26617: Исправление сбоя при запуске GC во время обратного вызова weakref.
bpo-27942: Строковые константы теперь рекурсивно интернализируются в кортежах и фростенсетах.
bpo-21578: Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми ключевыми словами args.
bpo-28203: Исправление неправильного типа в сообщении об ошибке complex(1.0, {2:3}). Исправление от Soumya Sharma.
bpo-28086: Одиночный аргумент var-позиции подтипа tuple был передан в функцию, определенную на языке C, невредимым. Теперь он преобразуется в точный кортеж.
bpo-28214: Теперь __set_name__ ищется в классе, а не в экземпляре.
bpo-27955: Откат при чтении устройства /dev/urandom, когда системный вызов getrandom() терпит неудачу с EPERM, например, при блокировке SECCOMP.
bpo-28192: Не импортируйте readline в изолированном режиме.
Обновите внутренние базы данных юникода до версии 9.0.0.
bpo-28131: Исправление регрессии в zipimport’s compile_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.
bpo-28126: Замените Py_MEMCPY на memcpy(). Visual Studio может правильно оптимизировать memcpy().
bpo-28120: Исправьте dict.pop() для словаря split при попытке удалить «ожидающий ключ» (еще не вставленный в split-таблицу). Исправление от Xiang Zhang.
bpo-26182: Выдавать предупреждение об обесценивании при использовании ключевых слов async и await в качестве имени переменной/атрибута/класса/функции.
Библиотека¶
bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by Eryk Sun.
bpo-28317: The disassembler now decodes FORMAT_VALUE argument.
bpo-26293: Fixed writing ZIP files that starts not from the start of the file. Offsets in ZIP file now are relative to the start of the archive in conforming to the specification.
bpo-28380: unittest.mock Mock autospec functions now properly support assert_called, assert_not_called, and assert_called_once.
bpo-27181: remove statistics.geometric_mean and defer until 3.7.
bpo-28229: lzma module now supports pathlib.
bpo-28321: Fixed writing non-BMP characters with binary format in plistlib.
bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan Furman.
bpo-28227: gzip now supports pathlib. Patch by Ethan Furman.
bpo-27358: Optimized merging var-keyword arguments and improved error message when passing a non-mapping as a var-keyword argument.
bpo-28257: Improved error message when passing a non-iterable as a var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
bpo-28322: Fixed possible crashes when unpickle itertools objects from incorrect pickle data. Based on patch by John Leitch.
bpo-28228: imghdr now supports pathlib.
bpo-28226: compileall now supports pathlib.
bpo-28314: Fix function declaration (C flags) for the getiterator() method of xml.etree.ElementTree.Element.
bpo-28148: Stop using localtime() and gmtime() in the time module. Introduced platform independent _PyTime_localtime API that is similar to POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.
bpo-28253: Fixed calendar functions for extreme months: 0001-01 and 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so that they don’t call itermonthdates() which can cause datetime.date under/overflow.
bpo-28275: Fixed possible use after free in the decompress() methods of the LZMADecompressor and BZ2Decompressor classes. Original patch by John Leitch.
bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() if pass invalid string-like object as a name. Patch by Xiang Zhang.
bpo-18844: random.choices() now has k as a keyword-only argument to improve the readability of common cases and come into line with the signature used in other languages.
bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. Patch by Madison May.
bpo-27611: Fixed support of default root window in the tkinter.tix module. Added the master parameter in the DisplayStyle constructor.
bpo-27348: In the traceback module, restore the formatting of exception messages like «Exception: None». This fixes a regression introduced in 3.5a2.
bpo-25651: Allow false values to be used for msg parameter of subTest().
bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is interrupted by a signal and a signal handler raises a Python exception.
bpo-28200: Fix memory leak on Windows in the os module (fix path_converter() function).
bpo-25400: RobotFileParser now correctly returns default values for crawl_delay and request_rate. Initial patch by Peter Wirtz.
bpo-27932: Prevent memory leak in win32_ver().
Fix UnboundLocalError in socket._sendfile_use_sendfile.
bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of os.stat(). Patch by Eryk Sun.
bpo-22493: Warning message emitted by using inline flags in the middle of regular expression now contains a (truncated) regex pattern. Patch by Tim Graham.
bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed.
bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by Gergely Imreh and Markus Holtermann.
bpo-28114: Fix a crash in parse_envlist() when env contains byte strings. Patch by Eryk Sun.
bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().
bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by Kevin Conway.
bpo-28174: Handle when SO_REUSEPORT isn’t properly supported. Patch by Seth Michael Larson.
bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by iceboy.
bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
bpo-27759: Fix selectors incorrectly retain invalid file descriptors. Patch by Mark Williams.
bpo-28368: Refuse monitoring processes if the child watcher has no loop attached. Patch by Vincent Michel.
bpo-28369: Raise RuntimeError when transport’s FD is used with add_reader, add_writer, etc.
bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг Марк.
bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
bpo-28372: Fix asyncio to support formatting of non-python coroutines.
bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг Марк.
bpo-27972: Prohibit Tasks to await on themselves.
Windows¶
bpo-28402: Adds signed catalog files for stdlib on Windows.
bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk Sun)
bpo-28251: Improvements to help manuals on Windows.
bpo-28110: launcher.msi has different product codes between 32-bit and 64-bit
bpo-28161: Opening CON for write access fails
bpo-28162: WindowsConsoleIO readall() fails if first line starts with Ctrl+Z
bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle
bpo-28164: _PyIO_get_console_type fails for various paths
bpo-28137: Renames Windows path file to ._pth
bpo-28138: Windows ._pth file should allow import site
C API¶
bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and PyUnicode_AsEncodedUnicode().
Построить¶
bpo-28258: Fixed build with Estonian locale (python-config and distclean targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
bpo-26661: setup.py now detects system libffi with multiarch wrapper.
bpo-15819: Remove redundant include search directory option for building outside the source tree.
Тесты¶
bpo-28217: Adds _testconsole module to test console input.
Python 3.6.0 beta 1¶
Release date: 2016-09-12
Ядро и встроенные модули¶
bpo-23722: The __class__ cell used by zero-argument super() is now initialized from type.__new__ rather than __build_class__, so class methods relying on that will now work correctly when called from metaclass methods during class creation. Patch by Martin Teichmann.
bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is compiled with NSMALLPOSINTS = 0.
bpo-27080: Implement formatting support for PEP 515. Initial patch by Chris Angelico.
bpo-27199: In tarfile, expose copyfileobj bufsize to improve throughput. Patch by Jason Fried.
bpo-27948: In f-strings, only allow backslashes inside the braces (where the expressions are). This is a breaking change from the 3.6 alpha releases, where backslashes are allowed anywhere in an f-string. Also, require that expressions inside f-strings be enclosed within literal braces, and not escapes like
f'\x7b"hi"\x7d'
.bpo-28046: Remove platform-specific directories from sys.path.
bpo-28071: Add early-out for differencing from an empty set.
bpo-25758: Prevents zipimport from unnecessarily encoding a filename (patch by Eryk Sun)
bpo-25856: The __module__ attribute of extension classes and functions now is interned. This leads to more compact pickle data with protocol 4.
bpo-27213: Rework CALL_FUNCTION* opcodes to produce shorter and more efficient bytecode. Patch by Demur Rumed, design by Serhiy Storchaka, reviewed by Serhiy Storchaka and Victor Stinner.
bpo-26331: Implement tokenizing support for PEP 515. Patch by Georg Brandl.
bpo-27999: Make «global after use» a SyntaxError, and ditto for nonlocal. Patch by Ivan Levkivskyi.
bpo-27985: Implement PEP 526 – Syntax for Variable Annotations. Patch by Ivan Levkivskyi.
bpo-26058: Add a new private version to the builtin dict type, incremented at each dictionary creation and at each dictionary change. Implementation of the PEP 509.
bpo-27364: A backslash-character pair that is not a valid escape sequence now generates a DeprecationWarning. Patch by Emanuel Barry.
bpo-27350:
dict
implementation is changed like PyPy. It is more compact and preserves insertion order. (Concept developed by Raymond Hettinger and patch by Inada Naoki.)bpo-27911: Remove unnecessary error checks in
exec_builtin_or_dynamic()
.bpo-27078: Added BUILD_STRING opcode. Optimized f-strings evaluation.
bpo-17884: Python now requires systems with inttypes.h and stdint.h
bpo-27961: Разрешить параметры с именами
long long
иlong long
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27355: Removed support for Windows CE. It was never finished, and Windows CE is no longer a relevant platform for Python.
Implement PEP 523.
bpo-27870: A left shift of zero by a large integer no longer attempts to allocate large amounts of memory.
bpo-25402: In int-to-decimal-string conversion, improve the estimate of the intermediate memory required, and remove an unnecessarily strict overflow check. Patch by Serhiy Storchaka.
bpo-27214: In long_invert, be more careful about modifying object returned by long_add, and remove an unnecessary check for small longs. Thanks Oren Milman for analysis and patch.
bpo-27506: Support passing the bytes/bytearray.translate() «delete» argument by keyword.
bpo-27812: Properly clear out a generator’s frame’s backreference to the generator to prevent crashes in frame.clear().
bpo-27811: Fix a crash when a coroutine that has not been awaited is finalized with warnings-as-errors enabled.
bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after use of „def“ in _PyState_AddModule(). Initial patch by Christian Heimes.
bpo-27792: Разрешить параметры с именами
bool
иint
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26984: int() now always returns an instance of exact int.
bpo-25604: Fix a minor bug in integer true division; this bug could potentially have caused off-by-one-ulp results on platforms with unreliable ldexp implementations.
bpo-24254: Make class definition namespace ordered by default.
bpo-27662: Разрешить параметры с именами
List_New
иPy_SIZE_MAX
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27782: Разрешить параметры с именами
m_methods
иPy_create_mod
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27936: The round() function accepted a second None argument for some types but not for others. Fixed the inconsistency by accepting None for all numeric types.
bpo-27487: Warn if a submodule argument to «python -m» or runpy.run_module() is found in sys.modules after parent packages are imported, but before the submodule is executed.
bpo-27157: Make only type() itself accept the one-argument form. Patch by Eryk Sun and Emanuel Barry.
bpo-27558: Fix a SystemError in the implementation of «raise» statement. In a brand new thread, raise a RuntimeError since there is no active exception to reraise. Patch written by Xiang Zhang.
bpo-27942: Fix memory leak in codeobject.c
Библиотека¶
bpo-28732: Fix crash in os.spawnv() with no elements in args
bpo-28485: Always raise ValueError for negative compileall.compile_dir(workers=…) parameter, even when multithreading is unavailable.
bpo-28037: Use sqlite3_get_autocommit() instead of setting Connection->inTransaction manually.
bpo-25283: Attributes tm_gmtoff and tm_zone are now available on all platforms in the return values of time.localtime() and time.gmtime().
bpo-24454: Regular expression match object groups are now accessible using __getitem__. «mo[x]» is equivalent to «mo.group(x)».
bpo-10740: sqlite3 no longer implicitly commit an open transaction before DDL statements.
bpo-17941: Add a module parameter to collections.namedtuple().
bpo-22493: Inline flags now should be used only at the start of the regular expression. Deprecation warning is emitted if uses them in the middle of the regular expression.
bpo-26885: xmlrpc now supports unmarshalling additional data types used by Apache XML-RPC implementation for numerics and None.
bpo-28070: Fixed parsing inline verbose flag in regular expressions.
bpo-19500: Add client-side SSL session resumption to the ssl module.
bpo-28022: Deprecate ssl-related arguments in favor of SSLContext. The deprecation include manual creation of SSLSocket and certfile/keyfile (or similar) in ftplib, httplib, imaplib, smtplib, poplib and urllib.
bpo-28043: SSLContext has improved default settings: OP_NO_SSLv2, OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE, OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE and HIGH ciphers without MD5.
bpo-24693: Changed some RuntimeError’s in the zipfile module to more appropriate types. Improved some error messages and debugging output.
bpo-17909: Разрешить параметры с именами
json.load
иjson.loads
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27137: the pure Python fallback implementation of
functools.partial
now matches the behaviour of its accelerated C counterpart for subclassing, pickling and text representation purposes. Patch by Emanuel Barry and Serhiy Storchaka.Fix possible integer overflows and crashes in the mmap module with unusual usage patterns.
bpo-1703178: Fix the ability to pass the –link-objects option to the distutils build_ext command.
bpo-28019: itertools.count() no longer rounds non-integer step in range between 1.0 and 2.0 to 1.
bpo-18401: Pdb now supports the „readrc“ keyword argument to control whether .pdbrc files should be read. Patch by Martin Matusiak and Sam Kimbrel.
bpo-25969: Update the lib2to3 grammar to handle the unpacking generalizations added in 3.5.
bpo-14977: mailcap now respects the order of the lines in the mailcap files («first match»), as required by RFC 1542. Patch by Michael Lazar.
bpo-28082: Convert re flag constants to IntFlag.
bpo-28025: Convert all ssl module constants to IntEnum and IntFlags. SSLContext properties now return flags and enums.
bpo-23591: Add Flag, IntFlag, and auto() to enum module.
bpo-433028: Added support of modifier spans in regular expressions.
bpo-24594: Validates persist parameter when opening MSI database
bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.)
bpo-28047: Fixed calculation of line length used for the base64 CTE in the new email policies.
bpo-27576: Fix call order in OrderedDict.__init__().
email.generator.DecodedGenerator now supports the policy keyword.
bpo-28027: Remove undocumented modules from
Lib/plat-*
: IN, CDROM, DLFCN, TYPES, CDIO, and STROPTS.bpo-27445: Don’t pass str(_charset) to MIMEText.set_payload(). Patch by Claude Paroz.
bpo-24277: The new email API is no longer provisional, and the docs have been reorganized and rewritten to emphasize the new API.
bpo-22450: urllib now includes an
Accept: */*
header among the default headers. This makes the results of REST API requests more consistent and predictable especially when proxy servers are involved.lib2to3.pgen3.driver.load_grammar() now creates a stable cache file between runs given the same Grammar.txt input regardless of the hash randomization setting.
bpo-28005: Allow ImportErrors in encoding implementation to propagate.
bpo-26667: Support path-like objects in importlib.util.
bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers in the «ctypes» and «array» modules.
bpo-22233: Break email header lines only on the RFC specified CR and LF characters, not on arbitrary unicode line breaks. This also fixes a bug in HTTP header parsing.
bpo-27331: The email.mime classes now all accept an optional policy keyword.
bpo-27988: Fix email iter_attachments incorrect mutation of payload list.
bpo-16113: Add SHA-3 and SHAKE support to hashlib module.
Eliminate a tautological-pointer-compare warning in _scproxy.c.
bpo-27776: Разрешить параметры с именами
os.urandom()
и PEP 524 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27778: Разрешить параметры с именами
getrandom()
иos.getrandom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27691: Fix ssl module’s parsing of GEN_RID subject alternative name fields in X.509 certs.
bpo-18844: Add random.choices().
bpo-25761: Improved error reporting about truncated pickle data in C implementation of unpickler. UnpicklingError is now raised instead of AttributeError and ValueError in some cases.
bpo-26798: Add BLAKE2 (blake2b and blake2s) to hashlib.
bpo-26032: Optimized globbing in pathlib by using os.scandir(); it is now about 1.5–4 times faster.
bpo-25596: Optimized glob() and iglob() functions in the glob module; they are now about 3–6 times faster.
bpo-27928: Add scrypt (password-based key derivation function) to hashlib module (requires OpenSSL 1.1.0).
bpo-27850: Remove 3DES from ssl module’s default cipher list to counter measure sweet32 attack (CVE-2016-2183).
bpo-27766: Add ChaCha20 Poly1305 to ssl module’s default cipher list. (Required OpenSSL 1.1.0 or LibreSSL).
bpo-25387: Check return value of winsound.MessageBeep.
bpo-27866: Add SSLContext.get_ciphers() method to get a list of all enabled ciphers.
bpo-27744: Add AF_ALG (Linux Kernel crypto) to socket module.
bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.
bpo-11620: Fix support for SND_MEMORY in winsound.PlaySound. Based on a patch by Tim Lesher.
bpo-11734: Add support for IEEE 754 half-precision floats to the struct module. Based on a patch by Eli Stevens.
bpo-27919: Deprecated
extra_path
distribution option in distutils packaging.bpo-23229: Разрешить параметры с именами
cmath
иcmath.inf
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27842: The csv.DictReader now returns rows of type OrderedDict. (Contributed by Steve Holden.)
Remove support for passing a file descriptor to os.access. It never worked but previously didn’t raise.
bpo-12885: Fix error when distutils encounters symlink.
bpo-27881: Fixed possible bugs when setting sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.
bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory creates not a cursor. Patch by Xiang Zhang.
bpo-19884: Avoid spurious output on OS X with Gnu Readline.
bpo-27706: Restore deterministic behavior of random.Random().seed() for string seeds using seeding version 1. Allows sequences of calls to random() to exactly match those obtained in Python 2. Patch by Nofar Schnider.
bpo-10513: Fix a regression in Connection.commit(). Statements should not be reset after a commit.
bpo-12319: Chunked transfer encoding support added to http.client.HTTPConnection requests. The urllib.request.AbstractHTTPHandler class does not enforce a Content-Length header any more. If a HTTP request has a file or iterable body, but no Content-Length header, the library now falls back to use chunked transfer-encoding.
A new version of typing.py from https://github.com/python/typing: - Collection (only for 3.6) (bpo-27598) - Add FrozenSet to __all__ (upstream #261) - fix crash in _get_type_vars() (upstream #259) - Remove the dict constraint in ForwardRef._eval_type (upstream #252)
bpo-27832: Разрешить параметры с именами
_normalize
иFraction
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27539: Fix unnormalised
Fraction.__pow__
result in the case of negative exponent and negative base.bpo-21718: cursor.description is now available for queries using CTEs.
bpo-27819: In distutils sdists, simply produce the «gztar» (gzipped tar format) distributions on all platforms unless «formats» is supplied.
bpo-2466: posixpath.ismount now correctly recognizes mount points which the user does not have permission to access.
bpo-9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH for shared libraries.
bpo-27573: exit message for code.interact is now configurable.
bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to Paulo Andrade and Petr Viktorin for the analysis and patch.
bpo-6766: Distributed reference counting added to multiprocessing to support nesting of shared values / proxy objects.
bpo-21201: Improves readability of multiprocessing error message. Thanks to Wojciech Walczak for patch.
asyncio: Add set_protocol / get_protocol to Transports.
bpo-27456: asyncio: Set TCP_NODELAY by default.
IDLE¶
bpo-15308: Add „interrupt execution“ (^C) to Shell menu. Patch by Roger Serwy, updated by Bayard Randel.
bpo-27922: Stop IDLE tests from „flashing“ gui widgets on the screen.
bpo-27891: Consistently group and sort imports within idlelib modules.
bpo-17642: add larger font sizes for classroom projection.
Add version to title of IDLE help window.
bpo-25564: In section on IDLE – console differences, mention that using exec means that __builtins__ is defined for each statement.
bpo-27821: Fix 3.6.0a3 regression that prevented custom key sets from being selected when no custom theme was defined.
C API¶
Тесты¶
bpo-27427: Additional tests for the math module. Patch by Francisco Couzo.
bpo-27953: Skip math and cmath tests that fail on OS X 10.4 due to a poor libm implementation of tan.
bpo-26040: Improve test_math and test_cmath coverage and rigour. Patch by Jeff Allen.
bpo-27787: Call gc.collect() before checking each test for «dangling threads», since the dangling threads are weak references.
Построить¶
bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)
bpo-27705: Update message in validate_ucrtbase.py
bpo-27976: Deprecate building _ctypes with the bundled copy of libffi on non-OSX UNIX platforms.
bpo-27983: Cause lack of llvm-profdata tool when using clang as required for PGO linking to be a configure time error rather than make time when
--with-optimizations
is enabled. Also improve our ability to find the llvm-profdata tool on MacOS and some Linuxes.bpo-21590: Support for DTrace and SystemTap probes.
bpo-26307: The profile-opt build now applies PGO to the built-in modules.
bpo-26359: Add the –with-optimizations flag to turn on LTO and PGO build support when available.
bpo-27917: Set platform triplets for Android builds.
bpo-25825: Update references to the $(LIBPL) installation path on AIX. This path was changed in 3.2a4.
Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2.
bpo-21122: Fix LTO builds on OS X.
bpo-17128: Build OS X installer with a private copy of OpenSSL. Also provide a sample Install Certificates command script to install a set of root certificates from the third-party certifi module.
Инструменты/демоверсии¶
bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the current «re» module, avoid invalid Python backslash escapes, and fix a bug parsing escaped C quote signs.
Windows¶
bpo-28065: Update xz dependency to 5.2.2 and build it from source.
bpo-25144: Ensures TargetDir is set before continuing with custom install.
bpo-1602: Windows console doesn’t input or print Unicode (PEP 528)
bpo-27781: Change file system encoding on Windows to UTF-8 (PEP 529)
bpo-27731: Opt-out of MAX_PATH on Windows 10
bpo-6135: Adds encoding and errors parameters to subprocess.
bpo-27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec lookup.
bpo-27982: The functions of the winsound module now accept keyword arguments.
bpo-20366: Build full text search support into SQLite on Windows.
bpo-27756: Adds new icons for Python files and processes on Windows. Designs by Cherry Wang.
bpo-27883: Update sqlite to 3.14.1.0 on Windows.
Python 3.6.0 alpha 4¶
Release date: 2016-08-15
Ядро и встроенные модули¶
bpo-27704: Optimized creating bytes and bytearray from byte-like objects and iterables. Speed up to 3 times for short objects. Original patch by Naoki Inada.
bpo-26823: Large sections of repeated lines in tracebacks are now abbreviated as «[Previous line repeated {count} more times]» by the builtin traceback rendering. Patch by Emanuel Barry.
bpo-27574: Decreased an overhead of parsing keyword arguments in functions implemented with using Argument Clinic.
bpo-22557: Now importing already imported modules is up to 2.5 times faster.
bpo-17596: Include <wincrypt.h> to help with Min GW building.
bpo-17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER structure to avoid conflicting with the definition from Min GW.
bpo-27507: Add integer overflow check in bytearray.extend(). Patch by Xiang Zhang.
bpo-27581: Don’t rely on wrapping for overflow check in PySequence_Tuple(). Patch by Xiang Zhang.
bpo-1621: Avoid signed integer overflow in list and tuple operations. Patch by Xiang Zhang.
bpo-27419: Standard __import__() no longer look up «__import__» in globals or builtins for importing submodules or «from import». Fixed a crash if raise a warning about unabling to resolve package from __spec__ or __package__.
bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.
bpo-27514: Make having too many statically nested blocks a SyntaxError instead of SystemError.
bpo-27366: Implemented PEP 487 (Simpler customization of class creation). Upon subclassing, the __init_subclass__ classmethod is called on the base class. Descriptors are initialized with __set_name__ after class creation.
Библиотека¶
bpo-26027: Разрешить параметры с именами PEP 519 и bpo-27524 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-27598: Add Collections to collections.abc. Patch by Ivan Levkivskyi, docs by Neil Girdhar.
bpo-25958: Support «anti-registration» of special methods from various ABCs, like __hash__, __iter__ or __len__. All these (and several more) can be set to None in an implementation class and the behavior will be as if the method is not defined at all. (Previously, this mechanism existed only for __hash__, to make mutable classes unhashable.) Code contributed by Andrew Barnert and Ivan Levkivskyi.
bpo-16764: Support keyword arguments to zlib.decompress(). Patch by Xiang Zhang.
bpo-27736: Prevent segfault after interpreter re-initialization due to ref count problem introduced in code for bpo-27038 in 3.6.0a3. Patch by Xiang Zhang.
bpo-25628: The verbose and rename parameters for collections.namedtuple are now keyword-only.
bpo-12345: Add mathematical constant tau to math and cmath. See also PEP 628.
bpo-26823: traceback.StackSummary.format now abbreviates large sections of repeated lines as «[Previous line repeated {count} more times]» (this change then further affects other traceback display operations in the module). Patch by Emanuel Barry.
bpo-27664: Add to concurrent.futures.thread.ThreadPoolExecutor() the ability to specify a thread name prefix.
bpo-27181: Add geometric_mean and harmonic_mean to statistics module.
bpo-27573: code.interact now prints an message when exiting.
bpo-6422: Add autorange method to timeit.Timer objects.
bpo-27773: Correct some memory management errors server_hostname in _ssl.wrap_socket().
bpo-26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors. Removes the never publicly used, never documented unittest.mock.DescriptorTypes tuple.
bpo-26754: Undocumented support of general bytes-like objects as path in compile() and similar functions is now deprecated.
bpo-26800: Undocumented support of general bytes-like objects as paths in os functions is now deprecated.
bpo-26981: Add _order_ compatibility shim to enum.Enum for Python 2/3 code bases.
bpo-27661: Added tzinfo keyword argument to datetime.combine.
In the curses module, raise an error if window.getstr() or window.instr() is passed a negative value.
bpo-27783: Fix possible usage of uninitialized memory in operator.methodcaller.
bpo-27774: Fix possible Py_DECREF on unowned object in _sre.
bpo-27760: Fix possible integer overflow in binascii.b2a_qp.
bpo-27758: Fix possible integer overflow in the _csv module for large record lengths.
bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates that the script is in CGI mode.
bpo-7063: Remove dead code from the «array» module’s slice handling. Patch by Chuck.
bpo-27656: Do not assume sched.h defines any SCHED_* constants.
bpo-27130: In the «zlib» module, fix handling of large buffers (typically 4 GiB) when compressing and decompressing. Previously, inputs were limited to 4 GiB, and compression and decompression operations did not properly handle results of 4 GiB.
Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select module.
bpo-27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select module.
bpo-1621: Avoid signed int negation overflow in the «audioop» module.
bpo-27533: Release GIL in nt._isdir
bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original patch by Alexandre Vassalotti.
bpo-27522: Avoid an unintentional reference cycle in email.feedparser.
bpo-27512: Fix a segfault when os.fspath() called an __fspath__() method that raised an exception. Patch by Xiang Zhang.
IDLE¶
bpo-27714: text_textview and test_autocomplete now pass when re-run in the same process. This occurs when test_idle fails when run with the -w option but without -jn. Fix warning from test_config.
bpo-27621: Put query response validation error messages in the query box itself instead of in a separate messagebox. Redo tests to match. Add Mac OSX refinements. Original patch by Mark Roseman.
bpo-27620: Escape key now closes Query box as cancelled.
bpo-27609: IDLE: tab after initial whitespace should tab, not autocomplete. This fixes problem with writing docstrings at least twice indented.
bpo-27609: Explicitly return None when there are also non-None returns. In a few cases, reverse a condition and eliminate a return.
bpo-25507: IDLE no longer runs buggy code because of its tkinter imports. Users must include the same imports required to run directly in Python.
bpo-27173: Add „IDLE Modern Unix“ to the built-in key sets. Make the default key set depend on the platform. Add tests for the changes to the config module.
bpo-27452: add line counter and crc to IDLE configHandler test dump.
Тесты¶
bpo-25805: Skip a test in test_pkgutil as needed that doesn’t work when
__name__ == __main__
. Patch by SilentGhost.bpo-27472: Add test.support.unix_shell as the path to the default shell.
bpo-27369: In test_pyexpat, avoid testing an error message detail that changed in Expat 2.2.0.
bpo-27594: Prevent assertion error when running test_ast with coverage enabled: ensure code object has a valid first line number. Patch suggested by Ivan Levkivskyi.
Windows¶
Построить¶
bpo-27713: Suppress spurious build warnings when updating importlib’s bootstrap files. Patch by Xiang Zhang
bpo-25825: Correct the references to Modules/python.exp, which is required on AIX. The references were accidentally changed in 3.5.0a1.
bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi Hsuan Yen.
bpo-27641: The configure script now inserts comments into the makefile to prevent the pgen and _freeze_importlib executables from being cross-compiled.
bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be used for file generation during the build.
bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update FreedBSD version checks for the original ctype UTF-8 workaround.
Python 3.6.0 alpha 3¶
Release date: 2016-07-11
Безопасность¶
Ядро и встроенные модули¶
bpo-27473: Fixed possible integer overflow in bytes and bytearray concatenations. Patch by Xiang Zhang.
bpo-23034: The output of a special Python build with defined COUNT_ALLOCS, SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by default. It can be re-enabled using the «-X showalloccount» option. It now outputs to stderr instead of stdout.
bpo-27443: __length_hint__() of bytearray iterators no longer return a negative integer for a resized bytearray.
bpo-27007: The fromhex() class methods of bytes and bytearray subclasses now return an instance of corresponding subclass.
Библиотека¶
bpo-26844: Fix error message for imp.find_module() to refer to „path“ instead of „name“. Patch by Lev Maximov.
bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an error about unclean EOF.
bpo-27466: Change time format returned by http.cookie.time2netscape, confirming the netscape cookie format and making it consistent with documentation.
bpo-21708: Deprecated dbm.dumb behavior that differs from common dbm behavior: creating a database in „r“ and „w“ modes and modifying a database in „r“ mode.
bpo-26721: Change the socketserver.StreamRequestHandler.wfile attribute to implement BufferedIOBase. In particular, the write() method no longer does partial writes.
bpo-22115: Added methods trace_add, trace_remove and trace_info in the tkinter.Variable class. They replace old methods trace_variable, trace, trace_vdelete and trace_vinfo that use obsolete Tcl commands and might not work in future versions of Tcl. Fixed old tracing methods: trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now always returns a list of pairs of strings, tracing in the «u» mode now works.
bpo-26243: Only the level argument to zlib.compress() is keyword argument now. The first argument is positional-only.
bpo-27038: Expose the DirEntry type as os.DirEntry. Code patch by Jelle Zijlstra.
bpo-27186: Update os.fspath()/PyOS_FSPath() to check the return value of __fspath__() to be either str or bytes.
bpo-18726: All optional parameters of the dump(), dumps(), load() and loads() functions and JSONEncoder and JSONDecoder class constructors in the json module are now keyword-only.
bpo-27319: Methods selection_set(), selection_add(), selection_remove() and selection_toggle() of ttk.TreeView now allow passing multiple items as multiple arguments instead of passing them as a tuple. Deprecated undocumented ability of calling the selection() method with arguments.
bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct().
bpo-27294: Numerical state in the repr for Tkinter event objects is now represented as a combination of known flags.
bpo-27177: Match objects in the re module now support index-like objects as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang.
bpo-26754: Some functions (compile() etc) accepted a filename argument encoded as an iterable of integers. Now only strings and byte-like objects are accepted.
bpo-26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by Daniel Stokes.
bpo-27048: Prevents distutils failing on Windows when environment variables contain non-ASCII characters
bpo-27330: Fixed possible leaks in the ctypes module.
bpo-27238: Got rid of bare excepts in the turtle module. Original patch by Jelle Zijlstra.
bpo-27122: When an exception is raised within the context being managed by a contextlib.ExitStack() and one of the exit stack generators catches and raises it in a chain, do not re-raise the original exception when exiting, let the new chained one through. This avoids the PEP 479 bug described in issue25782.
bpo-16864: sqlite3.Cursor.lastrowid now supports REPLACE statement. Initial patch by Alex LordThorsen.
bpo-26386: Fixed ttk.TreeView selection operations with item id’s containing spaces.
bpo-8637: Honor a pager set by the env var MANPAGER (in preference to one set by the env var PAGER).
bpo-16182: Fix various functions in the «readline» module to use the locale encoding, and fix get_begidx() and get_endidx() to return code point indexes.
bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.
IDLE¶
bpo-27477: IDLE search dialogs now use ttk widgets.
bpo-27173: Add „IDLE Modern Unix“ to the built-in key sets. Make the default key set depend on the platform. Add tests for the changes to the config module.
bpo-27452: make command line «idle-test> python test_help.py» work. __file__ is relative when python is started in the file’s directory.
bpo-27452: add line counter and crc to IDLE configHandler test dump.
bpo-27380: IDLE: add query.py with base Query dialog and ttk widgets. Module had subclasses SectionName, ModuleName, and HelpSource, which are used to get information from users by configdialog and file =>Load Module. Each subclass has itw own validity checks. Using ModuleName allows users to edit bad module names instead of starting over. Add tests and delete the two files combined into the new one.
bpo-27372: Test_idle no longer changes the locale.
bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.
bpo-27245: IDLE: Cleanly delete custom themes and key bindings. Previously, when IDLE was started from a console or by import, a cascade of warnings was emitted. Patch by Serhiy Storchaka.
bpo-24137: Run IDLE, test_idle, and htest with tkinter default root disabled. Fix code and tests that fail with this restriction. Fix htests to not create a second and redundant root and mainloop.
bpo-27310: Fix IDLE.app failure to launch on OS X due to vestigial import.
C API¶
bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as an iterable of integers. Now only strings and byte-like objects are accepted.
Построить¶
bpo-28066: Fix the logic that searches build directories for generated include files when building outside the source tree.
bpo-27442: Expose the Android API level that python was built against, in sysconfig.get_config_vars() as „ANDROID_API_LEVEL“.
bpo-27434: The interpreter that runs the cross-build, found in PATH, must now be of the same feature version (e.g. 3.6) as the source being built.
bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.
bpo-23968: Rename the platform directory from plat-$(MACHDEP) to plat-$(PLATFORM_TRIPLET). Rename the config directory (LIBPL) from config-$(LDVERSION) to config-$(LDVERSION)-$(PLATFORM_TRIPLET). Install the platform specific _sysconfigdata module into the platform directory and rename it to include the ABIFLAGS.
Don’t use largefile support for GNU/Hurd.
Инструменты/демоверсии¶
Документация¶
Тесты¶
bpo-27027: Added test.support.is_android that is True when this is an Android build.
Python 3.6.0 alpha 2¶
Release date: 2016-06-13
Безопасность¶
bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.
Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by Team Oststrom.
bpo-26839: Разрешить параметры с именами
os.urandom()
иgetrandom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes. Patch by Demur Rumed.
bpo-27190: Raise NotSupportedError if sqlite3 is older than 3.3.1. Patch by Dave Sawyer.
bpo-27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. Calling function with generalized unpacking (PEP 448) and conflicting keyword names could cause undefined behavior.
bpo-27140: Added BUILD_CONST_KEY_MAP opcode.
bpo-27186: Add support for os.PathLike objects to open() (part of PEP 519).
bpo-27066: Fixed SystemError if a custom opener (for open()) returns a negative number without setting an exception.
bpo-26983: float() now always return an instance of exact float. The deprecation warning is emitted if __float__ returns an instance of a strict subclass of float. In a future versions of Python this can be an error.
bpo-27097: Python interpreter is now about 7% faster due to optimized instruction decoding. Based on patch by Demur Rumed.
bpo-26647: Python interpreter now uses 16-bit wordcode instead of bytecode. Patch by Demur Rumed.
bpo-23275: Allow assigning to an empty target list in round brackets: () = iterable.
bpo-27243: Update the __aiter__ protocol: instead of returning an awaitable that resolves to an asynchronous iterator, the asynchronous iterator should be returned directly. Doing the former will trigger a PendingDeprecationWarning.
Библиотека¶
Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) constants exposed on the API which are not implemented on GNU/Hurd. They would not work at runtime anyway.
bpo-27025: Generated names for Tkinter widgets are now more meaningful and recognizable.
bpo-25455: Fixed crashes in repr of recursive ElementTree.Element and functools.partial objects.
bpo-27294: Improved repr for Tkinter event objects.
bpo-20508: Improve exception message of IPv{4,6}Network.__getitem__. Patch by Gareth Rees.
bpo-21386: Implement missing IPv4Address.is_global property. It was documented since 07a5610bae9d. Initial patch by Roger Luethi.
bpo-27029: Removed deprecated support of universal newlines mode from ZipFile.open().
bpo-27030: Unknown escapes consisting of
'\'
and an ASCII letter in regular expressions now are errors. The re.LOCALE flag now can be used only with bytes patterns.bpo-27186: Add os.PathLike support to DirEntry (part of PEP 519). Initial patch by Jelle Zijlstra.
bpo-20900: distutils register command now decodes HTTP responses correctly. Initial patch by ingrid.
bpo-27186: Add os.PathLike support to pathlib, removing its provisional status (part of PEP 519). Initial patch by Dusty Phillips.
bpo-27186: Add support for os.PathLike objects to os.fsencode() and os.fsdecode() (part of PEP 519).
bpo-27186: Introduce os.PathLike and os.fspath() (part of PEP 519).
A new version of typing.py provides several new classes and features: @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some of the new features are not yet implemented in mypy or other static analyzers). Also classes for PEP 492 (Awaitable, AsyncIterable, AsyncIterator) have been added (in fact they made it into 3.5.1 but were never mentioned).
bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from sending a message body for 205 Reset Content. Also, don’t send Content header fields in responses that don’t have a body. Patch by Susumu Koshiba.
bpo-21313: Fix the «platform» module to tolerate when sys.version contains truncated build information.
bpo-23883: Added missing APIs to __all__ to match the documented APIs for the following modules: cgi, mailbox, mimetypes, plistlib and smtpd. Patches by Jacek Kołodziej.
bpo-27164: In the zlib module, allow decompressing raw Deflate streams with a predefined zdict. Based on patch by Xiang Zhang.
bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely write data to the client. Previously it could do partial writes and truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout doing partial writes, but this is deprecated.
bpo-21272: Use _sysconfigdata.py to initialize distutils.sysconfig.
bpo-19611: Разрешить параметры с именами
inspect
и.0
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26809: Разрешить параметры с именами
__all__
иstring
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26373: subprocess.Popen.communicate now correctly ignores BrokenPipeError when the child process dies before .communicate() is called in more/all circumstances.
signal, socket, and ssl module IntEnum constant name lookups now return a consistent name for values having multiple names. Ex: signal.Signals(6) now refers to itself as signal.SIGALRM rather than flipping between that and signal.SIGIOT based on the interpreter’s hash randomization seed.
bpo-27167: Clarify the subprocess.CalledProcessError error message text when the child process died due to a signal.
bpo-25931: Don’t define socketserver.Forking* names on platforms such as Windows that do not support os.fork().
bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch by Claudiu Popa.
bpo-26526: Replace custom parse tree validation in the parser module with a simple DFA validator.
bpo-27114: Fix SSLContext._load_windows_store_certs fails with PermissionError
bpo-18383: Avoid creating duplicate filters when using filterwarnings and simplefilter. Based on patch by Alex Shkop.
bpo-23026: winreg.QueryValueEx() now return an integer for REG_QWORD type.
bpo-26741: subprocess.Popen destructor now emits a ResourceWarning warning if the child process is still running.
bpo-27056: Optimize pickle.load() and pickle.loads(), up to 10% faster to deserialize a lot of small objects.
bpo-21271: New keyword only parameters in reset_mock call.
IDLE¶
bpo-5124: Paste with text selected now replaces the selection on X11. This matches how paste works on Windows, Mac, most modern Linux apps, and ttk widgets. Original patch by Serhiy Storchaka.
bpo-24750: Switch all scrollbars in IDLE to ttk versions. Where needed, minimal tests are added to cover changes.
bpo-24759: IDLE requires tk 8.5 and availability ttk widgets. Delete now unneeded tk version tests and code for older versions. Add test for IDLE syntax colorizer.
bpo-27239: idlelib.macosx.isXyzTk functions initialize as needed.
bpo-27262: move Aqua unbinding code, which enable context menus, to macosx.
bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is a private implementation of test.test_idle and tool for maintainers.
bpo-27196: Stop „ThemeChanged“ warnings when running IDLE tests. These persisted after other warnings were suppressed in #20567. Apply Serhiy Storchaka’s update_idletasks solution to four test files. Record this additional advice in idle_test/README.txt
bpo-20567: Revise idle_test/README.txt with advice about avoiding tk warning messages from tests. Apply advice to several IDLE tests.
bpo-24225: Update idlelib/README.txt with new file names and event handlers.
bpo-27156: Remove obsolete code not used by IDLE.
bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move code for configuring text widget colors to a new function.
bpo-24225: Разрешить параметры с именами
idlelib/*.py
иidle_test/test_*.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26673: When tk reports font size as 0, change to size 10. Such fonts on Linux prevented the configuration dialog from opening.
bpo-21939: Add test for IDLE’s percolator. Original patch by Saimadhav Heblikar.
bpo-21676: Add test for IDLE’s replace dialog. Original patch by Saimadhav Heblikar.
bpo-18410: Add test for IDLE’s search dialog. Original patch by Westley Martínez.
bpo-21703: Add test for undo delegator. Patch mostly by Saimadhav Heblikar .
bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
bpo-23977: Add more asserts to test_delegator.
Документация¶
bpo-16484: Change the default PYTHONDOCS URL to «https:», and fix the resulting links to use lowercase. Patch by Sean Rodman, test by Kaushik Nadikuditi.
bpo-24136: Document the new PEP 448 unpacking syntax of 3.5.
bpo-22558: Add remaining doc links to source code for Python-coded modules. Patch by Yoni Lavi.
Тесты¶
Windows¶
bpo-27064: The py.exe launcher now defaults to Python 3. The Windows launcher
py.exe
no longer prefers an installed Python 2 version over Python 3 by default when used interactively.bpo-17500: Remove unused and outdated icons. (See also: https://github.com/python/pythondotorg/issues/945)
Построить¶
C API¶
Инструменты/демоверсии¶
bpo-26282: Argument Clinic now supports positional-only and keyword parameters in the same function.
Python 3.6.0 alpha 1¶
Release date: 2016-05-16
Безопасность¶
bpo-26657: Fix directory traversal vulnerability with http.server on Windows. This fixes a regression that was introduced in 3.3.4rc1 and 3.4.0rc1. Based on patch by Philipp Hagemeister.
bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is empty. Patch by Baji.
bpo-25939: On Windows open the cert store readonly in ssl.enum_certificates.
Ядро и встроенные модули¶
bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by Xavier de Gaye.
bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the «N» format unit.
bpo-26991: Fix possible refleak when creating a function with annotations.
bpo-27039: Fixed bytearray.remove() for values greater than 127. Based on patch by Joe Jevnik.
bpo-23640: int.from_bytes() no longer bypasses constructors for subclasses.
bpo-27005: Optimized the float.fromhex() class method for exact float. It is now 2 times faster.
bpo-18531: Single var-keyword argument of dict subtype was passed unscathed to the C-defined function. Now it is converted to exact dict.
bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL pointer.
bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for interpolation unintentionally added with move to Python 3. Behavior no longer does any interpolation in .pypirc files, matching behavior in Python 2.7 and Setuptools 19.0.
bpo-26249: Разрешить параметры с именами
PyMem_Malloc()
иPYMEM_DOMAIN_MEM
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26802: Optimize function calls only using unpacking like
func(*tuple)
(no other positional argument, no keyword): avoid copying the tuple. Patch written by Joe Jevnik.bpo-26659: Make the builtin slice type support cycle collection.
bpo-26718: super.__init__ no longer leaks memory if called multiple times. NOTE: A direct call of super.__init__ is not endorsed!
bpo-27138: Fix the doc comment for FileFinder.find_spec().
bpo-25339: PYTHONIOENCODING now has priority over locale in setting the error handler for stdin and stdout.
bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes are generic sequence iterators, iterators of str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding views and os.scandir() iterator.
bpo-26574: Разрешить параметры с именами
bytes.replace(b'', b'.')
иbytearray.replace(b'', b'.')
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26581: If coding cookie is specified multiple times on a line in Python source code file, only the first one is taken to account.
bpo-19711: Add tests for reloading namespace packages.
bpo-21099: Switch applicable importlib tests to use PEP 451 API.
bpo-26563: Debug hooks on Python memory allocators now raise a fatal error if functions of the
PyMem_Malloc()
family are called without holding the GIL.bpo-26564: On error, the debug hooks on Python memory allocators now use the
tracemalloc
module to get the traceback where a memory block was allocated.bpo-26558: The debug hooks on Python memory allocator
PyObject_Malloc()
now detect when functions are called without holding the GIL.bpo-26516: Add
PYTHONMALLOC
environment variable to set the Python memory allocators and/or install debug hooks.bpo-26516: The
PyMem_SetupDebugHooks()
function can now also be used on Python compiled in release mode.bpo-26516: The
PYTHONMALLOCSTATS
environment variable can now also be used on Python compiled in release mode. It now has no effect if set to an empty string.bpo-26516: In debug mode, debug hooks are now also installed on Python memory allocators when Python is configured without pymalloc.
bpo-26464: Fix str.translate() when string is ASCII and first replacements removes character, but next replacement uses a non-ASCII character or a string longer than 1 character. Regression introduced in Python 3.5.0.
bpo-22836: Ensure exception reports from PyErr_Display() and PyErr_WriteUnraisable() are sensible even when formatting them produces secondary errors. This affects the reports produced by sys.__excepthook__() and when __del__() raises an exception.
bpo-26302: Correct behavior to reject comma as a legal character for cookie names.
bpo-26136: Upgrade the warning when a generator raises StopIteration from PendingDeprecationWarning to DeprecationWarning. Patch by Anish Shah.
bpo-26204: Разрешить параметры с именами
1.0
иdef f(): 1.0
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-4806: Avoid masking the original TypeError exception when using star (
*
) unpacking in function calls. Based on patch by Hagen Fürstenau and Daniel Urban.bpo-26146: Add a new kind of AST node:
ast.Constant
. It can be used by external AST optimizers, but the compiler does not emit directly such node.bpo-23601: Sped-up allocation of dict key objects by using Python’s small object allocator. (Contributed by Julian Taylor.)
bpo-18018: Import raises ImportError instead of SystemError if a relative import is attempted without a known parent package.
bpo-25843: Разрешить параметры с именами
f1, f2 = lambda: 1, lambda: 1.0
иf1()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26107: The format of the
co_lnotab
attribute of code objects changes to support negative line number delta.bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get the current Python thread state, but don’t issue a fatal error if it is NULL. This new function must be used instead of accessing directly the _PyThreadState_Current variable. The variable is no more exposed since Python 3.5.1 to hide the exact implementation of atomic C types, to avoid compiler issues.
bpo-25791: If __package__ != __spec__.parent or if neither __package__ or __spec__ are defined then ImportWarning is raised.
bpo-22995: [UPDATE] Comment out the one of the pickleability tests in _PyObject_GetState() due to regressions observed in Cython-based projects.
bpo-25961: Disallowed null characters in the type name.
bpo-25973: Fix segfault when an invalid nonlocal statement binds a name starting with two underscores.
bpo-22995: Instances of extension types with a state that aren’t subclasses of list or dict and haven’t implemented any pickle-related methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or __getstate__), can no longer be pickled. Including memoryview.
bpo-20440: Massive replacing unsafe attribute setting code with special macro Py_SETREF.
bpo-25766: Special method __bytes__() now works in str subclasses.
bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size. This allows sys.getsize() to work correctly with their subclasses with __slots__ defined.
bpo-25709: Fixed problem with in-place string concatenation and utf-8 cache.
bpo-5319: New Py_FinalizeEx() API allowing Python to set an exit status of 120 on failure to flush buffered streams.
bpo-25485: telnetlib.Telnet is now a context manager.
bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside __getattr__.
bpo-24731: Fixed crash on converting objects with special methods __bytes__, __trunc__, and __float__ returning instances of subclasses of bytes, int, and float to subclasses of bytes, int, and float correspondingly.
bpo-25630: Fix a possible segfault during argument parsing in functions that accept filesystem paths.
bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess internals regarding how fds_to_pass were passed to the child. The bug had no actual impact as subprocess.py already avoided it.
bpo-25388: Fixed tokenizer crash when processing undecodable source code with a null byte.
bpo-25462: The hash of the key now is calculated only once in most operations in C implementation of OrderedDict.
bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now rejects builtin types with not defined __new__.
bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec() and eval() are passed bytes-like objects. These objects are not necessarily terminated by a null byte, but the functions assumed they were.
bpo-25555: Fix parser and AST: fill lineno and col_offset of «arg» node when compiling AST from Python objects.
bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that was mutated by direct calls of dict methods.
bpo-25449: Iterating OrderedDict with keys with unstable hash now raises KeyError in C implementations as well as in Python implementation.
bpo-25395: Fixed crash when highly nested OrderedDict structures were garbage collected.
bpo-25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now between 2x and 3.5x faster.
bpo-25399: Optimize bytearray % args using the new private _PyBytesWriter API. Formatting is now between 2.5 and 5 times faster.
bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new recursion limit is too low depending at the current recursion depth. Modify also the «lower-water mark» formula to make it monotonic. This mark is used to decide when the overflowed flag of the thread state is reset.
bpo-24402: Fix input() to prompt to the redirected stdout when sys.stdout.fileno() fails.
bpo-25349: Optimize bytes % args using the new private _PyBytesWriter API. Formatting is now up to 2 times faster.
bpo-24806: Prevent builtin types that are not allowed to be subclassed from being subclassed through multiple inheritance.
bpo-25301: Разрешить параметры с именами
ignore
иreplace
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.
bpo-25267: Разрешить параметры с именами
ignore
иreplace
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25280: Import trace messages emitted in verbose (-v) mode are no longer formatted twice.
bpo-25227: Optimize ASCII and latin1 encoders with the
surrogateescape
error handler: the encoders are now up to 3 times as fast. Initial patch written by Serhiy Storchaka.bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom() function instead of the getentropy() function. The getentropy() function is blocking to generate very good quality entropy, os.urandom() doesn’t need such high-quality entropy.
bpo-9232: Modify Python’s grammar to allow trailing commas in the argument list of a function declaration. For example, «def f(*, a = 3,): pass» is now legal. Patch from Mark Dickinson.
bpo-24965: Implement PEP 498 «Literal String Interpolation». This allows you to embed expressions inside f-strings, which are converted to normal strings at run time. Given x=3, then f’value={x}“ == „value=3“. Patch by Eric V. Smith.
bpo-26478: Fix semantic bugs when using binary operators with dictionary views and tuples.
bpo-26171: Fix possible integer overflow and heap corruption in zipimporter.get_data().
bpo-25660: Fix TAB key behaviour in REPL with readline.
bpo-26288: Optimize PyLong_AsDouble.
bpo-26289: Optimize floor and modulo division for single-digit longs. Microbenchmarks show 2-2.5x improvement. Built-in „divmod“ function is now also ~10% faster. (See also: bpo-26315)
bpo-25887: Raise a RuntimeError when a coroutine object is awaited more than once.
Библиотека¶
bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by SELinux and fails with EACCESS. The function now falls back to fcntl(). Patch written by Michał Bednarski.
bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!
bpo-27031: Removed dummy methods in Tkinter widget classes: tk_menuBar() and tk_bindForTraversal().
bpo-14132: Fix urllib.request redirect handling when the target only has a query string. Original fix by Ján Janech.
bpo-17214: The «urllib.request» module now percent-encodes non-ASCII bytes found in redirect target URLs. Some servers send Location header fields with non-ASCII bytes, but «http.client» requires the request target to be ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch by Christian Heimes.
bpo-27033: The default value of the decode_data parameter for smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False.
bpo-27034: Removed deprecated class asynchat.fifo.
bpo-26870: Added readline.set_auto_history(), which can stop entries being automatically added to the history list. Based on patch by Tyler Crompton.
bpo-26039: zipfile.ZipFile.open() can now be used to write data into a ZIP file, as well as for extracting data. Patch by Thomas Kluyver.
bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch contributed by Chi Hsuan Yen.
bpo-22274: In the subprocess module, allow stderr to be redirected to stdout even when stdout is not redirected. Patch by Akira Li.
bpo-26807: mock_open „files“ no longer error on readline at end of file. Patch from Yolanda Robla.
bpo-25745: Fixed leaking a userptr in curses panel destructor.
bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper in statistics.pvariance.
bpo-26002: Use bisect in statistics.median instead of a linear search. Patch by Upendra Kuma.
bpo-25974: Make use of new Decimal.as_integer_ratio() method in statistics module. Patch by Stefan Krah.
bpo-26881: The modulefinder module now supports extended opcode arguments.
bpo-23815: Fixed crashes related to directly created instances of types in _tkinter and curses.panel modules.
bpo-17765: weakref.ref() no longer silently ignores keyword arguments. Patch by Georg Brandl.
bpo-26873: xmlrpc now raises ResponseError on unsupported type tags instead of silently return incorrect result.
bpo-26915: The __contains__ methods in the collections ABCs now check for identity before checking equality. This better matches the behavior of the concrete classes, allows sensible handling of NaNs, and makes it easier to reason about container invariants.
bpo-26711: Fixed the comparison of plistlib.Data with other types.
bpo-24114: Разрешить параметры с именами
ctypes.util
иcrle
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26864: In urllib.request, change the proxy bypass host checking against no_proxy to be case-insensitive, and to not match unrelated host names that happen to have a bypassed hostname as a suffix. Patch by Xiang Zhang.
bpo-24902: Print server URL on http.server startup. Initial patch by Felix Kaiser.
bpo-25788: fileinput.hook_encoded() now supports an «errors» argument for passing to open. Original patch by Joseph Hackman.
bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by Xiang Zhang.
bpo-26804: urllib.request will prefer lower_case proxy environment variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter Jansen.
bpo-26837: assertSequenceEqual() now correctly outputs non-stringified differing items (like bytes in the -b mode). This affects assertListEqual() and assertTupleEqual().
bpo-26041: Remove «will be removed in Python 3.7» from deprecation messages of platform.dist() and platform.linux_distribution(). Patch by Kumaripaba Miyurusara Athukorala.
bpo-26822: itemgetter, attrgetter and methodcaller objects no longer silently ignore keyword arguments.
bpo-26733: Disassembling a class now disassembles class and static methods. Patch by Xiang Zhang.
bpo-26801: Разрешить параметры с именами
shutil.get_terminal_size()
иAttributeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24838: tarfile’s ustar and gnu formats now correctly calculate name and link field limits for multibyte character encodings like utf-8.
bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by Anthony Sottile.
bpo-26782: Add STARTUPINFO to subprocess.__all__ on Windows.
bpo-26404: Add context manager to socketserver. Patch by Aviv Palivoda.
bpo-26735: Разрешить параметры с именами
os.urandom()
иgetrandom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26585: Eliminate http.server._quote_html() and use html.escape(quote=False). Patch by Xiang Zhang.
bpo-26685: Raise OSError if closing a socket fails.
bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola“.
bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.
bpo-26587: the site module now allows .pth files to specify files to be added to sys.path (e.g. zip files).
bpo-25609: Introduce contextlib.AbstractContextManager and typing.ContextManager.
bpo-26709: Fixed Y2038 problem in loading binary PLists.
bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our own SIGWINCH handler. Patch by Eric Price.
bpo-25951: Change SSLSocket.sendall() to return None, as explicitly documented for plain socket objects. Patch by Aviv Palivoda.
bpo-26586: In http.server, respond with «413 Request header fields too large» if there are too many header fields to parse, rather than killing the connection and raising an unhandled exception. Patch by Xiang Zhang.
bpo-26676: Added missing XMLPullParser to ElementTree.__all__.
bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable() to always return False.
bpo-26492: Exhausted iterator of array.array now conforms with the behavior of iterators of other mutable sequences: it lefts exhausted even if iterated array is extended.
bpo-26641: doctest.DocFileTest and doctest.testfile() now support packages (module split into multiple directories) for the package parameter.
bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer.
bpo-26644: Raise ValueError rather than SystemError when a negative length is passed to SSLSocket.recv() or read().
bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes instead of up to 1024.
bpo-26616: Fixed a bug in datetime.astimezone() method.
bpo-26637: Разрешить параметры с именами
importlib
иImportError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21925: Разрешить параметры с именами
warnings.formatwarning()
иlinecache.getline()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23848: On Windows, faulthandler.enable() now also installs an exception handler to dump the traceback of all Python threads on any Windows exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).
bpo-26530: Разрешить параметры с именами
_PyTraceMalloc_Track()
и_PyTraceMalloc_Untrack()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26588: The _tracemalloc now supports tracing memory allocations of multiple address spaces (domains).
bpo-24266: Ctrl+C during Readline history search now cancels the search mode when compiled with Readline 7.
bpo-26590: Implement a safe finalizer for the _socket.socket type. It now releases the GIL to close the socket.
bpo-18787: spwd.getspnam() now raises a PermissionError if the user doesn’t have privileges.
bpo-26560: Avoid potential ValueError in BaseHandler.start_response. Initial patch by Peter Inglesby.
bpo-26567: Разрешить параметры с именами
PyErr_ResourceWarning()
иwarnings.WarningMessage
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26569: Разрешить параметры с именами
pyclbr.readmodule()
иpyclbr.readmodule_ex()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26499: Account for remaining Content-Length in HTTPResponse.readline() and read1(). Based on patch by Silent Ghost. Also document that HTTPResponse now supports these methods.
bpo-25320: Handle sockets in directories unittest discovery is scanning. Patch from Victor van den Elzen.
bpo-16181: cookiejar.http2time() now returns None if year is higher than datetime.MAXYEAR.
bpo-26513: Fixes platform module detection of Windows Server
bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by Tamás Bence Gedai.
bpo-26323: Add Mock.assert_called() and Mock.assert_called_once() methods to unittest.mock. Patch written by Amit Saha.
bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise NotImplementedError instead of ImportError.
bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
bpo-15068: Got rid of excessive buffering in fileinput. The bufsize parameter is now deprecated and ignored.
bpo-19475: Added an optional argument timespec to the datetime isoformat() method to choose the precision of the time component.
bpo-2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy.
bpo-26167: Minimized overhead in copy.copy() and copy.deepcopy(). Optimized copying and deepcopying bytearrays, NotImplemented, slices, short lists, tuples, dicts, sets.
bpo-25718: Fixed pickling and copying the accumulate() iterator with total is None.
bpo-26475: Fixed debugging output for regular expressions with the (?x) flag.
bpo-26482: Allowed pickling recursive dequeues.
bpo-26335: Make mmap.write() return the number of bytes written like other write methods. Patch by Jakub Stasiak.
bpo-26457: Fixed the subnets() methods in IP network classes for the case when resulting prefix length is equal to maximal prefix length. Based on patch by Xiang Zhang.
bpo-26385: Remove the file if the internal open() call in NamedTemporaryFile() fails. Patch by Silent Ghost.
bpo-26402: Fix XML-RPC client to retry when the server shuts down a persistent connection. This was a regression related to the new http.client.RemoteDisconnected exception in 3.5.0a4.
bpo-25913: Leading
<~
is optional now in base64.a85decode() with adobe=True. Patch by Swati Jaiswal.bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.
bpo-26367: importlib.__import__() raises ImportError like builtins.__import__() when
level
is specified but without an accompanying package specified.bpo-26309: In the «socketserver» module, shut down the request (closing the connected socket) when verify_request() returns false. Patch by Aviv Palivoda.
bpo-23430: Change the socketserver module to only catch exceptions raised from a request handler that are derived from Exception (instead of BaseException). Therefore SystemExit and KeyboardInterrupt no longer trigger the handle_error() method, and will now to stop a single-threaded server.
bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.
bpo-25994: Added the close() method and the support of the context manager protocol for the os.scandir() iterator.
bpo-23992: multiprocessing: make MapResult not fail-fast upon exception.
bpo-26243: Support keyword arguments to zlib.compress(). Patch by Aviv Palivoda.
bpo-26117: The os.scandir() iterator now closes file descriptor not only when the iteration is finished, but when it was failed with error.
bpo-25949: __dict__ for an OrderedDict instance is now created only when needed.
bpo-25911: Restored support of bytes paths in os.walk() on Windows.
bpo-26045: Add UTF-8 suggestion to error message when posting a non-Latin-1 string with http.client.
bpo-26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir(). Patch by Thomas Kluyver.
bpo-12923: Reset FancyURLopener’s redirect counter even if there is an exception. Based on patches by Brian Brazil and Daniel Rocco.
bpo-25945: Fixed a crash when unpickle the functools.partial object with wrong state. Fixed a leak in failed functools.partial constructor. «args» and «keywords» attributes of functools.partial have now always types tuple and dict correspondingly.
bpo-26202: copy.deepcopy() now correctly copies range() objects with non-atomic attributes.
bpo-23076: Path.glob() now raises a ValueError if it’s called with an invalid pattern. Patch by Thomas Nyberg.
bpo-19883: Fixed possible integer overflows in zipimport.
bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and gethostbyname_ex() functions of the socket module now decode the hostname from the ANSI code page rather than UTF-8.
bpo-26099: The site module now writes an error into stderr if sitecustomize module can be imported but executing the module raise an ImportError. Same change for usercustomize.
bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8 encoding.
bpo-25935: Garbage collector now breaks reference loops with OrderedDict.
bpo-16620: Fixed AttributeError in msilib.Directory.glob().
bpo-26013: Added compatibility with broken protocol 2 pickles created in old Python 3 versions (3.4.3 and lower).
bpo-26129: Deprecated accepting non-integers in grp.getgrgid().
bpo-25850: Use cross-compilation by default for 64-bit Windows.
bpo-25822: Add docstrings to the fields of urllib.parse results. Patch contributed by Swati Jaiswal.
bpo-22642: Convert trace module option parsing mechanism to argparse. Patch contributed by SilentGhost.
bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing before $() vars.
bpo-26069: Remove the deprecated apis in the trace module.
bpo-22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully.
bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode option if it is safe to do so.
bpo-26012: Don’t traverse into symlinks for
**
pattern in pathlib.Path.[r]glob().bpo-24120: Ignore PermissionError when traversing a tree with pathlib.Path.[r]glob(). Patch by Ulrich Petri.
bpo-21815: Accept ] characters in the data portion of imap responses, in order to handle the flags with square brackets accepted and produced by servers such as gmail.
bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer attribute (restores backward compatibility).
bpo-25971: Optimized creating Fractions from floats by 2 times and from Decimals by 3 times.
bpo-25802: Document as deprecated the remaining implementations of importlib.abc.Loader.load_module().
bpo-25928: Add Decimal.as_integer_ratio().
bpo-25447: Copying the lru_cache() wrapper object now always works, independently from the type of the wrapped object (by returning the original object unchanged).
bpo-25768: Have the functions in compileall return booleans instead of ints and add proper documentation and tests for the return values.
bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.
bpo-25860: os.fwalk() no longer skips remaining directories when error occurs. Original patch by Samson Lee.
bpo-25914: Fixed and simplified OrderedDict.__sizeof__.
bpo-25869: Optimized deepcopying ElementTree; it is now 20 times faster.
bpo-25873: Optimized iterating ElementTree. Iterating elements Element.iter() is now 40% faster, iterating text Element.itertext() is now up to 2.5 times faster.
bpo-25902: Fixed various refcount issues in ElementTree iteration.
bpo-22227: The TarFile iterator is reimplemented using generator. This implementation is simpler that using class.
bpo-25638: Optimized ElementTree.iterparse(); it is now 2x faster. Optimized ElementTree parsing; it is now 10% faster.
bpo-25761: Improved detecting errors in broken pickle data.
bpo-25717: Restore the previous behaviour of tolerating most fstat() errors when opening files. This was a regression in 3.5a1, and stopped anonymous temporary files from working in special cases.
bpo-24903: Fix regression in number of arguments compileall accepts when „-d“ is specified. The check on the number of arguments has been dropped completely as it never worked correctly anyway.
bpo-25764: In the subprocess module, preserve any exception caused by fork() failure when preexec_fn is used.
bpo-25771: Tweak the exception message for importlib.util.resolve_name() when „package“ isn’t specified but necessary.
bpo-6478: _strptime’s regexp cache now is reset after changing timezone with time.tzset().
bpo-14285: When executing a package with the «python -m package» option, and package initialization fails, a proper traceback is now reported. The «runpy» module now lets exceptions from package initialization pass back to the caller, rather than raising ImportError.
bpo-19771: Also in runpy and the «-m» option, omit the irrelevant message «… is a package and cannot be directly executed» if the package could not even be initialized (e.g. due to a bad
*.pyc
file).bpo-25177: Fixed problem with the mean of very small and very large numbers. As a side effect, statistics.mean and statistics.variance should be significantly faster.
bpo-25718: Fixed copying object with state with boolean value is false.
bpo-10131: Fixed deep copying of minidom documents. Based on patch by Marian Ganisin.
bpo-7990: dir() on ElementTree.Element now lists properties: «tag», «text», «tail» and «attrib». Original patch by Santoso Wijaya.
bpo-25725: Fixed a reference leak in pickle.loads() when unpickling invalid data including tuple instructions.
bpo-25663: In the Readline completer, avoid listing duplicate global names, and search the global namespace before searching builtins.
bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.
bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.
bpo-25691: Fixed crash on deleting ElementTree.Element attributes.
bpo-25624: ZipFile now always writes a ZIP_STORED header for directory entries. Patch by Dingyuan Wang.
bpo-25626: Change three zlib functions to accept sizes that fit in Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a regression in 3.5 where GzipFile.read() failed to read chunks larger than 2 or 4 GiB. The change affects the zlib.Decompress.decompress() max_length parameter, the zlib.decompress() bufsize parameter, and the zlib.Decompress.flush() length parameter.
bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) when the OS gives priority to errors such as EACCES over EEXIST.
bpo-25593: Change semantics of EventLoop.stop() in asyncio.
bpo-6973: When we know a subprocess.Popen process has died, do not allow the send_signal(), terminate(), or kill() methods to do anything as they could potentially signal a different process.
bpo-23883: Added missing APIs to __all__ to match the documented APIs for the following modules: calendar, csv, enum, fileinput, ftplib, logging, optparse, tarfile, threading and wave. Also added a test.support.check__all__() helper. Patches by Jacek Kołodziej, Mauro S. M. Rodrigues and Joel Taddei.
bpo-25590: In the Readline completer, only call getattr() once per attribute. Also complete names of attributes such as properties and slots which are listed by dir() but not yet created on an instance.
bpo-25498: Fix a crash when garbage-collecting ctypes objects created by wrapping a memoryview. This was a regression made in 3.5a1. Based on patch by Eryksun.
bpo-25584: Added «escape» to the __all__ list in the glob module.
bpo-25584: Fixed recursive glob() with patterns starting with
**
.bpo-25446: Fix regression in smtplib’s AUTH LOGIN support.
bpo-18010: Fix the pydoc web server’s module search function to handle exceptions from importing packages.
bpo-25554: Got rid of circular references in regular expression parsing.
bpo-18973: Command-line interface of the calendar module now uses argparse instead of optparse.
bpo-25510: fileinput.FileInput.readline() now returns b““ instead of „“ at the end if the FileInput was opened with binary mode. Patch by Ryosuke Ito.
bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties. Original patch by John Mark Vandenberg.
bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.
bpo-21827: Fixed textwrap.dedent() for the case when largest common whitespace is a substring of smallest leading whitespace. Based on patch by Robert Li.
bpo-25447: The lru_cache() wrapper objects now can be copied and pickled (by returning the original object unchanged).
bpo-25390: typing: Don’t crash on Union[str, Pattern].
bpo-25441: asyncio: Raise error from drain() when socket is closed.
bpo-25410: Cleaned up and fixed minor bugs in C implementation of OrderedDict.
bpo-25411: Improved Unicode support in SMTPHandler through better use of the email package. Thanks to user simon04 for the patch.
Move the imp module from a PendingDeprecationWarning to DeprecationWarning.
bpo-25407: Remove mentions of the formatter module being removed in Python 3.6.
bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end() that caused segmentation fault or hang in iterating after moving several items to the start of ordered dict.
bpo-25382: pickletools.dis() now outputs implicit memo index for the MEMOIZE opcode.
bpo-25357: Add an optional newline parameter to binascii.b2a_base64(). base64.b64encode() uses it to avoid a memory copy.
bpo-24164: Objects that need calling
__new__
with keyword arguments, can now be pickled using pickle protocols older than protocol version 4.bpo-25364: zipfile now works in threads disabled builds.
bpo-25328: smtpd’s SMTPChannel now correctly raises a ValueError if both decode_data and enable_SMTPUTF8 are set to true.
bpo-16099: RobotFileParser now supports Crawl-delay and Request-rate extensions. Patch by Nikolay Bogoychev.
bpo-25316: distutils raises OSError instead of DistutilsPlatformError when MSVC is not installed.
bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in pickletools.opcodes.
bpo-23972: Updates asyncio datagram create method allowing reuseport and reuseaddr socket options to be set prior to binding the socket. Mirroring the existing asyncio create_server method the reuseaddr option for datagram sockets defaults to True if the O/S is „posix“ (except if the platform is Cygwin). Patch by Chris Laws.
bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a coroutine to a loop from another thread, returning a concurrent.futures.Future. By Vincent Michel.
bpo-25232: Fix CGIRequestHandler to split the query from the URL at the first question mark (?) rather than the last. Patch from Xiang Zhang.
bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query part of the URL as if it were a path. Patch from Xiang Zhang.
bpo-25287: Don’t add crypt.METHOD_CRYPT to crypt.methods if it’s not supported. Check if it is supported, it may not be supported on OpenBSD for example.
bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong results in some cases.
bpo-25203: Failed readline.set_completer_delims() no longer left the module in inconsistent state.
bpo-25011: rlcompleter now omits private and special attribute names unless the prefix starts with underscores.
bpo-25209: rlcompleter now can add a space or a colon after completed keyword.
bpo-22241: timezone.utc name is now plain „UTC“, not „UTC-00:00“.
bpo-23517: fromtimestamp() and utcfromtimestamp() methods of datetime.datetime now round microseconds to nearest with ties going to nearest even integer (ROUND_HALF_EVEN), as round(float), instead of rounding towards -Infinity (ROUND_FLOOR).
bpo-23552: Timeit now warns when there is substantial (4x) variance between best and worst times. Patch from Serhiy Storchaka.
bpo-24633: site-packages/README -> README.txt.
bpo-24879: help() and pydoc can now list named tuple fields in the order they were defined rather than alphabetically. The ordering is determined by the _fields attribute if present.
bpo-24874: Improve speed of itertools.cycle() and make its pickle more compact.
Fix crash in itertools.cycle.__setstate__() when the first argument wasn’t a list.
bpo-20059: urllib.parse raises ValueError on all invalid ports. Patch by Martin Panter.
bpo-24360: Improve __repr__ of argparse.Namespace() for invalid identifiers. Patch by Matthias Bussonnier.
bpo-23426: run_setup was broken in distutils. Patch from Alexander Belopolsky.
bpo-13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond.
bpo-2091: open() accepted a „U“ mode string containing „+“, but „U“ can only be used with „r“. Patch from Jeff Balogh and John O’Connor.
bpo-8585: improved tests for zipimporter2. Patch from Mark Lawrence.
bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst.
bpo-24426: Fast searching optimization in regular expressions now works for patterns that starts with capturing groups. Fast searching optimization now can’t be disabled at compile time.
bpo-23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi
bpo-13248: Remove deprecated inspect.getmoduleinfo function.
bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().
bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating ssl.SSLContext.
bpo-25569: Fix memory leak in SSLSocket.getpeercert().
bpo-25471: Sockets returned from accept() shouldn’t appear to be nonblocking.
bpo-25319: When threading.Event is reinitialized, the underlying condition should use a regular lock rather than a recursive lock.
Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu Davis.
bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк Коренберг.
bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.
bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input. Patch by Jack O’Connor.
bpo-27040: Add loop.get_exception_handler method
bpo-27041: asyncio: Add loop.create_future method
IDLE¶
bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav Heblikar.
In the „IDLE-console differences“ section of the IDLE doc, clarify how running with IDLE affects sys.modules and the standard streams.
bpo-25507: fix incorrect change in IOBinding that prevented printing. Augment IOBinding htest to include all major IOBinding functions.
bpo-25905: Revert unwanted conversion of „ to ’ RIGHT SINGLE QUOTATION MARK in README.txt and open this and NEWS.txt with „ascii“. Re-encode CREDITS.txt to utf-8 and open it with „utf-8“.
bpo-15348: Stop the debugger engine (normally in a user process) before closing the debugger window (running in the IDLE process). This prevents the RuntimeErrors that were being caught and ignored.
bpo-24455: Prevent IDLE from hanging when a) closing the shell while the debugger is active (15347); b) closing the debugger with the [X] button (15348); and c) activating the debugger when already active (24455). The patch by Mark Roseman does this by making two changes. 1. Suspend and resume the gui.interaction method with the tcl vwait mechanism intended for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow any existing interaction to terminate first.
Change „The program“ to „Your program“ in an IDLE „kill program?“ message to make it clearer that the program referred to is the currently running user program, not IDLE itself.
bpo-24750: Improve the appearance of the IDLE editor window status bar. Patch by Mark Roseman.
bpo-25313: Change the handling of new built-in text color themes to better address the compatibility problem introduced by the addition of IDLE Dark. Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
bpo-24782: Extension configuration is now a tab in the IDLE Preferences dialog rather than a separate dialog. The former tabs are now a sorted list. Patch by Mark Roseman.
bpo-22726: Re-activate the config dialog help button with some content about the other buttons and the new IDLE Dark theme.
bpo-24820: IDLE now has an „IDLE Dark“ built-in text color theme. It is more or less IDLE Classic inverted, with a cobalt blue background. Strings, comments, keywords, … are still green, red, orange, … . To use it with IDLEs released before November 2015, hit the „Save as New Custom Theme“ button and enter a new name, such as „Custom Dark“. The custom theme will work with any IDLE release, and can be modified.
bpo-25224: README.txt is now an idlelib index for IDLE developers and curious users. The previous user content is now in the IDLE doc chapter. „IDLE“ now means „Integrated Development and Learning Environment“.
bpo-24820: Users can now set breakpoint colors in Settings -> Custom Highlighting. Original patch by Mark Roseman.
bpo-24972: Inactive selection background now matches active selection background, as configured by users, on all systems. Found items are now always highlighted on Windows. Initial patch by Mark Roseman.
bpo-24570: Idle: make calltip and completion boxes appear on Macs affected by a tk regression. Initial patch by Mark Roseman.
bpo-24988: Idle ScrolledList context menus (used in debugger) now work on Mac Aqua. Patch by Mark Roseman.
bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by Mark Roseman.
bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac OSX, make them a „sheet“. Patch by Mark Roseman.
bpo-25198: Enhance the initial html viewer now used for Idle Help. Properly indent fixed-pitch text (patch by Mark Roseman). Give code snippet a very Sphinx-like light blueish-gray background. Re-use initial width and height set by users for shell and editor. When the Table of Contents (TOC) menu is used, put the section header at the top of the screen.
bpo-25225: Condense and rewrite Idle doc section on text colors.
bpo-21995: Explain some differences between IDLE and console Python.
bpo-22820: Explain need for print when running file from Idle editor.
bpo-25224: Doc: augment Idle feature list and no-subprocess section.
bpo-25219: Update doc for Idle command line options. Some were missing and notes were not correct.
bpo-24861: Most of idlelib is private and subject to change. Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
bpo-25199: Idle: add synchronization comments for future maintainers.
bpo-16893: Replace help.txt with help.html for Idle doc display. The new idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks better than help.txt and will better document Idle as released. The tkinter html viewer that works for this file was written by Rose Roseman. The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).
Документация¶
bpo-26736: Used HTTPS for external links in the documentation if possible.
bpo-6953: Rework the Readline module documentation to group related functions together, and add more details such as what underlying Readline functions and variables are accessed.
bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.
bpo-24952: Clarify the default size argument of stack_size() in the «threading» and «_thread» modules. Patch from Mattip.
bpo-26014: Update 3.x packaging documentation: * «See also» links to the new docs are now provided in the legacy pages * links to setuptools documentation have been updated
Тесты¶
bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory Loyse and Jelle Zijlstra.
bpo-26295: When using «python3 -m test –testdir=TESTDIR», regrtest doesn’t add «test.» prefix to test module names.
bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool) was untested.
bpo-26015: Added new tests for pickling iterators of mutable sequences.
bpo-26325: Added test.support.check_no_resource_warning() to check that no ResourceWarning is emitted.
bpo-25940: Changed test_ssl to use its internal local server more. This avoids relying on svn.python.org, which recently changed root certificate.
bpo-25616: Tests for OrderedDict are extracted from test_collections into separate file test_ordered_dict.
bpo-25449: Added tests for OrderedDict subclasses.
bpo-25188: Add -P/–pgo to test.regrtest to suppress error output when running the test suite for the purposes of a PGO build. Initial patch by Alecsandru Patrascu.
bpo-22806: Add
python -m test --list-tests
command to list tests.bpo-18174:
python -m test --huntrleaks ...
now also checks for leak of file descriptors. Patch written by Richard Oudkerk.bpo-25260: Fix
python -m test --coverage
on Windows. Remove the list of ignored directories.PCbuild\rt.bat
now accepts an unlimited number of arguments to pass along to regrtest.py. Previously there was a limit of 9.bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files cannot be written.
Построить¶
bpo-21277: Don’t try to link _ctypes with a ffi_convenience library.
bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier de Gaye.
bpo-26932: Fixed support of RTLD_* constants defined as enum values, not via macros (in particular on Android). Patch by Chi Hsuan Yen.
bpo-22359: Disable the rules for running _freeze_importlib and pgen when cross-compiling. The output of these programs is normally saved with the source code anyway, and is still regenerated when doing a native build. Patch by Xavier de Gaye.
bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except on Mac OS X. Patch written by Chi Hsuan Yen.
bpo-25702: A –with-lto configure option has been added that will enable link time optimizations at build time during a make profile-opt. Some compilers and toolchains are known to not produce stable code when using LTO, be sure to test things thoroughly before relying on it. It can provide a few % speed up over profile-opt alone.
bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old versions.
bpo-17603: Avoid error about nonexistent fileblocks.o file by using a lower-level check for st_blocks in struct stat.
bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern Thiel.
bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.
bpo-25348: Разрешить параметры с именами
--pgo
и--pgo-job
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25827: Разрешить параметры с именами
configure
и--with-icc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25696: Fix installation of Python on UNIX with make -j9.
bpo-24986: It is now possible to build Python on Windows without errors when external libraries are not available.
bpo-24421: Compile Modules/_math.c once, before building extensions. Previously it could fail to compile properly if the math and cmath builds were concurrent.
bpo-26465: Update OS X 10.5+ 32-bit-only installer to build and link with OpenSSL 1.0.2g.
bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.
bpo-25136: Support Apple Xcode 7’s new textual SDK stub libraries.
bpo-24324: Do not enable unreachable code warnings when using gcc as the option does not work correctly in older versions of gcc and has been silently removed as of gcc-4.5.
Windows¶
bpo-27053: Updates make_zip.py to correctly generate library ZIP file.
bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases that don’t include the contents of the include directory (that is, 1.0.2e and later).
bpo-26071: bdist_wininst created binaries fail to start and find 32bit Python
bpo-26073: Update the list of magic numbers in launcher
bpo-26065: Excludes venv from library when generating embeddable distro.
bpo-25022: Removed very outdated PC/example_nt/ directory.
Инструменты/демоверсии¶
bpo-26799: Fix python-gdb.py: don’t get C types once when the Python code is loaded, but get C types on demand. The C types can change if python-gdb.py is loaded before the Python executable. Patch written by Thomas Ilsche.
bpo-26271: Fix the Freeze tool to properly use flags passed through configure. Patch by Daniel Shaulov.
bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py. Patch by Guo Ci Teo.
bpo-26316: Fix variable name typo in Argument Clinic.
bpo-25440: Fix output of python-config –extension-suffix.
bpo-25154: The pyvenv script has been deprecated in favour of
python3 -m venv
.
C API¶
bpo-26312: SystemError is now raised in all programming bugs with using PyArg_ParseTupleAndKeywords(). RuntimeError did raised before in some programming bugs.
bpo-26198: ValueError is now raised instead of TypeError on buffer overflow in parsing «es#» and «et#» format units. SystemError is now raised instead of TypeError on programmatical error in parsing format string.
Python 3.5.5 final¶
Release date: 2018-02-04
There were no new changes in version 3.5.5.
Python 3.5.5 release candidate 1¶
Release date: 2018-01-23
Безопасность¶
bpo-32551: Разрешить параметры с именами
sys.path[0]
и bpo-29139 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-30657: Fixed possible integer overflow in PyBytes_DecodeEscape, CVE-2017-1000158. Original patch by Jay Bosamiya; rebased to Python 3 by Miro Hrončok.
bpo-30947: Обновите встроенную копию libexpat с версии 2.2.1 до 2.2.3, чтобы получить исправления безопасности.
Ядро и встроенные модули¶
bpo-31095: Разрешить параметры с именами
tp_dealloc
иPyObject_GC_UnTrack()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Библиотека¶
bpo-32072: Исправлены проблемы с бинарными списками: Исправлено сохранение байтовых массивов. Идентичные объекты будут сохраняться только один раз. Равные ссылки будут загружаться как идентичные объекты. Добавлена поддержка сохранения и загрузки рекурсивных структур данных.
bpo-31170: expat: Обновление libexpat с 2.2.3 до 2.2.4. Исправление копирования частичных символов для ввода UTF-8 (ошибка 115 в libexpat): https://github.com/libexpat/libexpat/issues/115.
Python 3.5.4 final¶
Release date: 2017-08-07
Библиотека¶
bpo-30119: ftplib.FTP.putline() теперь выбрасывает ошибку ValueError на команды, содержащие CR или LF. Исправление от Donghee Na.
Python 3.5.4 release candidate 1¶
Release date: 2017-07-23
Безопасность¶
bpo-30730: Предотвращает внедрение переменных окружения в подпроцесс в Windows. Предотвращает передачу других переменных окружения и командных аргументов.
bpo-30694: Разрешить параметры с именами CVE-2017-9233 и CVE-2016-9063 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-30500: Разрешить параметры с именами
splithost('//127.0.0.1#@evil.com/')
и127.0.0.1
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29591: Разрешить параметры с именами CVE-2016-0718 и CVE-2016-4472 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Ядро и встроенные модули¶
bpo-30876: Относительный импорт из незагруженного пакета теперь повторно импортирует пакет вместо ошибки SystemError. Относительный импорт из непакета теперь завершается с ошибкой ImportError, а не SystemError.
bpo-30765: Избегайте блокировки в pthread_mutex_lock(), когда PyThread_acquire_lock() просят не блокировать.
bpo-27945: Исправлены различные segfault’ы с dict, когда входные коллекции мутируют во время поиска, вставки или сравнения. Основано на исправлениях Дуэйна Гриффина и Тима Митчелла.
bpo-25794: Исправлены type.__setattr__() и type.__delattr__() для неинтернированных имен атрибутов. Основано на исправлении Эрика Суна.
bpo-29935: Исправлены сообщения об ошибках в методе index() кортежей, списков и deque при передаче индексов неправильного типа.
bpo-28876: Разрешить параметры с именами
bool(range)
иlen(range)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29600: Fix wrapping coroutine return values in StopIteration.
bpo-29537: Restore runtime compatibility with bytecode files generated by CPython 3.5.0 to 3.5.2, and adjust the eval loop to avoid the problems that could be caused by the malformed variant of the BUILD_MAP_UNPACK_WITH_CALL opcode that they may contain. Patch by Petr Viktorin, Serhiy Storchaka, and Nick Coghlan.
bpo-28598: Поддержка __rmod__ для подклассов str, вызываемых перед str.__mod__. Исправление от Martijn Pieters.
bpo-29602: Исправлена некорректная обработка подписанных нулей в конструкторе complex для подклассов complex и для входов, имеющих метод __complex__. Исправление Сергея Сторчака.
bpo-29347: Исправлена возможность разыменования неопределенных указателей при создании объектов weakref.
bpo-29438: Исправлена проблема use-after-free в дикте разделения ключей.
bpo-29319: Предотвращение перезаписи RunMainFromImporter в sys.path[0].
bpo-29337: Исправлено возможное предупреждение BytesWarning при сравнении объектов кода. Предупреждения могли выдаваться во время компиляции.
bpo-29478: Если при использовании политики Compat32 указано значение max_line_length=None, оно больше не игнорируется. Исправление Мирчи Косбука.
Библиотека¶
bpo-29403: Исправьте autospec
unittest.mock
, чтобы он не ошибался при использовании встроенных функций с привязкой к методу. Исправление Аарона Галлахера.bpo-30961: Исправление декрементирования заимствованной ссылки в tracemalloc.
bpo-30886: Исправьте multiprocessing.Queue.join_thread(): теперь он ожидает завершения потока, даже если поток был запущен тем же процессом, который создал очередь.
bpo-29854: Исправление segfault в readline при использовании опции readline’s history-size. Исправление Нира Соффера.
bpo-30807: signal.setitimer() может отключить таймер при передаче крошечного значения. Крошечные значения (например, 1e-6) являются допустимыми ненулевыми значениями для setitimer(), которая задана как принимающая интервалы с микросекундным разрешением. Однако на некоторых платформах наша процедура преобразования может превратить 1e-6 в нулевой интервал, тем самым отключив таймер вместо того, чтобы (повторно) запланировать его.
bpo-30441: Исправление ошибки при изменении os.environ во время итерации по нему
bpo-30532: Исправление парсера значений заголовков электронной почты, удаляющего пробелы при складывании в некоторых случаях.
bpo-29169: Обновление zlib до версии 1.2.11.
bpo-30879: os.listdir() и os.scandir() теперь выдают имена байтов при вызове с аргументом типа bytes.
bpo-30746: Разрешить параметры с именами
os.putenv()
иos.spawn*()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29755: Исправлено семейство функций lgettext() в модуле gettext. Теперь они всегда возвращают байты.
bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases when a package is only shipped with bytecodes. Patch by Alexandru Ardelean.
bpo-23890: unittest.TestCase.assertRaises() теперь вручную разрывает цикл ссылок, чтобы не держать объекты живыми дольше, чем ожидается.
bpo-30149: inspect.signature() теперь поддерживает callables с параметрами с переменными аргументами, обернутыми partialmethod. Исправление от Donghee Na.
bpo-29931: Исправлена проверка сравнения для объектов ipaddress.ip_interface. Исправление от Sanjay Sundaresan.
bpo-24484: Избегайте состояния гонки при многопроцессорной очистке.
bpo-28994: Больше не отображается обратный след для SystemExit, вызванного в обратном вызове, зарегистрированном atexit.
bpo-30508: Не регистрируйте исключения, если был вызван метод Task/Future «cancel()».
bpo-28556: Обновления в модуле типизации: Добавление общего AsyncContextManager, добавление поддержки ContextManager на всех версиях. Авторы оригинальных PR: Jelle Zijlstra и Ivan Levkivskyi
bpo-29870: Исправление утечек ssl-сокетов при прерывании соединения в реализации asyncio/ssl. Исправление от Michaël Sghaïer.
bpo-29743: Закрытие транспорта во время процесса рукопожатия приводит к утечке открытого сокета. Исправление от Николая Кима
bpo-27585: Исправление отмены ожидания в asyncio.Lock. Исправление от Mathieu Sornay.
bpo-30418: В Windows subprocess.Popen.communicate() теперь также игнорирует EINVAL на stdin.write(), если дочерний процесс все еще запущен, но закрыл трубу.
bpo-30378: Исправление проблемы, из-за которой logging.handlers.SysLogHandler не может обрабатывать IPv6-адреса.
bpo-29960: Сохранение состояния генератора, когда _random.Random.setstate() вызывает исключение. Исправление от Bryan Olson.
bpo-30414: multiprocessing.Queue._feed фоновый запущенный поток не прерывается из главного цикла при исключении.
bpo-30003: Исправлена работа со сбегающими символами в кодеке HZ. Основано на патче Ма Лина.
bpo-30301: Исправление ошибки AttributeError при использовании SimpleQueue.empty() в методах запуска spawn и forkserver.
bpo-30329: imaplib и poplib теперь отлавливают ошибку WSAEINVAL сокета Windows (код 10022) при выключении(SHUT_RDWR): Была предпринята попытка выполнить недопустимую операцию. Эта ошибка иногда возникает при SSL-соединениях.
bpo-30375: Предупреждения, выдаваемые при компиляции регулярного выражения, теперь всегда указывают на строку в пользовательском коде. Ранее они могли указывать на внутренности модуля re, если выдавались изнутри групп или условий.
bpo-30048: Разрешить параметры с именами
Task.cancel()
иawait
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29990: Исправление проверки диапазона в декодере GB18030. Оригинальный патч от Ma Lin.
bpo-26293: Change resulted because of zipfile breakage. (See also: bpo-29094)
bpo-30243: Удалены методы __init__ сканера и кодировщика _json. Их неправильное использование могло привести к утечкам памяти или сбоям. Теперь объекты сканера и кодировщика полностью инициализируются в методах __new__.
bpo-30185: Избегайте отслеживания прерываний KeyboardInterrupt в вспомогательном процессе forkserver при получении Ctrl-C.
bpo-28556: Различные обновления модуля типизации: добавление типа typing.NoReturn, использование WrapperDescriptorType, исправление мелких ошибок. Авторы оригинальных PR - Джим Фасаракис-Хиллиард и Иван Левкивский.
bpo-30205: Исправление getsockname() для несвязанных сокетов AF_UNIX в Linux.
bpo-30070: Исправлены утечки и сбои в обработке ошибок в модуле парсера.
bpo-30061: Исправлены сбои в методах IOBase __next__() и readlines(), когда readline() или __next__() соответственно возвращали объект, не имеющий размера. Исправлены возможные другие ошибки, вызванные непроверкой результатов PyObject_Size(), PySequence_Size() или PyMapping_Size().
bpo-30068: _io._IOBase.readlines будет проверять, закрыт ли он первым при наличии подсказки.
bpo-29694: Исправлено состояние гонки в pathlib mkdir с флагом parents=True. Исправление от Армина Риго.
bpo-29692: Исправлена произвольная развязка исключений RuntimeError в contextlib.contextmanager. Исправление Сиддхарта Веланкара.
bpo-29998: При пикировке и копировании ImportError теперь сохраняются атрибуты имени и пути.
bpo-29942: Исправление сбоя в itertools.chain.from_iterable при столкновении с длинными прогонами пустых итераций.
bpo-27863: Исправлены многочисленные сбои в ElementTree, вызванные условиями гонки и неправильными типами.
bpo-28699: Исправлена ошибка в пулах в файле multiprocessing.pool, в результате которой при возникновении исключения в самом начале итерабельной таблицы исключение могло быть проглочено или привести к зависанию программы. Исправление подготовили Дэвин Поттс и Сян Чжан.
bpo-25803: Избегайте некорректных ошибок, выдаваемых Path.mkdir(exist_ok=True), когда ОС отдает приоритет ошибкам типа EACCES перед EEXIST.
bpo-29861: Освободите ссылки на задачи, их аргументы и результаты, как только они завершатся в multiprocessing.Pool.
bpo-29884: faulthandler: Восстановление старого sigaltstack во время сноса. Исправление Кристофа Зейтуни.
bpo-25455: Исправлены сбои при repr рекурсивных буферизованных файлоподобных объектов.
bpo-29800: Исправление сбоев в partial.__repr__, если ключи partial.keywords не являются строками. Исправление от Michael Seifert.
bpo-29742: get_extra_info() вызывает исключение, если вызывается на закрытом ssl-транспорте. Исправление от Николая Кима.
bpo-8256: Исправлена возможность сбоя или падения input(), если атрибуты «encoding» или «errors» в sys.stdin или sys.stdout не установлены или не являются строками.
bpo-28298: Fix a bug that prevented array „Q“, „L“ and „I“ from accepting big intables (objects that have __int__) as elements. Patch by Oren Milman.
bpo-29615: SimpleXMLRPCDispatcher больше не цепляет KeyError (или любое другое исключение) к исключению(ям), поднятому(ым) в диспетчеризируемых методах. Исправление от Петра Мотейлека.
bpo-29704: asyncio.subprocess.SubprocessStreamProtocol больше не закрывается до закрытия всех труб.
bpo-29703: Исправьте asyncio для поддержки инстанцирования новых циклов событий в дочерних процессах.
bpo-29376: Исправьте ошибку утверждения в threading._DummyThread.is_alive().
bpo-29110: Исправление утечки объекта файла в aifc.open(), когда файл указан как путь к файловой системе и не является допустимым форматом AIFF. Исправление Энтони Чжана.
bpo-28961: Исправление помощника unittest.mock._Call: больше не игнорирует параметр name. Автор патча - Jiajun Huang.
bpo-29532: Изменение словаря kwarg, переданного в functools.partial(), больше не влияет на частичный объект после его создания.
bpo-28556: Различные обновления модуля типизации: typing.Counter, typing.ChainMap, улучшено кэширование ABC и т.д. Авторы оригинальных PR: Jelle Zijlstra, Ivan Levkivskyi, Manuel Krebber и Łukasz Langa.
bpo-29100: Исправьте регрессию datetime.fromtimestamp(), появившуюся в Python 3.6.0: проверьте минимальный и максимальный годы.
bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when used with a rare combination of multiprocessing and custom codecs.
bpo-29416: Предотвращение бесконечного цикла в pathlib.Path.mkdir
bpo-29444: Исправлено обращение к буферу за пределами границ в методе group() объекта match. Основано на исправлении от WGH.
bpo-29335: Исправьте subprocess.Popen.wait(), когда дочерний процесс вышел не в завершенное, а в остановленное состояние (например, при наличии ptrace).
bpo-29290: Исправление регрессии в argparse, из-за которой сообщения справки обрывались на неразрывных пробелах.
bpo-28735: Исправлено сравнение mock.MagickMock с mock.ANY.
bpo-29011: Fix an important omission by adding Deque to the typing module.
bpo-29219: Исправлена бесконечная рекурсия при повторном использовании неинициализированных экземпляров ctypes.CDLL.
bpo-28969: Исправлено состояние гонки в реализации functools.lru_cache на C. KeyError могла быть вызвана, когда кэшированная функция с полным кэшем одновременно вызывалась из разных потоков с одинаковыми некэшированными аргументами.
bpo-29142: В urllib.request суффиксы в переменной окружения no_proxy с ведущими точками могли повторно соответствовать связанным именам хостов (например, .b.c соответствует a.b.c). Исправление Милана Оберкирха.
Документация¶
bpo-30176: Add missing attribute related constants in curses documentation.
bpo-26985: Add missing info of code object in inspect documentation.
bpo-28929: Link the documentation to its source file on GitHub.
bpo-25008: Document smtpd.py as effectively deprecated and add a pointer to aiosmtpd, a third-party asyncio-based replacement.
bpo-26355: Add canonical header link on each page to corresponding major version of the documentation. Patch by Matthias Bussonnier.
bpo-29349: Fix Python 2 syntax in code for building the documentation.
Тесты¶
bpo-30822: Fix regrtest command line parser to allow passing -u extralargefile to run test_zipfile64.
bpo-30383: Разрешить параметры с именами bpo-30523 и bpo-30540 с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
bpo-30357: test_thread: setUp() now uses support.threading_setup() and support.threading_cleanup() to wait until threads complete to avoid random side effects on following tests. Initial patch written by Grzegorz Grzywacz.
bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip some tests of select.poll when running on macOS due to unresolved issues with the underlying system poll function on some macOS versions.
bpo-30197: Enhanced functions swap_attr() and swap_item() in the test.support module. They now work when delete replaced attribute or item inside the with statement. The old value of the attribute or item (or None if it doesn’t exist) now will be assigned to the target of the «as» clause, if there is one.
bpo-29571: Разрешить параметры с именами
re.LOCALE
иlocale.getpreferredencoding(False)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасланда
Построить¶
bpo-29243: Разрешить параметры с именами
make test
иmake install
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23404: Разрешить параметры с именами
make touch
иmake regen-all
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-29643: Fix
--enable-optimization
didn’t work.
Windows¶
C API¶
bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if Py_LIMITED_API is set to the value between 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher.
bpo-29083: Fixed the declaration of some public API functions. PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and Py_BuildValue() were not available in limited API of version < 3.3 when PY_SSIZE_T_CLEAN is defined.
Python 3.5.3 final¶
Release date: 2017-01-17
There were no code changes between 3.5.3rc1 and 3.5.3 final.
Python 3.5.3 release candidate 1¶
Release date: 2017-01-02
Безопасность¶
Ядро и встроенные модули¶
bpo-29073: bytearray formatting no longer truncates on first null byte.
bpo-28932: Не включайте <sys/random.h>, если он не существует.
bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must not convert combined table into split table.
bpo-25677: Исправление позиционирования символа синтаксической ошибки для блоков с отступами. Основано на исправлении Майкла Лейзелла.
bpo-29000: Исправлено форматирование байтов окталов с нулевой прокладкой в альтернативной форме.
bpo-28512: Исправлена установка атрибута смещения SyntaxError с помощью PyErr_SyntaxLocationEx() и PyErr_SyntaxLocationObject().
bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy bug caused by a monkey-patched len() function.
bpo-28648: Исправлен сбой в Py_DecodeLocale() в отладочной сборке на Mac OS X при декодировании астральных символов. Исправление от Xiang Zhang.
bpo-19398: Лишний слэш больше не добавляется к компонентам sys.path в случае пустых компонентов PYTHONPATH во время компиляции.
bpo-28426: Исправлен потенциальный сбой в PyUnicode_AsDecodedObject() в отладочной сборке.
bpo-23782: Исправлена возможная утечка памяти в _PyTraceback_Add() и потеря исключений в PyTraceBack_Here().
bpo-28379: Добавлены проверки на вменяемость и тесты для PyUnicode_CopyCharacters(). Исправление от Xiang Zhang.
bpo-28376: Тип итератора дальнего действия теперь регистрируется как Iterator. Исправление от Орена Милмана.
bpo-28376: The constructor of range_iterator now checks that step is not 0. Patch by Oren Milman.
bpo-26906: Разрешение специальных методов неинициализированного типа теперь вызывает неявную инициализацию типа вместо отказа.
bpo-18287: PyType_Ready() теперь проверяет, что tp_name не является NULL. Автор оригинального патча - Никлас Коеп.
bpo-24098: Исправлено возможное падение при изменении AST в процессе компиляции.
bpo-28350: Строковые константы с нулевым символом больше не интернируются.
bpo-26617: Исправление сбоя при запуске GC во время обратного вызова weakref.
bpo-27942: Строковые константы теперь рекурсивно интернализируются в кортежах и фростенсетах.
bpo-21578: Исправлено вводящее в заблуждение сообщение об ошибке при вызове ImportError с недопустимыми ключевыми словами args.
bpo-28203: Fix incorrect type in error message from
complex(1.0, {2:3})
. Patch by Soumya Sharma.bpo-27955: Откат при чтении устройства /dev/urandom, когда системный вызов getrandom() терпит неудачу с EPERM, например, при блокировке SECCOMP.
bpo-28131: Исправление регрессии в zipimport’s compile_source(). zipimport должен использовать тот же уровень оптимизации, что и интерпретатор.
bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is compiled with NSMALLPOSINTS = 0.
bpo-25758: Prevents zipimport from unnecessarily encoding a filename (patch by Eryk Sun)
bpo-28189: dictitems_contains no longer swallows compare errors. (Patch by Xiang Zhang)
bpo-27812: Properly clear out a generator’s frame’s backreference to the generator to prevent crashes in frame.clear().
bpo-27811: Fix a crash when a coroutine that has not been awaited is finalized with warnings-as-errors enabled.
bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after use of „def“ in _PyState_AddModule(). Initial patch by Christian Heimes.
bpo-26020: set literal evaluation order did not match documented behaviour.
bpo-27782: Разрешить параметры с именами
m_methods
иPy_create_mod
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-27936: The round() function accepted a second None argument for some types but not for others. Fixed the inconsistency by accepting None for all numeric types.
bpo-27487: Warn if a submodule argument to «python -m» or runpy.run_module() is found in sys.modules after parent packages are imported, but before the submodule is executed.
bpo-27558: Fix a SystemError in the implementation of «raise» statement. In a brand new thread, raise a RuntimeError since there is no active exception to reraise. Patch written by Xiang Zhang.
bpo-27419: Standard __import__() no longer look up «__import__» in globals or builtins for importing submodules or «from import». Fixed handling an error of non-string package name.
bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.
bpo-27514: Make having too many statically nested blocks a SyntaxError instead of SystemError.
bpo-27473: Fixed possible integer overflow in bytes and bytearray concatenations. Patch by Xiang Zhang.
bpo-27507: Add integer overflow check in bytearray.extend(). Patch by Xiang Zhang.
bpo-27581: Don’t rely on wrapping for overflow check in PySequence_Tuple(). Patch by Xiang Zhang.
bpo-27443: __length_hint__() of bytearray iterators no longer return a negative integer for a resized bytearray.
bpo-27942: Fix memory leak in codeobject.c
Библиотека¶
bpo-15812: inspect.getframeinfo() теперь корректно показывает первую строку контекста. Исправление Сэма Бриза.
bpo-29094: Offsets in a ZIP file created with extern file object and modes «w» and «x» now are relative to the start of the file.
bpo-13051: Исправлены ошибки рекурсии в больших или измененных по размеру curses.textpad.Textbox. Основано на патче Тихо Андерсена.
bpo-29119: Fix weakrefs in the pure python version of collections.OrderedDict move_to_end() method. Contributed by Andra Bogildea.
bpo-9770: предикаты curses.ascii теперь корректно работают с отрицательными целыми числами.
bpo-28427: старые ключи не должны удалять новые значения из WeakValueDictionary при сборе из другого потока.
bpo-28923: Удалите артефакты редактора из Tix.py.
bpo-28871: Исправлен сбой при деаллокации глубокого дерева ElementTree.
bpo-19542: Исправление ошибок в WeakValueDictionary.setdefault() и WeakValueDictionary.pop(), когда сбор GC происходит в другом потоке.
bpo-20191: Fixed a crash in resource.prlimit() when pass a sequence that doesn’t own its elements as limits.
bpo-28779: multiprocessing.set_forkserver_preload() приведет к аварийному завершению процесса forkserver, если предварительно загруженный модуль инстанцирует некоторые объекты мультипроцессинга, такие как блокировки.
bpo-28847: dbm.dumb now supports reading read-only files and no longer writes the index file when it is not changed.
bpo-25659: В ctypes предотвратите падение при вызове методов from_buffer() и from_buffer_copy() для абстрактных классов типа Array.
bpo-28732: Fix crash in os.spawnv() with no elements in args
bpo-28485: Always raise ValueError for negative compileall.compile_dir(workers=…) parameter, even when multithreading is unavailable.
bpo-28387: Исправлено возможное падение деаллокатора _io.TextIOWrapper, когда сборщик мусора вызывался в другом потоке. Основано на исправлении Себастьяна Куфре.
bpo-27517: Компрессор и декомпрессор LZMA больше не вызывают исключения, если им дважды передаются пустые данные. Исправление от Бенджамина Фогла.
bpo-28549: Исправлена ошибка segfault в addch() в curses с ncurses6.
bpo-28449: tarfile.open() с режимом «r» или «r:» теперь пытается открыть tar-файл со сжатием, прежде чем пытаться открыть его без сжатия. В противном случае с вероятностью 50% он терпел неудачу при ignore_zeros=True.
bpo-23262: Модуль webbrowser теперь поддерживает Firefox 36+ и производные браузеры. Основано на патче Олега Бройтмана.
bpo-27939: Исправлены ошибки в tkinter.ttk.LabeledScale и tkinter.Scale, вызванные внутренним представлением шкалы как float-значения в Tk. tkinter.IntVar теперь работает, если float-значение установлено в базовую переменную Tk.
bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at the start of new line after printing a month’s calendar. Patch by Xiang Zhang.
bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. Based on patch by Kaarle Ritvanen.
bpo-28353: os.fwalk() no longer fails on broken links.
bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a workaround to Tix library bug.
bpo-28488: shutil.make_archive() no longer add entry «./» to ZIP archive.
bpo-24452: Make webbrowser support Chrome on Mac OS X.
bpo-20766: Fix references leaked by pdb in the handling of SIGINT handlers.
bpo-26293: Fixed writing ZIP files that starts not from the start of the file. Offsets in ZIP file now are relative to the start of the archive in conforming to the specification.
bpo-28321: Fixed writing non-BMP characters with binary format in plistlib.
bpo-28322: Fixed possible crashes when unpickle itertools objects from incorrect pickle data. Based on patch by John Leitch.
Fix possible integer overflows and crashes in the mmap module with unusual usage patterns.
bpo-1703178: Fix the ability to pass the –link-objects option to the distutils build_ext command.
bpo-28253: Fixed calendar functions for extreme months: 0001-01 and 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so that they don’t call itermonthdates() which can cause datetime.date under/overflow.
bpo-28275: Fixed possible use after free in the decompress() methods of the LZMADecompressor and BZ2Decompressor classes. Original patch by John Leitch.
bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() if pass invalid string-like object as a name. Patch by Xiang Zhang.
bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. Patch by Madison May.
bpo-27611: Fixed support of default root window in the tkinter.tix module.
bpo-27348: In the traceback module, restore the formatting of exception messages like «Exception: None». This fixes a regression introduced in 3.5a2.
bpo-25651: Allow false values to be used for msg parameter of subTest().
bpo-27932: Prevent memory leak in win32_ver().
Fix UnboundLocalError in socket._sendfile_use_sendfile.
bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of os.stat(). Patch by Eryk Sun.
bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an empty bytestring is passed.
bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by Gergely Imreh and Markus Holtermann.
bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and binascii.a2b_qp().
bpo-19003: Разрешить параметры с именами
\r
и\n
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-28019: itertools.count() no longer rounds non-integer step in range between 1.0 and 2.0 to 1.
bpo-25969: Update the lib2to3 grammar to handle the unpacking generalizations added in 3.5.
bpo-14977: mailcap now respects the order of the lines in the mailcap files («first match»), as required by RFC 1542. Patch by Michael Lazar.
bpo-24594: Validates persist parameter when opening MSI database
bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.)
bpo-28047: Fixed calculation of line length used for the base64 CTE in the new email policies.
bpo-27445: Don’t pass str(_charset) to MIMEText.set_payload(). Patch by Claude Paroz.
bpo-22450: urllib now includes an
Accept: */*
header among the default headers. This makes the results of REST API requests more consistent and predictable especially when proxy servers are involved.lib2to3.pgen3.driver.load_grammar() now creates a stable cache file between runs given the same Grammar.txt input regardless of the hash randomization setting.
bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers in the «ctypes» and «array» modules.
bpo-22233: Break email header lines only on the RFC specified CR and LF characters, not on arbitrary unicode line breaks. This also fixes a bug in HTTP header parsing.
bpo-27988: Fix email iter_attachments incorrect mutation of payload list.
bpo-27691: Fix ssl module’s parsing of GEN_RID subject alternative name fields in X.509 certs.
bpo-27850: Remove 3DES from ssl module’s default cipher list to counter measure sweet32 attack (CVE-2016-2183).
bpo-27766: Add ChaCha20 Poly1305 to ssl module’s default cipher list. (Required OpenSSL 1.1.0 or LibreSSL).
bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.
Remove support for passing a file descriptor to os.access. It never worked but previously didn’t raise.
bpo-12885: Fix error when distutils encounters symlink.
bpo-27881: Fixed possible bugs when setting sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.
bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory creates not a cursor. Patch by Xiang Zhang.
bpo-19884: Avoid spurious output on OS X with Gnu Readline.
bpo-27706: Restore deterministic behavior of random.Random().seed() for string seeds using seeding version 1. Allows sequences of calls to random() to exactly match those obtained in Python 2. Patch by Nofar Schnider.
bpo-10513: Fix a regression in Connection.commit(). Statements should not be reset after a commit.
A new version of typing.py from https://github.com/python/typing: Collection (only for 3.6) (bpo-27598). Add FrozenSet to __all__ (upstream #261). Fix crash in _get_type_vars() (upstream #259). Remove the dict constraint in ForwardRef._eval_type (upstream #252).
bpo-27539: Fix unnormalised
Fraction.__pow__
result in the case of negative exponent and negative base.bpo-21718: cursor.description is now available for queries using CTEs.
bpo-2466: posixpath.ismount now correctly recognizes mount points which the user does not have permission to access.
bpo-27773: Correct some memory management errors server_hostname in _ssl.wrap_socket().
bpo-26750: unittest.mock.create_autospec() now works properly for subclasses of property() and other data descriptors.
In the curses module, raise an error if window.getstr() or window.instr() is passed a negative value.
bpo-27783: Fix possible usage of uninitialized memory in operator.methodcaller.
bpo-27774: Fix possible Py_DECREF on unowned object in _sre.
bpo-27760: Fix possible integer overflow in binascii.b2a_qp.
bpo-27758: Fix possible integer overflow in the _csv module for large record lengths.
bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the HTTP_PROXY variable when REQUEST_METHOD environment is set, which indicates that the script is in CGI mode.
bpo-27656: Do not assume sched.h defines any SCHED_* constants.
bpo-27130: In the «zlib» module, fix handling of large buffers (typically 4 GiB) when compressing and decompressing. Previously, inputs were limited to 4 GiB, and compression and decompression operations did not properly handle results of 4 GiB.
bpo-27533: Release GIL in nt._isdir
bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original patch by Alexandre Vassalotti.
bpo-27522: Avoid an unintentional reference cycle in email.feedparser.
bpo-26844: Fix error message for imp.find_module() to refer to „path“ instead of „name“. Patch by Lev Maximov.
bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an error about unclean EOF.
bpo-27466: Change time format returned by http.cookie.time2netscape, confirming the netscape cookie format and making it consistent with documentation.
bpo-26664: Fix activate.fish by removing mis-use of
$
.bpo-22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now always returns a list of pairs of strings, tracing in the «u» mode now works.
Fix a scoping issue in importlib.util.LazyLoader which triggered an UnboundLocalError when lazy-loading a module that was already put into sys.modules.
bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and ispunct().
bpo-26754: Some functions (compile() etc) accepted a filename argument encoded as an iterable of integers. Now only strings and byte-like objects are accepted.
bpo-27048: Prevents distutils failing on Windows when environment variables contain non-ASCII characters
bpo-27330: Fixed possible leaks in the ctypes module.
bpo-27238: Got rid of bare excepts in the turtle module. Original patch by Jelle Zijlstra.
bpo-27122: When an exception is raised within the context being managed by a contextlib.ExitStack() and one of the exit stack generators catches and raises it in a chain, do not re-raise the original exception when exiting, let the new chained one through. This avoids the PEP 479 bug described in issue25782.
bpo-26386: Fixed ttk.TreeView selection operations with item id’s containing spaces.
bpo-16182: Fix various functions in the «readline» module to use the locale encoding, and fix get_begidx() and get_endidx() to return code point indexes.
bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.
bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to Paulo Andrade and Petr Viktorin for the analysis and patch.
bpo-21201: Improves readability of multiprocessing error message. Thanks to Wojciech Walczak for patch.
bpo-27456: asyncio: Set TCP_NODELAY by default.
bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by Kevin Conway.
bpo-28174: Handle when SO_REUSEPORT isn’t properly supported. Patch by Seth Michael Larson.
bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by iceboy.
bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
bpo-27759: Fix selectors incorrectly retain invalid file descriptors. Patch by Mark Williams.
bpo-28368: Refuse monitoring processes if the child watcher has no loop attached. Patch by Vincent Michel.
bpo-28369: Raise RuntimeError when transport’s FD is used with add_reader, add_writer, etc.
bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг Марк.
bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
bpo-28372: Fix asyncio to support formatting of non-python coroutines.
bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг Марк.
bpo-27972: Prohibit Tasks to await on themselves.
bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children are done. Patch by Johannes Ebke.
bpo-26796: Don’t configure the number of workers for default threadpool executor. Initial patch by Hans Lawrenz.
bpo-28600: Optimize loop.call_soon().
bpo-28613: Fix get_event_loop() return the current loop if called from coroutines/callbacks.
bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin Mayfield.
bpo-28652: Make loop methods reject socket kinds they do not support.
bpo-28653: Fix a refleak in functools.lru_cache.
bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.
bpo-24142: Reading a corrupt config file left the parser in an invalid state. Original patch by Florian Höch.
bpo-28990: Fix SSL hanging if connection is closed before handshake completed. (Patch by HoHo-Ho)
IDLE¶
bpo-15308: Add „interrupt execution“ (^C) to Shell menu. Patch by Roger Serwy, updated by Bayard Randel.
bpo-27922: Stop IDLE tests from „flashing“ gui widgets on the screen.
Add version to title of IDLE help window.
bpo-25564: In section on IDLE – console differences, mention that using exec means that __builtins__ is defined for each statement.
bpo-27714: text_textview and test_autocomplete now pass when re-run in the same process. This occurs when test_idle fails when run with the -w option but without -jn. Fix warning from test_config.
bpo-25507: IDLE no longer runs buggy code because of its tkinter imports. Users must include the same imports required to run directly in Python.
bpo-27452: add line counter and crc to IDLE configHandler test dump.
bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.
bpo-27245: IDLE: Cleanly delete custom themes and key bindings. Previously, when IDLE was started from a console or by import, a cascade of warnings was emitted. Patch by Serhiy Storchaka.
C API¶
Документация¶
bpo-28513: Documented command-line interface of zipfile.
Тесты¶
bpo-28950: Disallow -j0 to be combined with -T/-l/-M in regrtest command line arguments.
bpo-28666: Now test.support.rmtree is able to remove unwritable or unreadable directories.
bpo-23839: Various caches now are cleared before running every test file.
bpo-28409: regrtest: fix the parser of command line arguments.
bpo-27787: Call gc.collect() before checking each test for «dangling threads», since the dangling threads are weak references.
bpo-27369: In test_pyexpat, avoid testing an error message detail that changed in Expat 2.2.0.
Инструменты/демоверсии¶
bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the current «re» module, avoid invalid Python backslash escapes, and fix a bug parsing escaped C quote signs.
bpo-27332: Fixed the type of the first argument of module-level functions generated by Argument Clinic. Patch by Petr Viktorin.
bpo-27418: Fixed Tools/importbench/importbench.py.
Windows¶
bpo-28251: Improvements to help manuals on Windows.
bpo-28110: launcher.msi has different product codes between 32-bit and 64-bit
bpo-25144: Ensures TargetDir is set before continuing with custom install.
bpo-27469: Adds a shell extension to the launcher so that drag and drop works correctly.
bpo-27309: Enabled proper Windows styles in python[w].exe manifest.
Построить¶
bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
bpo-23903: Added missed names to PC/python3.def.
bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and Michael Haubenwallner.
bpo-26359: Rename –with-optimiations to –enable-optimizations.
bpo-28444: Fix missing extensions modules when cross compiling.
bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
bpo-28258: Fixed build with Estonian locale (python-config and distclean targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
bpo-26661: setup.py now detects system libffi with multiarch wrapper.
bpo-28066: Fix the logic that searches build directories for generated include files when building outside the source tree.
bpo-15819: Remove redundant include search directory option for building outside the source tree.
bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)
bpo-27705: Update message in validate_ucrtbase.py
bpo-27983: Cause lack of llvm-profdata tool when using clang as required for PGO linking to be a configure time error rather than make time when –with-optimizations is enabled. Also improve our ability to find the llvm-profdata tool on MacOS and some Linuxes.
bpo-26307: The profile-opt build now applies PGO to the built-in modules.
bpo-26359: Add the –with-optimizations configure flag.
bpo-27713: Suppress spurious build warnings when updating importlib’s bootstrap files. Patch by Xiang Zhang
bpo-25825: Correct the references to Modules/python.exp and ld_so_aix, which are required on AIX. This updates references to an installation path that was changed in 3.2a4, and undoes changed references to the build tree that were made in 3.5.0a1.
bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi Hsuan Yen.
bpo-27641: The configure script now inserts comments into the makefile to prevent the pgen and _freeze_importlib executables from being cross-compiled.
bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be used for file generation during the build.
bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update FreedBSD version checks for the original ctype UTF-8 workaround.
bpo-28676: Prevent missing „getentropy“ declaration warning on macOS. Patch by Gareth Rees.
Python 3.5.2 final¶
Release date: 2016-06-26
Ядро и встроенные модули¶
bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.
Тесты¶
bpo-26867: Ubuntu’s openssl OP_NO_SSLv3 is forced on by default; fix test.
IDLE¶
bpo-27365: Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2.
Python 3.5.2 release candidate 1¶
Release date: 2016-06-12
Безопасность¶
bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.
Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by Team Oststrom.
bpo-26839: Разрешить параметры с именами
os.urandom()
иgetrandom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26657: Fix directory traversal vulnerability with http.server on Windows. This fixes a regression that was introduced in 3.3.4rc1 and 3.4.0rc1. Based on patch by Philipp Hagemeister.
bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is empty. Patch by Baji.
bpo-25939: On Windows open the cert store readonly in ssl.enum_certificates.
Ядро и встроенные модули¶
bpo-27066: Fixed SystemError if a custom opener (for open()) returns a negative number without setting an exception.
bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by Xavier de Gaye.
bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the «N» format unit.
bpo-26991: Fix possible refleak when creating a function with annotations.
bpo-27039: Fixed bytearray.remove() for values greater than 127. Patch by Joe Jevnik.
bpo-23640: int.from_bytes() no longer bypasses constructors for subclasses.
bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL pointer.
bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for interpolation unintentionally added with move to Python 3. Behavior no longer does any interpolation in .pypirc files, matching behavior in Python 2.7 and Setuptools 19.0.
bpo-26659: Make the builtin slice type support cycle collection.
bpo-26718: super.__init__ no longer leaks memory if called multiple times. NOTE: A direct call of super.__init__ is not endorsed!
bpo-25339: PYTHONIOENCODING now has priority over locale in setting the error handler for stdin and stdout.
bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes are generic sequence iterators, iterators of str, bytes, bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding views and os.scandir() iterator.
bpo-26581: If coding cookie is specified multiple times on a line in Python source code file, only the first one is taken to account.
bpo-26464: Fix str.translate() when string is ASCII and first replacements removes character, but next replacement uses a non-ASCII character or a string longer than 1 character. Regression introduced in Python 3.5.0.
bpo-22836: Ensure exception reports from PyErr_Display() and PyErr_WriteUnraisable() are sensible even when formatting them produces secondary errors. This affects the reports produced by sys.__excepthook__() and when __del__() raises an exception.
bpo-26302: Correct behavior to reject comma as a legal character for cookie names.
bpo-4806: Avoid masking the original TypeError exception when using star (
*
) unpacking in function calls. Based on patch by Hagen Fürstenau and Daniel Urban.bpo-27138: Fix the doc comment for FileFinder.find_spec().
bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get the current Python thread state, but don’t issue a fatal error if it is NULL. This new function must be used instead of accessing directly the _PyThreadState_Current variable. The variable is no more exposed since Python 3.5.1 to hide the exact implementation of atomic C types, to avoid compiler issues.
bpo-26194: Deque.insert() gave odd results for bounded deques that had reached their maximum size. Now an IndexError will be raised when attempting to insert into a full deque.
bpo-25843: Разрешить параметры с именами
f1, f2 = lambda: 1, lambda: 1.0
иf1()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22995: [UPDATE] Comment out the one of the pickleability tests in _PyObject_GetState() due to regressions observed in Cython-based projects.
bpo-25961: Disallowed null characters in the type name.
bpo-25973: Fix segfault when an invalid nonlocal statement binds a name starting with two underscores.
bpo-22995: Instances of extension types with a state that aren’t subclasses of list or dict and haven’t implemented any pickle-related methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or __getstate__), can no longer be pickled. Including memoryview.
bpo-20440: Massive replacing unsafe attribute setting code with special macro Py_SETREF.
bpo-25766: Special method __bytes__() now works in str subclasses.
bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size. This allows sys.getsize() to work correctly with their subclasses with __slots__ defined.
bpo-25709: Fixed problem with in-place string concatenation and utf-8 cache.
bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside __getattr__.
bpo-24731: Fixed crash on converting objects with special methods __bytes__, __trunc__, and __float__ returning instances of subclasses of bytes, int, and float to subclasses of bytes, int, and float correspondingly.
bpo-26478: Fix semantic bugs when using binary operators with dictionary views and tuples.
bpo-26171: Fix possible integer overflow and heap corruption in zipimporter.get_data().
bpo-25660: Fix TAB key behaviour in REPL with readline.
bpo-25887: Raise a RuntimeError when a coroutine object is awaited more than once.
bpo-27243: Update the __aiter__ protocol: instead of returning an awaitable that resolves to an asynchronous iterator, the asynchronous iterator should be returned directly. Doing the former will trigger a PendingDeprecationWarning.
Библиотека¶
bpo-21386: Implement missing IPv4Address.is_global property. It was documented since 07a5610bae9d. Initial patch by Roger Luethi.
bpo-20900: distutils register command now decodes HTTP responses correctly. Initial patch by ingrid.
A new version of typing.py provides several new classes and features: @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some of the new features are not yet implemented in mypy or other static analyzers). Also classes for PEP 492 (Awaitable, AsyncIterable, AsyncIterator) have been added (in fact they made it into 3.5.1 but were never mentioned).
bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from sending a message body for 205 Reset Content. Also, don’t send Content header fields in responses that don’t have a body. Patch by Susumu Koshiba.
bpo-21313: Fix the «platform» module to tolerate when sys.version contains truncated build information.
bpo-27164: In the zlib module, allow decompressing raw Deflate streams with a predefined zdict. Based on patch by Xiang Zhang.
bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely write data to the client. Previously it could do partial writes and truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout doing partial writes, but this is deprecated.
bpo-26809: Разрешить параметры с именами
__all__
иstring
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26373: subprocess.Popen.communicate now correctly ignores BrokenPipeError when the child process dies before .communicate() is called in more/all circumstances.
bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch by Claudiu Popa.
bpo-27114: Fix SSLContext._load_windows_store_certs fails with PermissionError
bpo-18383: Avoid creating duplicate filters when using filterwarnings and simplefilter. Based on patch by Alex Shkop.
bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by SELinux and fails with EACCESS. The function now falls back to fcntl(). Patch written by Michał Bednarski.
bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!
bpo-14132: Fix urllib.request redirect handling when the target only has a query string. Original fix by Ján Janech.
bpo-17214: The «urllib.request» module now percent-encodes non-ASCII bytes found in redirect target URLs. Some servers send Location header fields with non-ASCII bytes, but «http.client» requires the request target to be ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch by Christian Heimes.
bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch contributed by Chi Hsuan Yen.
bpo-22274: In the subprocess module, allow stderr to be redirected to stdout even when stdout is not redirected. Patch by Akira Li.
bpo-26807: mock_open „files“ no longer error on readline at end of file. Patch from Yolanda Robla.
bpo-25745: Fixed leaking a userptr in curses panel destructor.
bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper in statistics.pvariance.
bpo-26881: The modulefinder module now supports extended opcode arguments.
bpo-23815: Fixed crashes related to directly created instances of types in _tkinter and curses.panel modules.
bpo-17765: weakref.ref() no longer silently ignores keyword arguments. Patch by Georg Brandl.
bpo-26873: xmlrpc now raises ResponseError on unsupported type tags instead of silently return incorrect result.
bpo-26711: Fixed the comparison of plistlib.Data with other types.
bpo-24114: Разрешить параметры с именами
ctypes.util
иcrle
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26864: In urllib.request, change the proxy bypass host checking against no_proxy to be case-insensitive, and to not match unrelated host names that happen to have a bypassed hostname as a suffix. Patch by Xiang Zhang.
bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by Xiang Zhang.
bpo-26804: urllib.request will prefer lower_case proxy environment variables over UPPER_CASE or Mixed_Case ones. Patch contributed by Hans-Peter Jansen.
bpo-26837: assertSequenceEqual() now correctly outputs non-stringified differing items (like bytes in the -b mode). This affects assertListEqual() and assertTupleEqual().
bpo-26041: Remove «will be removed in Python 3.7» from deprecation messages of platform.dist() and platform.linux_distribution(). Patch by Kumaripaba Miyurusara Athukorala.
bpo-26822: itemgetter, attrgetter and methodcaller objects no longer silently ignore keyword arguments.
bpo-26733: Disassembling a class now disassembles class and static methods. Patch by Xiang Zhang.
bpo-26801: Разрешить параметры с именами
shutil.get_terminal_size()
иAttributeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24838: tarfile’s ustar and gnu formats now correctly calculate name and link field limits for multibyte character encodings like utf-8.
bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by Anthony Sottile.
bpo-26735: Разрешить параметры с именами
os.urandom()
иgetrandom()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola“.
bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.
bpo-26709: Fixed Y2038 problem in loading binary PLists.
bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our own SIGWINCH handler. Patch by Eric Price.
bpo-26586: In http.server, respond with «413 Request header fields too large» if there are too many header fields to parse, rather than killing the connection and raising an unhandled exception. Patch by Xiang Zhang.
bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable() to always return False.
bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of tuple (changeset 3603bae63c13 only works for classes) so we need to implement __ne__ ourselves. Patch by Andrew Plummer.
bpo-26644: Raise ValueError rather than SystemError when a negative length is passed to SSLSocket.recv() or read().
bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes instead of up to 1024.
bpo-26616: Fixed a bug in datetime.astimezone() method.
bpo-21925: Разрешить параметры с именами
warnings.formatwarning()
иlinecache.getline(...)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24266: Ctrl+C during Readline history search now cancels the search mode when compiled with Readline 7.
bpo-26560: Avoid potential ValueError in BaseHandler.start_response. Initial patch by Peter Inglesby.
bpo-26569: Разрешить параметры с именами
pyclbr.readmodule()
иpyclbr.readmodule_ex()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-26499: Account for remaining Content-Length in HTTPResponse.readline() and read1(). Based on patch by Silent Ghost. Also document that HTTPResponse now supports these methods.
bpo-25320: Handle sockets in directories unittest discovery is scanning. Patch from Victor van den Elzen.
bpo-16181: cookiejar.http2time() now returns None if year is higher than datetime.MAXYEAR.
bpo-26513: Fixes platform module detection of Windows Server
bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by Tamás Bence Gedai.
bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise NotImplementedError instead of ImportError.
bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
bpo-15068: Got rid of excessive buffering in the fileinput module. The bufsize parameter is no longer used.
bpo-2202: Fix UnboundLocalError in AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu Dupuy.
bpo-25718: Fixed pickling and copying the accumulate() iterator with total is None.
bpo-26475: Fixed debugging output for regular expressions with the (?x) flag.
bpo-26457: Fixed the subnets() methods in IP network classes for the case when resulting prefix length is equal to maximal prefix length. Based on patch by Xiang Zhang.
bpo-26385: Remove the file if the internal open() call in NamedTemporaryFile() fails. Patch by Silent Ghost.
bpo-26402: Fix XML-RPC client to retry when the server shuts down a persistent connection. This was a regression related to the new http.client.RemoteDisconnected exception in 3.5.0a4.
bpo-25913: Leading
<~
is optional now in base64.a85decode() with adobe=True. Patch by Swati Jaiswal.bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.
bpo-26367: importlib.__import__() raises SystemError like builtins.__import__() when
level
is specified but without an accompanying package specified.bpo-26309: In the «socketserver» module, shut down the request (closing the connected socket) when verify_request() returns false. Patch by Aviv Palivoda.
bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.
bpo-26117: The os.scandir() iterator now closes file descriptor not only when the iteration is finished, but when it was failed with error.
bpo-25911: Restored support of bytes paths in os.walk() on Windows.
bpo-26045: Add UTF-8 suggestion to error message when posting a non-Latin-1 string with http.client.
bpo-12923: Reset FancyURLopener’s redirect counter even if there is an exception. Based on patches by Brian Brazil and Daniel Rocco.
bpo-25945: Fixed a crash when unpickle the functools.partial object with wrong state. Fixed a leak in failed functools.partial constructor. «args» and «keywords» attributes of functools.partial have now always types tuple and dict correspondingly.
bpo-26202: copy.deepcopy() now correctly copies range() objects with non-atomic attributes.
bpo-23076: Path.glob() now raises a ValueError if it’s called with an invalid pattern. Patch by Thomas Nyberg.
bpo-19883: Fixed possible integer overflows in zipimport.
bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and gethostbyname_ex() functions of the socket module now decode the hostname from the ANSI code page rather than UTF-8.
bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8 encoding.
bpo-25935: Garbage collector now breaks reference loops with OrderedDict.
bpo-16620: Fixed AttributeError in msilib.Directory.glob().
bpo-26013: Added compatibility with broken protocol 2 pickles created in old Python 3 versions (3.4.3 and lower).
bpo-25850: Use cross-compilation by default for 64-bit Windows.
bpo-17633: Improve zipimport’s support for namespace packages.
bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing before $() vars.
bpo-22138: Fix mock.patch behavior when patching descriptors. Restore original values after patching. Patch contributed by Sean McCully.
bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode option if it is safe to do so.
bpo-26012: Don’t traverse into symlinks for
**
pattern in pathlib.Path.[r]glob().bpo-24120: Ignore PermissionError when traversing a tree with pathlib.Path.[r]glob(). Patch by Ulrich Petri.
bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer attribute (restores backward compatibility).
bpo-25447: Copying the lru_cache() wrapper object now always works, independently from the type of the wrapped object (by returning the original object unchanged).
bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.
bpo-25860: os.fwalk() no longer skips remaining directories when error occurs. Original patch by Samson Lee.
bpo-25914: Fixed and simplified OrderedDict.__sizeof__.
bpo-25902: Fixed various refcount issues in ElementTree iteration.
bpo-25717: Restore the previous behaviour of tolerating most fstat() errors when opening files. This was a regression in 3.5a1, and stopped anonymous temporary files from working in special cases.
bpo-24903: Fix regression in number of arguments compileall accepts when „-d“ is specified. The check on the number of arguments has been dropped completely as it never worked correctly anyway.
bpo-25764: In the subprocess module, preserve any exception caused by fork() failure when preexec_fn is used.
bpo-6478: _strptime’s regexp cache now is reset after changing timezone with time.tzset().
bpo-14285: When executing a package with the «python -m package» option, and package initialization fails, a proper traceback is now reported. The «runpy» module now lets exceptions from package initialization pass back to the caller, rather than raising ImportError.
bpo-19771: Also in runpy and the «-m» option, omit the irrelevant message «… is a package and cannot be directly executed» if the package could not even be initialized (e.g. due to a bad
*.pyc
file).bpo-25177: Fixed problem with the mean of very small and very large numbers. As a side effect, statistics.mean and statistics.variance should be significantly faster.
bpo-25718: Fixed copying object with state with boolean value is false.
bpo-10131: Fixed deep copying of minidom documents. Based on patch by Marian Ganisin.
bpo-25725: Fixed a reference leak in pickle.loads() when unpickling invalid data including tuple instructions.
bpo-25663: In the Readline completer, avoid listing duplicate global names, and search the global namespace before searching builtins.
bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.
bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.
bpo-25691: Fixed crash on deleting ElementTree.Element attributes.
bpo-25624: ZipFile now always writes a ZIP_STORED header for directory entries. Patch by Dingyuan Wang.
Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu Davis.
bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк Коренберг.
bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.
bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input. Patch by Jack O’Connor.
bpo-27040: Add loop.get_exception_handler method
bpo-27041: asyncio: Add loop.create_future method
bpo-27223: asyncio: Fix _read_ready and _write_ready to respect _conn_lost. Patch by Łukasz Langa.
bpo-22970: asyncio: Fix inconsistency cancelling Condition.wait. Patch by David Coles.
IDLE¶
bpo-5124: Paste with text selected now replaces the selection on X11. This matches how paste works on Windows, Mac, most modern Linux apps, and ttk widgets. Original patch by Serhiy Storchaka.
bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is a private implementation of test.test_idle and tool for maintainers.
bpo-27196: Stop „ThemeChanged“ warnings when running IDLE tests. These persisted after other warnings were suppressed in #20567. Apply Serhiy Storchaka’s update_idletasks solution to four test files. Record this additional advice in idle_test/README.txt
bpo-20567: Revise idle_test/README.txt with advice about avoiding tk warning messages from tests. Apply advice to several IDLE tests.
bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move code for configuring text widget colors to a new function.
bpo-26673: When tk reports font size as 0, change to size 10. Such fonts on Linux prevented the configuration dialog from opening.
bpo-21939: Add test for IDLE’s percolator. Original patch by Saimadhav Heblikar.
bpo-21676: Add test for IDLE’s replace dialog. Original patch by Saimadhav Heblikar.
bpo-18410: Add test for IDLE’s search dialog. Original patch by Westley Martínez.
bpo-21703: Add test for IDLE’s undo delegator. Original patch by Saimadhav Heblikar .
bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
bpo-23977: Add more asserts to test_delegator.
bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav Heblikar.
In the „IDLE-console differences“ section of the IDLE doc, clarify how running with IDLE affects sys.modules and the standard streams.
bpo-25507: fix incorrect change in IOBinding that prevented printing. Augment IOBinding htest to include all major IOBinding functions.
bpo-25905: Revert unwanted conversion of „ to ’ RIGHT SINGLE QUOTATION MARK in README.txt and open this and NEWS.txt with „ascii“. Re-encode CREDITS.txt to utf-8 and open it with „utf-8“.
Документация¶
bpo-19489: Moved the search box from the sidebar to the header and footer of each page. Patch by Ammar Askar.
bpo-24136: Document the new PEP 448 unpacking syntax of 3.5.
bpo-26736: Used HTTPS for external links in the documentation if possible.
bpo-6953: Rework the Readline module documentation to group related functions together, and add more details such as what underlying Readline functions and variables are accessed.
bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.
bpo-25500: Fix documentation to not claim that __import__ is searched for in the global scope.
bpo-26014: Update 3.x packaging documentation: * «See also» links to the new docs are now provided in the legacy pages * links to setuptools documentation have been updated
Тесты¶
bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory Loyse and Jelle Zijlstra.
bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool) was untested.
bpo-26015: Added new tests for pickling iterators of mutable sequences.
bpo-26325: Added test.support.check_no_resource_warning() to check that no ResourceWarning is emitted.
bpo-25940: Changed test_ssl to use self-signed.pythontest.net. This avoids relying on svn.python.org, which recently changed root certificate.
bpo-25616: Tests for OrderedDict are extracted from test_collections into separate file test_ordered_dict.
bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files cannot be written.
Построить¶
bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier de Gaye.
bpo-22359: Disable the rules for running _freeze_importlib and pgen when cross-compiling. The output of these programs is normally saved with the source code anyway, and is still regenerated when doing a native build. Patch by Xavier de Gaye.
bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by Xavier de Gaye.
bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except on Mac OS X. Patch written by Xavier de Gaye.
bpo-25702: A –with-lto configure option has been added that will enable link time optimizations at build time during a make profile-opt. Some compilers and toolchains are known to not produce stable code when using LTO, be sure to test things thoroughly before relying on it. It can provide a few % speed up over profile-opt alone.
bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old versions.
bpo-17603: Avoid error about nonexistent fileblocks.o file by using a lower-level check for st_blocks in struct stat.
bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern Thiel.
bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.
bpo-24421: Compile Modules/_math.c once, before building extensions. Previously it could fail to compile properly if the math and cmath builds were concurrent.
bpo-25348: Разрешить параметры с именами
--pgo
и--pgo-job
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25827: Разрешить параметры с именами
configure
и--with-icc
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-25696: Fix installation of Python on UNIX with make -j9.
bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with OpenSSL 1.0.2h.
bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.
bpo-25136: Support Apple Xcode 7’s new textual SDK stub libraries.
bpo-24324: Do not enable unreachable code warnings when using gcc as the option does not work correctly in older versions of gcc and has been silently removed as of gcc-4.5.
Windows¶
bpo-27053: Updates make_zip.py to correctly generate library ZIP file.
bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases that don’t include the contents of the include directory (that is, 1.0.2e and later).
bpo-26071: bdist_wininst created binaries fail to start and find 32bit Python
bpo-26073: Update the list of magic numbers in launcher
bpo-26065: Excludes venv from library when generating embeddable distro.
bpo-17500: Remove unused and outdated icons. (See also: https://github.com/python/pythondotorg/issues/945)
Инструменты/демоверсии¶
bpo-26799: Fix python-gdb.py: don’t get C types once when the Python code is loaded, but get C types on demand. The C types can change if python-gdb.py is loaded before the Python executable. Patch written by Thomas Ilsche.
bpo-26271: Fix the Freeze tool to properly use flags passed through configure. Patch by Daniel Shaulov.
bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py. Patch by Guo Ci Teo.
bpo-26316: Fix variable name typo in Argument Clinic.
Python 3.5.1 final¶
Release date: 2015-12-06
Ядро и встроенные модули¶
bpo-25709: Fixed problem with in-place string concatenation and utf-8 cache.
Windows¶
bpo-25715: Python 3.5.1 installer shows wrong upgrade path and incorrect logic for launcher detection.
Python 3.5.1 release candidate 1¶
Release date: 2015-11-22
Ядро и встроенные модули¶
bpo-25630: Fix a possible segfault during argument parsing in functions that accept filesystem paths.
bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess internals regarding how fds_to_pass were passed to the child. The bug had no actual impact as subprocess.py already avoided it.
bpo-25388: Fixed tokenizer crash when processing undecodable source code with a null byte.
bpo-25462: The hash of the key now is calculated only once in most operations in C implementation of OrderedDict.
bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now rejects builtin types with not defined __new__.
bpo-25555: Fix parser and AST: fill lineno and col_offset of «arg» node when compiling AST from Python objects.
bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec() and eval() are passed bytes-like objects. These objects are not necessarily terminated by a null byte, but the functions assumed they were.
bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that was mutated by direct calls of dict methods.
bpo-25449: Iterating OrderedDict with keys with unstable hash now raises KeyError in C implementations as well as in Python implementation.
bpo-25395: Fixed crash when highly nested OrderedDict structures were garbage collected.
bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new recursion limit is too low depending at the current recursion depth. Modify also the «lower-water mark» formula to make it monotonic. This mark is used to decide when the overflowed flag of the thread state is reset.
bpo-24402: Fix input() to prompt to the redirected stdout when sys.stdout.fileno() fails.
bpo-24806: Prevent builtin types that are not allowed to be subclassed from being subclassed through multiple inheritance.
bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.
bpo-25280: Import trace messages emitted in verbose (-v) mode are no longer formatted twice.
bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom() function instead of the getentropy() function. The getentropy() function is blocking to generate very good quality entropy, os.urandom() doesn’t need such high-quality entropy.
bpo-25182: The stdprinter (used as sys.stderr before the io module is imported at startup) now uses the backslashreplace error handler.
bpo-25131: Make the line number and column offset of set/dict literals and comprehensions correspond to the opening brace.
bpo-25150: Hide the private
_Py_atomic_xxx
symbols from the public Python.h header to fix a compilation error with OpenMP. PyThreadState_GET() becomes an alias to PyThreadState_Get() to avoid ABI incompatibilities.
Библиотека¶
bpo-25626: Change three zlib functions to accept sizes that fit in Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a regression in 3.5 where GzipFile.read() failed to read chunks larger than 2 or 4 GiB. The change affects the zlib.Decompress.decompress() max_length parameter, the zlib.decompress() bufsize parameter, and the zlib.Decompress.flush() length parameter.
bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) when the OS gives priority to errors such as EACCES over EEXIST.
bpo-25593: Change semantics of EventLoop.stop() in asyncio.
bpo-6973: When we know a subprocess.Popen process has died, do not allow the send_signal(), terminate(), or kill() methods to do anything as they could potentially signal a different process.
bpo-25590: In the Readline completer, only call getattr() once per attribute.
bpo-25498: Fix a crash when garbage-collecting ctypes objects created by wrapping a memoryview. This was a regression made in 3.5a1. Based on patch by Eryksun.
bpo-25584: Added «escape» to the __all__ list in the glob module.
bpo-25584: Fixed recursive glob() with patterns starting with
**
.bpo-25446: Fix regression in smtplib’s AUTH LOGIN support.
bpo-18010: Fix the pydoc web server’s module search function to handle exceptions from importing packages.
bpo-25554: Got rid of circular references in regular expression parsing.
bpo-25510: fileinput.FileInput.readline() now returns b““ instead of „“ at the end if the FileInput was opened with binary mode. Patch by Ryosuke Ito.
bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties. Original patch by John Mark Vandenberg.
bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.
bpo-21827: Fixed textwrap.dedent() for the case when largest common whitespace is a substring of smallest leading whitespace. Based on patch by Robert Li.
bpo-25447: The lru_cache() wrapper objects now can be copied and pickled (by returning the original object unchanged).
bpo-25390: typing: Don’t crash on Union[str, Pattern].
bpo-25441: asyncio: Raise error from drain() when socket is closed.
bpo-25410: Cleaned up and fixed minor bugs in C implementation of OrderedDict.
bpo-25411: Improved Unicode support in SMTPHandler through better use of the email package. Thanks to user simon04 for the patch.
bpo-25407: Remove mentions of the formatter module being removed in Python 3.6.
bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end() that caused segmentation fault or hang in iterating after moving several items to the start of ordered dict.
bpo-25364: zipfile now works in threads disabled builds.
bpo-25328: smtpd’s SMTPChannel now correctly raises a ValueError if both decode_data and enable_SMTPUTF8 are set to true.
bpo-25316: distutils raises OSError instead of DistutilsPlatformError when MSVC is not installed.
bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in pickletools.opcodes.
bpo-23972: Updates asyncio datagram create method allowing reuseport and reuseaddr socket options to be set prior to binding the socket. Mirroring the existing asyncio create_server method the reuseaddr option for datagram sockets defaults to True if the O/S is „posix“ (except if the platform is Cygwin). Patch by Chris Laws.
bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a coroutine to a loop from another thread, returning a concurrent.futures.Future. By Vincent Michel.
bpo-25232: Fix CGIRequestHandler to split the query from the URL at the first question mark (?) rather than the last. Patch from Xiang Zhang.
bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query part of the URL as if it were a path. Patch from Xiang Zhang.
bpo-24483: C implementation of functools.lru_cache() now calculates key’s hash only once.
bpo-22958: Constructor and update method of weakref.WeakValueDictionary now accept the self and the dict keyword arguments.
bpo-22609: Constructor of collections.UserDict now accepts the self keyword argument.
bpo-25111: Fixed comparison of traceback.FrameSummary.
bpo-25262: Added support for BINBYTES8 opcode in Python implementation of unpickler. Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8 opcodes no longer silently ignored on 32-bit platforms in C implementation.
bpo-25034: Fix string.Formatter problem with auto-numbering and nested format_specs. Patch by Anthon van der Neut.
bpo-25233: Rewrite the guts of asyncio.Queue and asyncio.Semaphore to be more understandable and correct.
bpo-25203: Failed readline.set_completer_delims() no longer left the module in inconsistent state.
bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong results in some cases.
bpo-23329: Allow the ssl module to be built with older versions of LibreSSL.
Prevent overflow in _Unpickler_Read.
bpo-25047: The XML encoding declaration written by Element Tree now respects the letter case given by the user. This restores the ability to write encoding names in uppercase like «UTF-8», which worked in Python 2.
bpo-25135: Make deque_clear() safer by emptying the deque before clearing. This helps avoid possible reentrancy issues.
bpo-19143: platform module now reads Windows version from kernel32.dll to avoid compatibility shims.
bpo-25092: Fix datetime.strftime() failure when errno was already set to EINVAL.
bpo-23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods of datetime.datetime: microseconds are now rounded to nearest with ties going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding towards minus infinity (ROUND_FLOOR). It’s important that these methods use the same rounding mode than datetime.timedelta to keep the property: (datetime(1970,1,1) + timedelta(seconds=t)) == datetime.utcfromtimestamp(t). It also the rounding mode used by round(float) for example.
bpo-25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on Windows to support date after year 2038. It was a regression introduced in Python 3.5.0.
bpo-25108: Omitted internal frames in traceback functions print_stack(), format_stack(), and extract_stack() called without arguments.
bpo-25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.
bpo-24684: socket.socket.getaddrinfo() now calls PyUnicode_AsEncodedString() instead of calling the encode() method of the host, to handle correctly custom string with an encode() method which doesn’t return a byte string. The encoder of the IDNA codec is now called directly instead of calling the encode() method of the string.
bpo-25060: Correctly compute stack usage of the BUILD_MAP opcode.
bpo-24857: Comparing call_args to a long sequence now correctly returns a boolean result instead of raising an exception. Patch by A Kaptur.
bpo-23144: Make sure that HTMLParser.feed() returns all the data, even when convert_charrefs is True.
bpo-24982: shutil.make_archive() with the «zip» format now adds entries for directories (including empty directories) in ZIP file.
bpo-25019: Fixed a crash caused by setting non-string key of expat parser. Based on patch by John Leitch.
bpo-16180: Exit pdb if file has syntax error, instead of trapping user in an infinite loop. Patch by Xavier de Gaye.
bpo-24891: Fix a race condition at Python startup if the file descriptor of stdin (0), stdout (1) or stderr (2) is closed while Python is creating sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set to None if the creation of the object failed, instead of raising an OSError exception. Initial patch written by Marco Paolini.
bpo-24992: Fix error handling and a race condition (related to garbage collection) in collections.OrderedDict constructor.
bpo-24881: Fixed setting binary mode in Python implementation of FileIO on Windows and Cygwin. Patch from Akira Li.
bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().
bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating ssl.SSLContext.
bpo-25569: Fix memory leak in SSLSocket.getpeercert().
bpo-25471: Sockets returned from accept() shouldn’t appear to be nonblocking.
bpo-25319: When threading.Event is reinitialized, the underlying condition should use a regular lock rather than a recursive lock.
bpo-21112: Fix regression in unittest.expectedFailure on subclasses. Patch from Berker Peksag.
bpo-24764: cgi.FieldStorage.read_multi() now ignores the Content-Length header in part headers. Patch written by Peter Landry and reviewed by Pierre Quentel.
bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and Bryce Darling.
bpo-24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu.
bpo-21159: Improve message in configparser.InterpolationMissingOptionError. Patch from Łukasz Langa.
bpo-20362: Honour TestCase.longMessage correctly in assertRegex. Patch from Ilia Kurenkov.
bpo-23572: Fixed functools.singledispatch on classes with false metaclasses. Patch by Ethan Furman.
asyncio: ensure_future() now accepts awaitable objects.
IDLE¶
bpo-15348: Stop the debugger engine (normally in a user process) before closing the debugger window (running in the IDLE process). This prevents the RuntimeErrors that were being caught and ignored.
bpo-24455: Prevent IDLE from hanging when a) closing the shell while the debugger is active (15347); b) closing the debugger with the [X] button (15348); and c) activating the debugger when already active (24455). The patch by Mark Roseman does this by making two changes. 1. Suspend and resume the gui.interaction method with the tcl vwait mechanism intended for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow any existing interaction to terminate first.
Change „The program“ to „Your program“ in an IDLE „kill program?“ message to make it clearer that the program referred to is the currently running user program, not IDLE itself.
bpo-24750: Improve the appearance of the IDLE editor window status bar. Patch by Mark Roseman.
bpo-25313: Change the handling of new built-in text color themes to better address the compatibility problem introduced by the addition of IDLE Dark. Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
bpo-24782: Extension configuration is now a tab in the IDLE Preferences dialog rather than a separate dialog. The former tabs are now a sorted list. Patch by Mark Roseman.
bpo-22726: Re-activate the config dialog help button with some content about the other buttons and the new IDLE Dark theme.
bpo-24820: IDLE now has an „IDLE Dark“ built-in text color theme. It is more or less IDLE Classic inverted, with a cobalt blue background. Strings, comments, keywords, … are still green, red, orange, … . To use it with IDLEs released before November 2015, hit the „Save as New Custom Theme“ button and enter a new name, such as „Custom Dark“. The custom theme will work with any IDLE release, and can be modified.
bpo-25224: README.txt is now an idlelib index for IDLE developers and curious users. The previous user content is now in the IDLE doc chapter. „IDLE“ now means „Integrated Development and Learning Environment“.
bpo-24820: Users can now set breakpoint colors in Settings -> Custom Highlighting. Original patch by Mark Roseman.
bpo-24972: Inactive selection background now matches active selection background, as configured by users, on all systems. Found items are now always highlighted on Windows. Initial patch by Mark Roseman.
bpo-24570: Idle: make calltip and completion boxes appear on Macs affected by a tk regression. Initial patch by Mark Roseman.
bpo-24988: Idle ScrolledList context menus (used in debugger) now work on Mac Aqua. Patch by Mark Roseman.
bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by Mark Roseman.
bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac OSX, make them a „sheet“. Patch by Mark Roseman.
bpo-25198: Enhance the initial html viewer now used for Idle Help. Properly indent fixed-pitch text (patch by Mark Roseman). Give code snippet a very Sphinx-like light blueish-gray background. Re-use initial width and height set by users for shell and editor. When the Table of Contents (TOC) menu is used, put the section header at the top of the screen.
bpo-25225: Condense and rewrite Idle doc section on text colors.
bpo-21995: Explain some differences between IDLE and console Python.
bpo-22820: Explain need for print when running file from Idle editor.
bpo-25224: Doc: augment Idle feature list and no-subprocess section.
bpo-25219: Update doc for Idle command line options. Some were missing and notes were not correct.
bpo-24861: Most of idlelib is private and subject to change. Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
bpo-25199: Idle: add synchronization comments for future maintainers.
bpo-16893: Replace help.txt with help.html for Idle doc display. The new idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks better than help.txt and will better document Idle as released. The tkinter html viewer that works for this file was written by Mark Roseman. The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).
Документация¶
bpo-22558: Add remaining doc links to source code for Python-coded modules. Patch by Yoni Lavi.
bpo-12067: Rewrite Comparisons section in the Expressions chapter of the language reference. Some of the details of comparing mixed types were incorrect or ambiguous. NotImplemented is only relevant at a lower level than the Expressions chapter. Added details of comparing range() objects, and default behaviour and consistency suggestions for user-defined classes. Patch from Andy Maier.
bpo-24952: Clarify the default size argument of stack_size() in the «threading» and «_thread» modules. Patch from Mattip.
bpo-23725: Overhaul tempfile docs. Note deprecated status of mktemp. Patch from Zbigniew Jędrzejewski-Szmek.
bpo-24808: Update the types of some PyTypeObject fields. Patch by Joseph Weston.
bpo-22812: Fix unittest discovery examples. Patch from Pam McA’Nulty.
Тесты¶
bpo-25449: Added tests for OrderedDict subclasses.
bpo-25099: Make test_compileall not fail when an entry on sys.path cannot be written to (commonly seen in administrative installs on Windows).
bpo-23919: Prevents assert dialogs appearing in the test suite.
PCbuild\rt.bat
now accepts an unlimited number of arguments to pass along to regrtest.py. Previously there was a limit of 9.
Построить¶
bpo-24915: Add LLVM support for PGO builds and use the test suite to generate the profile data. Initial patch by Alecsandru Patrascu of Intel.
bpo-24910: Windows MSIs now have unique display names.
bpo-24986: It is now possible to build Python on Windows without errors when external libraries are not available.
Windows¶
bpo-25450: Updates shortcuts to start Python in installation directory.
bpo-25164: Changes default all-users install directory to match per-user directory.
bpo-25143: Improves installer error messages for unsupported platforms.
bpo-25163: Display correct directory in installer when using non-default settings.
bpo-25361: Disables use of SSE2 instructions in Windows 32-bit build
bpo-25089: Adds logging to installer for case where launcher is not selected on upgrade.
bpo-25165: Windows uninstallation should not remove launcher if other versions remain
bpo-25112: py.exe launcher is missing icons
bpo-25102: Windows installer does not precompile for -O or -OO.
bpo-25081: Makes Back button in installer go back to upgrade page when upgrading.
bpo-25091: Increases font size of the installer.
bpo-25126: Clarifies that the non-web installer will download some components.
bpo-25213: Restores requestedExecutionLevel to manifest to disable UAC virtualization.
bpo-25022: Removed very outdated PC/example_nt/ directory.
Инструменты/демоверсии¶
bpo-25440: Fix output of python-config –extension-suffix.
Python 3.5.0 final¶
Release date: 2015-09-13
Построить¶
bpo-25071: Windows installer should not require TargetDir parameter when installing quietly.
Python 3.5.0 release candidate 4¶
Release date: 2015-09-09
Библиотека¶
bpo-25029: Fixes MemoryError in test_strptime.
Построить¶
bpo-25027: Reverts partial-static build options and adds vcruntime140.dll to Windows installation.
Python 3.5.0 release candidate 3¶
Release date: 2015-09-07
Ядро и встроенные модули¶
Библиотека¶
bpo-24917: time_strftime() buffer over-read.
bpo-24748: To resolve a compatibility problem found with py2exe and pywin32, imp.load_dynamic() once again ignores previously loaded modules to support Python modules replacing themselves with extension modules. Patch by Petr Viktorin.
bpo-24635: Fixed a bug in typing.py where isinstance([], typing.Iterable) would return True once, then False on subsequent calls.
bpo-24989: Fixed buffer overread in BytesIO.readline() if a position is set beyond size. Based on patch by John Leitch.
bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and Bryce Darling.
Python 3.5.0 release candidate 2¶
Release date: 2015-08-25
Ядро и встроенные модули¶
bpo-24769: Interpreter now starts properly when dynamic loading is disabled. Patch by Petr Viktorin.
bpo-21167: NAN operations are now handled correctly when python is compiled with ICC even if -fp-model strict is not specified.
bpo-24492: A «package» lacking a __name__ attribute when trying to perform a
from .. import ...
statement will trigger an ImportError instead of an AttributeError.
Библиотека¶
Python 3.5.0 release candidate 1¶
Release date: 2015-08-09
Ядро и встроенные модули¶
bpo-24667: Resize odict in all cases that the underlying dict resizes.
Библиотека¶
bpo-24824: Signatures of codecs.encode() and codecs.decode() now are compatible with pydoc.
bpo-24634: Importing uuid should not try to load libc on Windows
bpo-24798: _msvccompiler.py doesn’t properly support manifests
bpo-4395: Better testing and documentation of binary operators. Patch by Martin Panter.
bpo-23973: Update typing.py from GitHub repo.
bpo-23004: mock_open() now reads binary data correctly when the type of read_data is bytes. Initial patch by Aaron Hill.
bpo-23888: Handle fractional time in cookie expiry. Patch by ssh.
bpo-23652: Make it possible to compile the select module against the libc headers from the Linux Standard Base, which do not include some EPOLL macros. Patch by Matt Frank.
bpo-22932: Fix timezones in email.utils.formatdate. Patch from Dmitry Shachnev.
bpo-23779: imaplib raises TypeError if authenticator tries to abort. Patch from Craig Holmquist.
bpo-23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch written by Matthieu Gautier.
bpo-23254: Document how to close the TCPServer listening socket. Patch from Martin Panter.
bpo-19450: Update Windows and OS X installer builds to use SQLite 3.8.11.
bpo-17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.
bpo-24791: Fix grammar regression for call syntax: „g(*a or b)“.
IDLE¶
bpo-23672: Allow Idle to edit and run files with astral chars in name. Patch by Mohd Sanad Zaki Rizvi.
bpo-24745: Idle editor default font. Switch from Courier to platform-sensitive TkFixedFont. This should not affect current customized font selections. If there is a problem, edit $HOME/.idlerc/config-main.cfg and remove „
fontxxx
“ entries from [Editor Window]. Patch by Mark Roseman.bpo-21192: Idle editor. When a file is run, put its name in the restart bar. Do not print false prompts. Original patch by Adnan Umer.
bpo-13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy.
Документация¶
bpo-24129: Clarify the reference documentation for name resolution. This includes removing the assumption that readers will be familiar with the name resolution scheme Python used prior to the introduction of lexical scoping for function namespaces. Patch by Ivan Levkivskyi.
bpo-20769: Improve reload() docs. Patch by Dorian Pula.
bpo-23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan.
bpo-24729: Correct IO tutorial to match implementation regarding encoding parameter to open function.
Тесты¶
bpo-24751: When running regrtest with the
-w
command line option, a test run is no longer marked as a failure if all tests succeed when re-run.
Python 3.5.0 beta 4¶
Release date: 2015-07-26
Ядро и встроенные модули¶
bpo-23573: Restored optimization of bytes.rfind() and bytearray.rfind() for single-byte argument on Linux.
bpo-24569: Make PEP 448 dictionary evaluation more consistent.
bpo-24583: Fix crash when set is mutated while being updated.
bpo-24407: Fix crash when dict is mutated while being updated.
bpo-24619: New approach for tokenizing async/await. As a consequence, it is now possible to have one-line „async def foo(): await ..“ functions.
bpo-24687: Plug refleak on SyntaxError in function parameters annotations.
bpo-15944: memoryview: Allow arbitrary formats when casting to bytes. Patch by Martin Panter.
Библиотека¶
bpo-23441: rcompleter now prints a tab character instead of displaying possible completions for an empty word. Initial patch by Martin Sekera.
bpo-24683: Fixed crashes in _json functions called with arguments of inappropriate type.
bpo-21697: shutil.copytree() now correctly handles symbolic links that point to directories. Patch by Eduardo Seabra and Thomas Kluyver.
bpo-14373: Fixed segmentation fault when gc.collect() is called during constructing lru_cache (C implementation).
bpo-24695: Fix a regression in traceback.print_exception(). If exc_traceback is None we shouldn’t print a traceback header like described in the documentation.
bpo-24620: Random.setstate() now validates the value of state last element.
bpo-22485: Fixed an issue that caused
inspect.getsource
to return incorrect results on nested functions.bpo-22153: Improve unittest docs. Patch from Martin Panter and evilzero.
bpo-24580: Symbolic group references to open group in re patterns now are explicitly forbidden as well as numeric group references.
bpo-24206: Fixed __eq__ and __ne__ methods of inspect classes.
bpo-24631: Fixed regression in the timeit module with multiline setup.
bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely. Patch from Nicola Palumbo and Laurent De Buyst.
bpo-23661: unittest.mock side_effects can now be exceptions again. This was a regression vs Python 3.4. Patch from Ignacio Rossi
bpo-24608: chunk.Chunk.read() now always returns bytes, not str.
bpo-18684: Fixed reading out of the buffer in the re module.
bpo-24259: tarfile now raises a ReadError if an archive is truncated inside a data segment.
bpo-15014: SMTP.auth() and SMTP.login() now support RFC 4954’s optional initial-response argument to the SMTP AUTH command.
bpo-24669: Fix inspect.getsource() for „async def“ functions. Patch by Kai Groner.
bpo-24688: ast.get_docstring() for „async def“ functions.
Построить¶
bpo-24603: Update Windows builds and OS X 10.5 installer to use OpenSSL 1.0.2d.
Python 3.5.0 beta 3¶
Release date: 2015-07-05
Ядро и встроенные модули¶
bpo-24467: Fixed possible buffer over-read in bytearray. The bytearray object now always allocates place for trailing null byte and it’s buffer now is always null-terminated.
Upgrade to Unicode 8.0.0.
bpo-24345: Add Py_tp_finalize slot for the stable ABI.
bpo-24400: Introduce a distinct type for PEP 492 coroutines; add types.CoroutineType, inspect.getcoroutinestate, inspect.getcoroutinelocals; coroutines no longer use CO_GENERATOR flag; sys.set_coroutine_wrapper works only for „async def“ coroutines; inspect.iscoroutine no longer uses collections.abc.Coroutine, it’s intended to test for pure „async def“ coroutines only; add new opcode: GET_YIELD_FROM_ITER; fix generators wrapper used in types.coroutine to be instance of collections.abc.Generator; collections.abc.Awaitable and collections.abc.Coroutine can no longer be used to detect generator-based coroutines–use inspect.isawaitable instead.
bpo-24450: Add gi_yieldfrom to generators and cr_await to coroutines. Contributed by Benno Leslie and Yury Selivanov.
bpo-19235: Add new RecursionError exception. Patch by Georg Brandl.
Библиотека¶
bpo-21750: mock_open.read_data can now be read from each instance, as it could in Python 3.3.
bpo-24552: Fix use after free in an error case of the _pickle module.
bpo-24514: tarfile now tolerates number fields consisting of only whitespace.
bpo-19176: Fixed doctype() related bugs in C implementation of ElementTree. A deprecation warning no longer issued by XMLParser subclass with default doctype() method. Direct call of doctype() now issues a warning. Parser’s doctype() now is not called if target’s doctype() is called. Based on patch by Martin Panter.
bpo-20387: Restore semantic round-trip correctness in tokenize/untokenize for tab-indented blocks.
bpo-24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm() functions of the audioop module.
bpo-24336: The contextmanager decorator now works with functions with keyword arguments called «func» and «self». Patch by Martin Panter.
bpo-24522: Fix possible integer overflow in json accelerator module.
bpo-24489: ensure a previously set C errno doesn’t disturb cmath.polar().
bpo-24408: Fixed AttributeError in measure() and metrics() methods of tkinter.Font.
bpo-14373: C implementation of functools.lru_cache() now can be used with methods.
bpo-24347: Set KeyError if PyDict_GetItemWithError returns NULL.
bpo-24348: Drop superfluous incref/decref.
bpo-24359: Check for changed OrderedDict size during iteration.
bpo-24368: Support keyword arguments in OrderedDict methods.
bpo-24362: Simplify the C OrderedDict fast nodes resize logic.
bpo-24377: Fix a ref leak in OrderedDict.__repr__.
bpo-24369: Defend against key-changes during iteration.
Тесты¶
Документация¶
Построить¶
bpo-24432: Update Windows builds and OS X 10.5 installer to use OpenSSL 1.0.2c.
Python 3.5.0 beta 2¶
Release date: 2015-05-31
Ядро и встроенные модули¶
bpo-24284: The startswith and endswith methods of the str class no longer return True when finding the empty string and the indexes are completely out of range.
bpo-24115: Update uses of PyObject_IsTrue(), PyObject_Not(), PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() to check for and handle errors correctly.
bpo-24328: Fix importing one character extension modules.
bpo-11205: In dictionary displays, evaluate the key before the value.
bpo-24285: Fixed regression that prevented importing extension modules from inside packages. Patch by Petr Viktorin.
Библиотека¶
bpo-23247: Fix a crash in the StreamWriter.reset() of CJK codecs.
bpo-24270: Add math.isclose() and cmath.isclose() functions as per PEP 485. Contributed by Chris Barker and Tal Einat.
bpo-5633: Fixed timeit when the statement is a string and the setup is not.
bpo-24326: Fixed audioop.ratecv() with non-default weightB argument. Original patch by David Moore.
bpo-16991: Add a C implementation of OrderedDict.
bpo-23934: Fix inspect.signature to fail correctly for builtin types lacking signature information. Initial patch by James Powell.
Python 3.5.0 beta 1¶
Release date: 2015-05-24
Ядро и встроенные модули¶
bpo-24276: Fixed optimization of property descriptor getter.
bpo-24268: PEP 489: Multi-phase extension module initialization. Patch by Petr Viktorin.
bpo-23955: Add pyvenv.cfg option to suppress registry/environment lookup for generating sys.path on Windows.
bpo-24257: Fixed system error in the comparison of faked types.SimpleNamespace.
bpo-22939: Fixed integer overflow in iterator object. Patch by Clement Rouault.
bpo-23985: Fix a possible buffer overrun when deleting a slice from the front of a bytearray and then appending some other bytes data.
bpo-24102: Fixed exception type checking in standard error handlers.
bpo-15027: The UTF-32 encoder is now 3x to 7x faster.
bpo-23290: Optimize set_merge() for cases where the target is empty. (Contributed by Serhiy Storchaka.)
bpo-2292: PEP 448: Additional Unpacking Generalizations.
bpo-24096: Make warnings.warn_explicit more robust against mutation of the warnings.filters list.
bpo-23996: Avoid a crash when a delegated generator raises an unnormalized StopIteration exception. Patch by Stefan Behnel.
bpo-23910: Optimize property() getter calls. Patch by Joe Jevnik.
bpo-23911: Move path-based importlib bootstrap code to a separate frozen module.
bpo-24192: Fix namespace package imports.
bpo-24022: Fix tokenizer crash when processing undecodable source code.
bpo-9951: Added a hex() method to bytes, bytearray, and memoryview.
bpo-22906: PEP 479: Change StopIteration handling inside generators.
bpo-24017: PEP 492: Coroutines with async and await syntax.
Библиотека¶
bpo-14373: Added C implementation of functools.lru_cache(). Based on patches by Matt Joiner and Alexey Kachayev.
bpo-24230: The tempfile module now accepts bytes for prefix, suffix and dir parameters and returns bytes in such situations (matching the os module APIs).
bpo-22189: collections.UserString now supports __getnewargs__(), __rmod__(), casefold(), format_map(), isprintable(), and maketrans(). Patch by Joe Jevnik.
bpo-24244: Prevents termination when an invalid format string is encountered on Windows in strftime.
bpo-23973: PEP 484: Add the typing module.
bpo-23086: The collections.abc.Sequence() abstract base class added start and stop parameters to the index() mixin. Patch by Devin Jeanpierre.
bpo-20035: Разрешить параметры с именами
tkinter._fix
и_tkinter
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-24257: Fixed segmentation fault in sqlite3.Row constructor with faked cursor type.
bpo-15836: assertRaises(), assertRaisesRegex(), assertWarns() and assertWarnsRegex() assertments now check the type of the first argument to prevent possible user error. Based on patch by Daniel Wagner-Hall.
bpo-9858: Add missing method stubs to _io.RawIOBase. Patch by Laura Rupprecht.
bpo-22955: attrgetter, itemgetter and methodcaller objects in the operator module now support pickling. Added readable and evaluable repr for these objects. Based on patch by Josh Rosenberg.
bpo-22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again when a directory with the chosen name already exists on Windows as well as on Unix. tempfile.mkstemp() now fails early if parent directory is not valid (not exists or is a file) on Windows.
bpo-23780: Improved error message in os.path.join() with single argument.
bpo-6598: Increased time precision and random number range in email.utils.make_msgid() to strengthen the uniqueness of the message ID.
bpo-24091: Fixed various crashes in corner cases in C implementation of ElementTree.
bpo-21931: msilib.FCICreate() now raises TypeError in the case of a bad argument instead of a ValueError with a bogus FCI error number. Patch by Jeffrey Armstrong.
bpo-13866: quote_via argument added to urllib.parse.urlencode.
bpo-20098: New mangle_from policy option for email, default True for compat32, but False for all other policies.
bpo-24211: The email library now supports RFC 6532: it can generate headers using utf-8 instead of encoded words.
bpo-16314: Added support for the LZMA compression in distutils.
bpo-21804: poplib now supports RFC 6856 (UTF8).
bpo-18682: Optimized pprint functions for builtin scalar types.
bpo-22027: smtplib now supports RFC 6531 (SMTPUTF8).
bpo-23488: Random generator objects now consume 2x less memory on 64-bit.
bpo-1322: platform.dist() and platform.linux_distribution() functions are now deprecated. Initial patch by Vajrasky Kok.
bpo-22486: Added the math.gcd() function. The fractions.gcd() function now is deprecated. Based on patch by Mark Dickinson.
bpo-24064: Property() docstrings are now writeable. (Patch by Berker Peksag.)
bpo-22681: Added support for the koi8_t encoding.
bpo-22682: Added support for the kz1048 encoding.
bpo-23796: peek and read1 methods of BufferedReader now raise ValueError if they called on a closed object. Patch by John Hergenroeder.
bpo-21795: smtpd now supports the 8BITMIME extension whenever the new decode_data constructor argument is set to False.
bpo-24155: optimize heapq.heapify() for better cache performance when heapifying large lists.
bpo-21800: imaplib now supports RFC 5161 (enable), RFC 6855 (utf8/internationalized email) and automatically encodes non-ASCII usernames and passwords to UTF8.
bpo-20274: When calling a _sqlite.Connection, it now complains if passed any keyword arguments. Previously it silently ignored them.
bpo-20274: Remove ignored and erroneous «kwargs» parameters from three METH_VARARGS methods on _sqlite.Connection.
bpo-24134: assertRaises(), assertRaisesRegex(), assertWarns() and assertWarnsRegex() checks now emits a deprecation warning when callable is None or keyword arguments except msg is passed in the context manager mode.
bpo-24018: Add a collections.abc.Generator abstract base class. Contributed by Stefan Behnel.
bpo-23880: Tkinter’s getint() and getdouble() now support Tcl_Obj. Tkinter’s getdouble() now supports any numbers (in particular int).
bpo-22619: Added negative limit support in the traceback module. Based on patch by Dmitry Kazakov.
bpo-24094: Fix possible crash in json.encode with poorly behaved dict subclasses.
bpo-9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes. Patch written by William Orr.
bpo-17445: add difflib.diff_bytes() to support comparison of byte strings (fixes a regression from Python 2).
bpo-23917: Fall back to sequential compilation when ProcessPoolExecutor doesn’t exist. Patch by Claudiu Popa.
bpo-23008: Fixed resolving attributes with boolean value is False in pydoc.
Fix asyncio issue 235: LifoQueue and PriorityQueue’s put didn’t increment unfinished tasks (this bug was introduced when JoinableQueue was merged with Queue).
bpo-23908: os functions now reject paths with embedded null character on Windows instead of silently truncating them.
bpo-23728: binascii.crc_hqx() could return an integer outside of the range 0-0xffff for empty data.
bpo-23887: urllib.error.HTTPError now has a proper repr() representation. Patch by Berker Peksag.
asyncio: New event loop APIs: set_task_factory() and get_task_factory().
asyncio: async() function is deprecated in favour of ensure_future().
bpo-24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore support new „async with“ syntax. Contributed by Yury Selivanov.
bpo-24179: Support „async for“ for asyncio.StreamReader. Contributed by Yury Selivanov.
bpo-24184: Add AsyncIterator and AsyncIterable ABCs to collections.abc. Contributed by Yury Selivanov.
bpo-22547: Implement informative __repr__ for inspect.BoundArguments. Contributed by Yury Selivanov.
bpo-24190: Implement inspect.BoundArgument.apply_defaults() method. Contributed by Yury Selivanov.
bpo-20691: Add „follow_wrapped“ argument to inspect.Signature.from_callable() and inspect.signature(). Contributed by Yury Selivanov.
bpo-24248: Deprecate inspect.Signature.from_function() and inspect.Signature.from_builtin().
bpo-23898: Fix inspect.classify_class_attrs() to support attributes with overloaded __eq__ and __bool__. Patch by Mike Bayer.
bpo-24298: Fix inspect.signature() to correctly unwrap wrappers around bound methods.
IDLE¶
bpo-23184: remove unused names and imports in idlelib. Initial patch by Al Sweigart.
Тесты¶
Документация¶
Инструменты/демоверсии¶
bpo-24000: Improved Argument Clinic’s mapping of converters to legacy «format units». Updated the documentation to match.
bpo-24001: Argument Clinic converters now use accept={type} instead of types={„type“} to specify the types the converter accepts.
bpo-23330: h2py now supports arbitrary filenames in #include.
bpo-24031: make patchcheck now supports git checkouts, too.
Python 3.5.0 alpha 4¶
Release date: 2015-04-19
Ядро и встроенные модули¶
bpo-22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now include the architecture triplet in the extension name, to make it easy to test builds for different ABIs in the same working tree. Under OS X, the extension name now includes PEP 3149-style information.
bpo-22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES. Patch courtesy of Joe Jevnik.
bpo-23726: Don’t enable GC for user subclasses of non-GC types that don’t add any new fields. Patch by Eugene Toder.
bpo-23309: Avoid a deadlock at shutdown if a daemon thread is aborted while it is holding a lock to a buffered I/O object, and the main thread tries to use the same I/O object (typically stdout or stderr). A fatal error is emitted instead.
bpo-22977: Fixed formatting Windows error messages on Wine. Patch by Martin Panter.
bpo-23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on non-integer input.
bpo-24044: Fix possible null pointer dereference in list.sort in out of memory conditions.
bpo-21354: PyCFunction_New function is exposed by python DLL again.
Библиотека¶
bpo-23840: tokenize.open() now closes the temporary binary file on error to fix a resource warning.
bpo-16914: new debuglevel 2 in smtplib adds timestamps to debug output.
bpo-7159: urllib.request now supports sending auth credentials automatically after the first 401. This enhancement is a superset of the enhancement from bpo-19494 and supersedes that change.
bpo-23703: Fix a regression in urljoin() introduced in 901e4e52b20a. Patch by Demian Brecht.
bpo-4254: Adds _curses.update_lines_cols(). Patch by Arnon Yaari
bpo-19933: Provide default argument for ndigits in round. Patch by Vajrasky Kok.
bpo-23193: Add a numeric_owner parameter to tarfile.TarFile.extract and tarfile.TarFile.extractall. Patch by Michael Vogt and Eric Smith.
bpo-23342: Add a subprocess.run() function than returns a CalledProcess instance for a more consistent API than the existing call* functions.
bpo-21217: inspect.getsourcelines() now tries to compute the start and end lines from the code object, fixing an issue when a lambda function is used as decorator argument. Patch by Thomas Ballinger and Allison Kaptur.
bpo-24521: Fix possible integer overflows in the pickle module.
bpo-22931: Allow „[“ and „]“ in cookie values.
The keywords attribute of functools.partial is now always a dictionary.
bpo-23811: Add missing newline to the PyCompileError error message. Patch by Alex Shkop.
bpo-21116: Avoid blowing memory when allocating a multiprocessing shared array that’s larger than 50% of the available RAM. Patch by Médéric Boquien.
bpo-22982: Improve BOM handling when seeking to multiple positions of a writable text file.
bpo-23464: Removed deprecated asyncio JoinableQueue.
bpo-23529: Limit the size of decompressed data when reading from GzipFile, BZ2File or LZMAFile. This defeats denial of service attacks using compressed bombs (i.e. compressed payloads which decompress to a huge size). Patch by Martin Panter and Nikolaus Rath.
bpo-21859: Added Python implementation of io.FileIO.
bpo-23865: close() methods in multiple modules now are idempotent and more robust at shutdown. If they need to release multiple resources, all are released even if errors occur.
bpo-23400: Raise same exception on both Python 2 and 3 if sem_open is not available. Patch by Davin Potts.
bpo-10838: The subprocess now module includes SubprocessError and TimeoutError in its list of exported names for the users wild enough to use
from subprocess import *
.bpo-23411: Added DefragResult, ParseResult, SplitResult, DefragResultBytes, ParseResultBytes, and SplitResultBytes to urllib.parse.__all__. Patch by Martin Panter.
bpo-23881: urllib.request.ftpwrapper constructor now closes the socket if the FTP connection failed to fix a ResourceWarning.
bpo-23853:
socket.socket.sendall()
does no more reset the socket timeout each time data is sent successfully. The socket timeout is now the maximum total duration to send all data.bpo-22721: An order of multiline pprint output of set or dict containing orderable and non-orderable elements no longer depends on iteration order of set or dict.
bpo-15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always returns bool. tkinter.BooleanVar now validates input values (accepted bool, int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns bool.
bpo-10590: xml.sax.parseString() now supports string argument.
bpo-23338: Fixed formatting ctypes error messages on Cygwin. Patch by Makoto Kato.
bpo-15582: inspect.getdoc() now follows inheritance chains.
bpo-2175: SAX parsers now support a character stream of InputSource object.
bpo-16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and arbitrary precision integers added in Tcl 8.5.
bpo-23834: Fix socket.sendto(), use the C Py_ssize_t type to store the result of sendto() instead of the C int type.
bpo-23618: Разрешить параметры с именами
socket.socket.connect()
иInterruptedError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21526: Tkinter now supports new boolean type in Tcl 8.5.
bpo-23836: Fix the faulthandler module to handle reentrant calls to its signal handlers.
bpo-23838: linecache now clears the cache and returns an empty result on MemoryError.
bpo-10395: Added os.path.commonpath(). Implemented in posixpath and ntpath. Based on patch by Rafik Draoui.
bpo-23611: Serializing more «lookupable» objects (such as unbound methods or nested classes) now are supported with pickle protocols < 4.
bpo-13583: sqlite3.Row now supports slice indexing.
bpo-18473: Fixed 2to3 and 3to2 compatible pickle mappings. Fixed ambiguous reverse mappings. Added many new mappings. Import mapping is no longer applied to modules already mapped with full name mapping.
bpo-23485: select.select() is now retried automatically with the recomputed timeout when interrupted by a signal, except if the signal handler raises an exception. This change is part of the PEP 475.
bpo-23752: When built from an existing file descriptor, io.FileIO() now only calls fstat() once. Before fstat() was called twice, which was not necessary.
bpo-23704: collections.deque() objects now support __add__, __mul__, and __imul__().
bpo-23171: csv.Writer.writerow() now supports arbitrary iterables.
bpo-23745: The new email header parser now handles duplicate MIME parameter names without error, similar to how get_param behaves.
bpo-22117: Fix os.utime(), it now rounds the timestamp towards minus infinity (-inf) instead of rounding towards zero.
bpo-23310: Fix MagicMock’s initializer to work with __methods__, just like configure_mock(). Patch by Kasia Jachim.
Построить¶
Тесты¶
Инструменты/демоверсии¶
bpo-18128: pygettext now uses standard +NNNN format in the POT-Creation-Date header.
bpo-23935: Argument Clinic’s understanding of format units accepting bytes, bytearrays, and buffers is now consistent with both the documentation and the implementation.
bpo-23944: Argument Clinic now wraps long impl prototypes at column 78.
bpo-20586: Argument Clinic now ensures that functions without docstrings have signatures.
bpo-23492: Argument Clinic now generates argument parsing code with PyArg_Parse instead of PyArg_ParseTuple if possible.
bpo-23500: Argument Clinic is now smarter about generating the «#ifndef» (empty) definition of the methoddef macro: it’s only generated once, even if Argument Clinic processes the same symbol multiple times, and it’s emitted at the end of all processing rather than immediately after the first use.
C API¶
bpo-23998: PyImport_ReInitLock() now checks for lock allocation error
Python 3.5.0 alpha 3¶
Release date: 2015-03-28
Ядро и встроенные модули¶
bpo-23573: Increased performance of string search operations (str.find, str.index, str.count, the in operator, str.split, str.partition) with arguments of different kinds (UCS1, UCS2, UCS4).
bpo-23753: Python doesn’t support anymore platforms without stat() or fstat(), these functions are always required.
bpo-23681: The -b option now affects comparisons of bytes with int.
bpo-23632: Memoryviews now allow tuple indexing (including for multi-dimensional memoryviews).
bpo-23192: Fixed generator lambdas. Patch by Bruno Cauet.
bpo-23629: Fix the default __sizeof__ implementation for variable-sized objects.
Библиотека¶
bpo-14260: The groupindex attribute of regular expression pattern object now is non-modifiable mapping.
bpo-23792: Ignore KeyboardInterrupt when the pydoc pager is active. This mimics the behavior of the standard unix pagers, and prevents pipepager from shutting down while the pager itself is still running.
bpo-23775: pprint() of OrderedDict now outputs the same representation as repr().
bpo-23765: Removed IsBadStringPtr calls in ctypes
bpo-22364: Improved some re error messages using regex for hints.
bpo-23742: ntpath.expandvars() no longer loses unbalanced single quotes.
bpo-21717: The zipfile.ZipFile.open function now supports „x“ (exclusive creation) mode.
bpo-21802: The reader in BufferedRWPair now is closed even when closing writer failed in BufferedRWPair.close().
bpo-23622: Unknown escapes in regular expressions that consist of
'\'
and ASCII letter now raise a deprecation warning and will be forbidden in Python 3.6.bpo-23671: string.Template now allows specifying the «self» parameter as a keyword argument. string.Formatter now allows specifying the «self» and the «format_string» parameters as keyword arguments.
bpo-23502: The pprint module now supports mapping proxies.
bpo-17530: pprint now wraps long bytes objects and bytearrays.
bpo-22687: Fixed some corner cases in breaking words in tetxtwrap. Got rid of quadratic complexity in breaking long words.
bpo-4727: The copy module now uses pickle protocol 4 (PEP 3154) and supports copying of instances of classes whose __new__ method takes keyword-only arguments.
bpo-23491: Added a zipapp module to support creating executable zip file archives of Python code. Registered «.pyz» and «.pyzw» extensions on Windows for these archives (PEP 441).
bpo-23657: Avoid explicit checks for str in zipapp, adding support for pathlib.Path objects as arguments.
bpo-23688: Added support of arbitrary bytes-like objects and avoided unnecessary copying of memoryview in gzip.GzipFile.write(). Original patch by Wolfgang Maier.
bpo-23252: Added support for writing ZIP files to unseekable streams.
bpo-23647: Increase imaplib’s MAXLINE to accommodate modern mailbox sizes.
bpo-23539: If body is None, http.client.HTTPConnection.request now sets Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors from some web servers.
bpo-22351: The nntplib.NNTP constructor no longer leaves the connection and socket open until the garbage collector cleans them up. Patch by Martin Panter.
bpo-23704: collections.deque() objects now support methods for index(), insert(), and copy(). This allows deques to be registered as a MutableSequence and it improves their substitutability for lists.
bpo-23715: Разрешить параметры с именами
signal.sigwaitinfo()
иsignal.sigtimedwait()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and codecs, that accepted only read-only bytes-like object now accept writable bytes-like object too.
bpo-23646: If time.sleep() is interrupted by a signal, the sleep is now retried with the recomputed delay, except if the signal handler raises an exception (PEP 475).
bpo-23136: _strptime now uniformly handles all days in week 0, including Dec 30 of previous year. Based on patch by Jim Carroll.
bpo-23700: Iterator of NamedTemporaryFile now keeps a reference to NamedTemporaryFile instance. Patch by Bohuslav Kabrda.
bpo-22903: The fake test case created by unittest.loader when it fails importing a test module is now picklable.
bpo-22181: On Linux, os.urandom() now uses the new getrandom() syscall if available, syscall introduced in the Linux kernel 3.17. It is more reliable and more secure, because it avoids the need of a file descriptor and waits until the kernel has enough entropy.
bpo-2211: Updated the implementation of the http.cookies.Morsel class. Setting attributes key, value and coded_value directly now is deprecated. update() and setdefault() now transform and check keys. Comparing for equality now takes into account attributes key, value and coded_value. copy() now returns a Morsel, not a dict. repr() now contains all attributes. Optimized checking keys and quoting values. Added new tests. Original patch by Demian Brecht.
bpo-18983: Allow selection of output units in timeit. Patch by Julian Gindi.
bpo-23631: Fix traceback.format_list when a traceback has been mutated.
bpo-23568: Add rdivmod support to MagicMock() objects. Patch by Håkan Lövdahl.
bpo-2052: Add charset parameter to HtmlDiff.make_file().
bpo-23668: Support os.truncate and os.ftruncate on Windows.
bpo-23138: Fixed parsing cookies with absent keys or values in cookiejar. Patch by Demian Brecht.
bpo-23051: multiprocessing.Pool methods imap() and imap_unordered() now handle exceptions raised by an iterator. Patch by Alon Diamant and Davin Potts.
bpo-23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl.
bpo-23566: enable(), register(), dump_traceback() and dump_traceback_later() functions of faulthandler now accept file descriptors. Patch by Wei Wu.
bpo-22928: Disabled HTTP header injections in http.client. Original patch by Demian Brecht.
bpo-23615: Modules bz2, tarfile and tokenize now can be reloaded with imp.reload(). Patch by Thomas Kluyver.
bpo-23605: os.walk() now calls os.scandir() instead of os.listdir(). The usage of os.scandir() reduces the number of calls to os.stat(). Initial patch written by Ben Hoyt.
Построить¶
bpo-23585: make patchcheck will ensure the interpreter is built.
Тесты¶
Инструменты/демоверсии¶
bpo-22826: The result of open() in Tools/freeze/bkfile.py is now better compatible with regular files (in particular it now supports the context management protocol).
Python 3.5.0 alpha 2¶
Release date: 2015-03-09
Ядро и встроенные модули¶
bpo-23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError if a function returns a result and raises an exception. The SystemError is chained to the previous exception.
Библиотека¶
bpo-22524: New os.scandir() function, part of the PEP 471: «os.scandir() function – a better and faster directory iterator». Patch written by Ben Hoyt.
bpo-23103: Reduced the memory consumption of IPv4Address and IPv6Address.
bpo-21793: BaseHTTPRequestHandler again logs response code as numeric, not as stringified enum. Patch by Demian Brecht.
bpo-23476: In the ssl module, enable OpenSSL’s X509_V_FLAG_TRUSTED_FIRST flag on certificate stores when it is available.
bpo-23576: Avoid stalling in SSL reads when EOF has been reached in the SSL layer but the underlying connection hasn’t been closed.
bpo-23504: Added an __all__ to the types module.
bpo-23563: Optimized utility functions in urllib.parse.
bpo-7830: Flatten nested functools.partial.
bpo-20204: Added the __module__ attribute to _tkinter classes.
bpo-19980: Improved help() for non-recognized strings. help(„“) now shows the help on str. help(„help“) now shows the help on help(). Original patch by Mark Lawrence.
bpo-23521: Corrected pure python implementation of timedelta division. Eliminated OverflowError from
timedelta * float
for some floats; Corrected rounding in timedelta true division.bpo-21619: Popen objects no longer leave a zombie after exit in the with statement if the pipe was broken. Patch by Martin Panter.
bpo-22936: Make it possible to show local variables in tracebacks for both the traceback module and unittest.
bpo-15955: Add an option to limit the output size in bz2.decompress(). Patch by Nikolaus Rath.
bpo-6639: Module-level turtle functions no longer raise TclError after closing the window.
bpo-814253: Group references and conditional group references now work in lookbehind assertions in regular expressions. (See also: bpo-9179)
bpo-23215: Multibyte codecs with custom error handlers that ignores errors consumed too much memory and raised SystemError or MemoryError. Original patch by Aleksi Torhamo.
bpo-5700: io.FileIO() called flush() after closing the file. flush() was not called in close() if closefd=False.
bpo-23374: Fixed pydoc failure with non-ASCII files when stdout encoding differs from file system encoding (e.g. on Mac OS).
bpo-23481: Remove RC4 from the SSL module’s default cipher list.
bpo-21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty docstrings.
bpo-22885: Fixed arbitrary code execution vulnerability in the dbm.dumb module. Original patch by Claudiu Popa.
bpo-23239: ssl.match_hostname() now supports matching of IP addresses.
bpo-23146: Fix mishandling of absolute Windows paths with forward slashes in pathlib.
bpo-23096: Pickle representation of floats with protocol 0 now is the same for both Python and C implementations.
bpo-19105: pprint now more efficiently uses free space at the right.
bpo-14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.
bpo-21717: tarfile.open() now supports „x“ (exclusive creation) mode.
bpo-23344: marshal.dumps() is now 20-25% faster on average.
bpo-20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on average.
bpo-23421: Fixed compression in tarfile CLI. Patch by wdv4758h.
bpo-23367: Fix possible overflows in the unicodedata module.
bpo-23361: Fix possible overflow in Windows subprocess creation code.
logging.handlers.QueueListener now takes a respect_handler_level keyword argument which, if set to True, will pass messages to handlers taking handler levels into account.
bpo-19705: turtledemo now has a visual sorting algorithm demo. Original patch from Jason Yeo.
bpo-23801: Fix issue where cgi.FieldStorage did not always ignore the entire preamble to a multipart body.
Построить¶
C API¶
bpo-20204: Deprecation warning is now raised for builtin types without the __module__ attribute.
Windows¶
Python 3.5.0 alpha 1¶
Release date: 2015-02-08
Ядро и встроенные модули¶
bpo-23285: PEP 475 - EINTR handling.
bpo-22735: Fix many edge cases (including crashes) involving custom mro() implementations.
bpo-22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer() and PyObject_AsWriteBuffer().
bpo-21295: Revert some changes (bpo-16795) to AST line numbers and column offsets that constituted a regression.
bpo-22986: Allow changing an object’s __class__ between a dynamic type and static type in some cases.
bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and PyUnicode_EncodeCodePage() now raise an exception if the object is not a Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on platforms other than Windows. Patch written by Campbell Barton.
bpo-21408: The default __ne__() now returns NotImplemented if __eq__() returned NotImplemented. Original patch by Martin Panter.
bpo-23321: Fixed a crash in str.decode() when error handler returned replacement string longer than malformed input data.
bpo-22286: The «backslashreplace» error handlers now works with decoding and translating.
bpo-23253: Delay-load ShellExecute[AW] in os.startfile for reduced startup overhead on Windows.
bpo-22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for atomic memory access if available. Patch written by Vitor de Lima and Gustavo Temple.
bpo-20284: %-interpolation (aka printf) formatting added for bytes and bytearray.
bpo-23048: Fix jumping out of an infinite while loop in the pdb.
bpo-20335: bytes constructor now raises TypeError when encoding or errors is specified with non-string argument. Based on patch by Renaud Blanch.
bpo-22834: If the current working directory ends up being set to a non-existent directory then import will no longer raise FileNotFoundError.
bpo-22869: Move the interpreter startup & shutdown code to a new dedicated pylifecycle.c module
bpo-22847: Improve method cache efficiency.
bpo-22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff bytes on a 32-bit platform.
bpo-22653: Fix an assertion failure in debug mode when doing a reentrant dict insertion in debug mode.
bpo-22643: Fix integer overflow in Unicode case operations (upper, lower, title, swapcase, casefold).
bpo-17636: Circular imports involving relative imports are now supported.
bpo-22604: Fix assertion error in debug mode when dividing a complex number by (nan+0j).
bpo-21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path are set to None.
bpo-16518: Use „bytes-like object required“ in error messages that previously used the far more cryptic «„x“ does not support the buffer protocol.
bpo-22470: Fixed integer overflow issues in «backslashreplace», «xmlcharrefreplace», and «surrogatepass» error handlers.
bpo-22540: Разрешить параметры с именами
PyObject_IsInstance
иPyObject_IsSubclass
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-18711: Разрешить параметры с именами
PyErr_FormatV
иPyErr_Format
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22520: Fix overflow checking when generating the repr of a unicode object.
bpo-22519: Fix overflow checking in PyBytes_Repr.
bpo-22518: Fix integer overflow issues in latin-1 encoding.
bpo-16324: _charset parameter of MIMEText now also accepts email.charset.Charset instances. Initial patch by Claude Paroz.
bpo-1764286: Fix inspect.getsource() to support decorated functions. Patch by Claudiu Popa.
bpo-18554: os.__all__ includes posix functions.
bpo-21391: Use os.path.abspath in the shutil module.
bpo-11471: avoid generating a JUMP_FORWARD instruction at the end of an if-block if there is no else-clause. Original patch by Eugene Toder.
bpo-22215: Now ValueError is raised instead of TypeError when str or bytes argument contains not permitted null character or byte.
bpo-22258: Разрешить параметры с именами
ioctl(FIOCLEX)
иfcntl()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21389: Displaying the __qualname__ of the underlying function in the repr of a bound method.
bpo-22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM and returns -1 (error) on integer overflow.
bpo-20184: Argument Clinic based signature introspection added for 30 of the builtin functions.
bpo-22116: C functions and methods (of the „builtin_function_or_method“ type) can now be weakref’ed. Patch by Wei Wu.
bpo-22077: Improve index error messages for bytearrays, bytes, lists, and tuples by adding „or slices“. Added „, not <typename>“ for bytearrays. Original patch by Claudiu Popa.
bpo-20179: Apply Argument Clinic to bytes and bytearray. Patch by Tal Einat.
bpo-22082: Clear interned strings in slotdefs.
Upgrade Unicode database to Unicode 7.0.0.
bpo-21897: Fix a crash with the f_locals attribute with closure variables when frame.clear() has been called.
bpo-21205: Разрешить параметры с именами
__qualname__
иrepr(gen)
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21669: With the aid of heuristics in SyntaxError.__init__, the parser now attempts to generate more meaningful (or at least more search engine friendly) error messages when «exec» and «print» are used as statements.
bpo-21642: Разрешить параметры с именами
else
иTrue if 42else False
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21523: Fix over-pessimistic computation of the stack effect of some opcodes in the compiler. This also fixes a quadratic compilation time issue noticeable when compiling code with a large number of «and» and «or» operators.
bpo-21418: Fix a crash in the builtin function super() when called without argument and without current frame (ex: embedded Python).
bpo-21425: Fix flushing of standard streams in the interactive interpreter.
bpo-21435: In rare cases, when running finalizers on objects in cyclic trash a bad pointer dereference could occur due to a subtle flaw in internal iteration logic.
bpo-21377: PyBytes_Concat() now tries to concatenate in-place when the first argument has a reference count of 1. Patch by Nikolaus Rath.
bpo-20355: -W command line options now have higher priority than the PYTHONWARNINGS environment variable. Patch by Arfrever.
bpo-21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c.
bpo-20904: Support setting FPU precision on m68k.
bpo-21209: Fix sending tuples to custom generator objects with the yield from syntax.
bpo-21193: pow(a, b, c) now raises ValueError rather than TypeError when b is negative. Patch by Josh Rosenberg.
bpo-21176: PEP 465: Add the „@“ operator for matrix multiplication.
bpo-21134: Fix segfault when str is called on an uninitialized UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object.
bpo-19537: Fix PyUnicode_DATA() alignment under m68k. Patch by Andreas Schwab.
bpo-20929: Add a type cast to avoid shifting a negative number.
bpo-20731: Properly position in source code files even if they are opened in text mode. Patch by Serhiy Storchaka.
bpo-20637: Key-sharing now also works for instance dictionaries of subclasses. Patch by Peter Ingebretson.
bpo-8297: Attributes missing from modules now include the module name in the error text. Original patch by ysj.ray.
bpo-19995: %c, %o, %x, and %X now raise TypeError on non-integer input.
bpo-19655: The ASDL parser - used by the build process to generate code for managing the Python AST in C - was rewritten. The new parser is self contained and does not require to carry long the spark.py parser-generator library; spark.py was removed from the source base.
bpo-12546: Allow
\x00
to be used as a fill character when using str, int, float, and complex __format__ methods.bpo-20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.
bpo-13598: Modify string.Formatter to support auto-numbering of replacement fields. It now matches the behavior of str.format() in this regard. Patches by Phil Elson and Ramchandra Apte.
bpo-8931: Make alternate formatting („#“) for type „c“ raise an exception. In versions prior to 3.5, „#“ with „c“ had no effect. Now specifying it is an error. Patch by Torsten Landschoff.
bpo-23165: Perform overflow checks before allocating memory in the _Py_char2wchar function.
Библиотека¶
bpo-23399: pyvenv creates relative symlinks where possible.
bpo-20289: cgi.FieldStorage() now supports the context management protocol.
bpo-13128: Print response headers for CONNECT requests when debuglevel > 0. Patch by Demian Brecht.
bpo-15381: Optimized io.BytesIO to make less allocations and copyings.
bpo-22818: Splitting on a pattern that could match an empty string now raises a warning. Patterns that can only match empty strings are now rejected.
bpo-23099: Closing io.BytesIO with exported buffer is rejected now to prevent corrupting exported buffer.
bpo-23326: Removed __ne__ implementations. Since fixing default __ne__ implementation in bpo-21408 they are redundant.
bpo-23363: Fix possible overflow in itertools.permutations.
bpo-23364: Fix possible overflow in itertools.product.
bpo-23366: Fixed possible integer overflow in itertools.combinations.
bpo-23369: Fixed possible integer overflow in _json.encode_basestring_ascii.
bpo-23353: Fix the exception handling of generators in PyEval_EvalFrameEx(). At entry, save or swap the exception state even if PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception state is now always restored or swapped, not only if why is WHY_YIELD or WHY_RETURN. Patch co-written with Antoine Pitrou.
bpo-14099: Restored support of writing ZIP files to tellable but non-seekable streams.
bpo-14099: Writing to ZipFile and reading multiple ZipExtFiles is threadsafe now.
bpo-19361: JSON decoder now raises JSONDecodeError instead of ValueError.
bpo-18518: timeit now rejects statements which can’t be compiled outside a function or a loop (e.g. «return» or «break»).
bpo-23094: Fixed readline with frames in Python implementation of pickle.
bpo-23268: Fixed bugs in the comparison of ipaddress classes.
bpo-21408: Removed incorrect implementations of __ne__() which didn’t returned NotImplemented if __eq__() returned NotImplemented. The default __ne__() now works correctly.
bpo-19996:
email.feedparser.FeedParser
now handles (malformed) headers with no key rather than assuming the body has started.bpo-20188: Support Application-Layer Protocol Negotiation (ALPN) in the ssl module.
bpo-23133: Pickling of ipaddress objects now produces more compact and portable representation.
bpo-23248: Update ssl error codes from latest OpenSSL git master.
bpo-23266: Much faster implementation of ipaddress.collapse_addresses() when there are many non-consecutive addresses.
bpo-23098: 64-bit dev_t is now supported in the os module.
bpo-21817: When an exception is raised in a task submitted to a ProcessPoolExecutor, the remote traceback is now displayed in the parent process. Patch by Claudiu Popa.
bpo-15955: Add an option to limit output size when decompressing LZMA data. Patch by Nikolaus Rath and Martin Panter.
bpo-23250: In the http.cookies module, capitalize «HttpOnly» and «Secure» as they are written in the standard.
bpo-23063: In the distutils“ check command, fix parsing of reST with code or code-block directives.
bpo-23209: selectors.BaseSelector.get_key() now raises a RuntimeError if the selector is closed. And selectors.BaseSelector.close() now clears its internal reference to the selector mapping to break a reference cycle. Initial patch written by Martin Richard. (See also: bpo-23225)
bpo-17911: Provide a way to seed the linecache for a PEP-302 module without actually loading the code.
bpo-17911: Provide a new object API for traceback, including the ability to not lookup lines at all until the traceback is actually rendered, without any trace of the original objects being kept alive.
bpo-19777: Provide a home() classmethod on Path objects. Contributed by Victor Salgado and Mayank Tripathi.
bpo-23206: Разрешить параметры с именами
json.dumps(..., ensure_ascii=False)
иensure_ascii=True
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-23185: Add math.inf and math.nan constants.
bpo-23186: Add ssl.SSLObject.shared_ciphers() and ssl.SSLSocket.shared_ciphers() to fetch the client’s list ciphers sent at handshake.
bpo-23143: Remove compatibility with OpenSSLs older than 0.9.8.
bpo-23132: Improve performance and introspection support of comparison methods created by functool.total_ordering.
bpo-19776: Add an expanduser() method on Path objects.
bpo-23112: Fix SimpleHTTPServer to correctly carry the query string and fragment when it redirects to add a trailing slash.
bpo-21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK, HTTPStatus.NOT_FOUND). Patch by Demian Brecht.
bpo-23093: In the io, module allow more operations to work on detached streams.
bpo-23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol version.
bpo-22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(), instead of reading /dev/urandom, to get pseudo-random bytes.
bpo-19104: pprint now produces evaluable output for wrapped strings.
bpo-23071: Added missing names to codecs.__all__. Patch by Martin Panter.
bpo-22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX opcode if possible.
bpo-15513: Added a __sizeof__ implementation for pickle classes.
bpo-19858: pickletools.optimize() now aware of the MEMOIZE opcode, can produce more compact result and no longer produces invalid output if input data contains MEMOIZE opcodes together with PUT or BINPUT opcodes.
bpo-22095: Fixed HTTPConnection.set_tunnel with default port. The port value in the host header was set to «None». Patch by Demian Brecht.
bpo-23016: A warning no longer produces an AttributeError when the program is run with pythonw.exe.
bpo-21775: shutil.copytree(): fix crash when copying to VFAT. An exception handler assumed that OSError objects always have a „winerror“ attribute. That is not the case, so the exception handler itself raised AttributeError when run on Linux (and, presumably, any other non-Windows OS). Patch by Greg Ward.
bpo-1218234: Fix inspect.getsource() to load updated source of reloaded module. Initial patch by Berker Peksag.
bpo-21740: Support wrapped callables in doctest. Patch by Claudiu Popa.
bpo-23009: Make sure selectors.EpollSelector.select() works when no FD is registered.
bpo-22959: In the constructor of http.client.HTTPSConnection, prefer the context’s check_hostname attribute over the check_hostname parameter.
bpo-22696: Add function
sys.is_finalizing()
to know about interpreter shutdown.bpo-16043: Add a default limit for the amount of data xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753.
bpo-14099: ZipFile.open() no longer reopen the underlying file. Objects returned by ZipFile.open() can now operate independently of the ZipFile even if the ZipFile was created by passing in a file-like object as the first argument to the constructor.
bpo-22966: Fix __pycache__ pyc file name clobber when pyc_compile is asked to compile a source file containing multiple dots in the source file name.
bpo-21971: Update turtledemo doc and add module to the index.
bpo-21032: Fixed socket leak if HTTPConnection.getresponse() fails. Original patch by Martin Panter.
bpo-22407: Deprecated the use of re.LOCALE flag with str patterns or re.ASCII. It was newer worked.
bpo-22902: The «ip» command is now used on Linux to determine MAC address in uuid.getnode(). Patch by Bruno Cauet.
bpo-22960: Add a context argument to xmlrpclib.ServerProxy constructor.
bpo-22389: Add contextlib.redirect_stderr().
bpo-21356: Make ssl.RAND_egd() optional to support LibreSSL. The availability of the function is checked during the compilation. Patch written by Bernard Spil.
bpo-22915: SAX parser now supports files opened with file descriptor or bytes path.
bpo-22609: Constructors and update methods of mapping classes in the collections module now accept the self keyword argument.
bpo-22940: Add readline.append_history_file.
bpo-19676: Added the «namereplace» error handler.
bpo-22788: Add context parameter to logging.handlers.HTTPHandler.
bpo-22921: Allow SSLContext to take the hostname parameter even if OpenSSL doesn’t support SNI.
bpo-22894: TestCase.subTest() would cause the test suite to be stopped when in failfast mode, even in the absence of failures.
bpo-22796: HTTP cookie parsing is now stricter, in order to protect against potential injection attacks.
bpo-22370: Windows detection in pathlib is now more robust.
bpo-22841: Reject coroutines in asyncio add_signal_handler(). Patch by Ludovic.Gasc.
bpo-19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by Matej Cepl.
bpo-22578: Added attributes to the re.error class.
bpo-22849: Fix possible double free in the io.TextIOWrapper constructor.
bpo-12728: Different Unicode characters having the same uppercase but different lowercase are now matched in case-insensitive regular expressions.
bpo-22821: Fixed fcntl() with integer argument on 64-bit big-endian platforms.
bpo-21650: Разрешить параметры с именами
--sort-keys
иjson.tool
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22824: Updated reprlib output format for sets to use set literals. Patch contributed by Berker Peksag.
bpo-22824: Updated reprlib output format for arrays to display empty arrays without an unnecessary empty list. Suggested by Serhiy Storchaka.
bpo-22406: Fixed the uu_codec codec incorrectly ported to 3.x. Based on patch by Martin Panter.
bpo-17293: uuid.getnode() now determines MAC address on AIX using netstat. Based on patch by Aivars Kalvāns.
bpo-22769: Fixed ttk.Treeview.tag_has() when called without arguments.
bpo-22417: Verify certificates by default in httplib (PEP 476).
bpo-22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2 and above. Patch by Tim Graham.
bpo-22776: Brought excluded code into the scope of a try block in SysLogHandler.emit().
bpo-22665: Add missing get_terminal_size and SameFileError to shutil.__all__.
bpo-6623: Remove deprecated Netrc class in the ftplib module. Patch by Matt Chaput.
bpo-17381: Fixed handling of case-insensitive ranges in regular expressions.
bpo-22410: Module level functions in the re module now cache compiled locale-dependent regular expressions taking into account the locale.
bpo-22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.) now return False when the underlying stat call raises NotADirectoryError.
bpo-8876: distutils now falls back to copying files when hard linking doesn’t work. This allows use with special filesystems such as VirtualBox shared folders.
bpo-22217: Implemented reprs of classes in the zipfile module.
bpo-22457: Honour load_tests in the start_dir of discovery.
bpo-18216: gettext now raises an error when a .mo file has an unsupported major version number. Patch by Aaron Hill.
bpo-13918: Provide a locale.delocalize() function which can remove locale-specific number formatting from a string representing a number, without then converting it to a specific type. Patch by Cédric Krier.
bpo-22676: Make the pickling of global objects which don’t have a __module__ attribute less slow.
bpo-18853: Fixed ResourceWarning in shlex.__nain__.
bpo-9351: Defaults set with set_defaults on an argparse subparser are no longer ignored when also set on the parent parser.
bpo-7559: unittest test loading ImportErrors are reported as import errors with their import exception rather than as attribute errors after the import has already failed.
bpo-19746: Разрешить параметры с именами
errors
иTestLoader
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21991: Make email.headerregistry’s header „params“ attributes be read-only (MappingProxyType). Previously the dictionary was modifiable but a new one was created on each access of the attribute.
bpo-22638: SSLv3 is now disabled throughout the standard library. It can still be enabled by instantiating a SSLContext manually.
bpo-22641: In asyncio, the default SSL context for client connections is now created using ssl.create_default_context(), for stronger security.
bpo-17401: Include closefd in io.FileIO repr.
bpo-21338: Add silent mode for compileall. quiet parameters of compile_{dir, file, path} functions now have a multilevel value. Also, -q option of the CLI now have a multilevel value. Patch by Thomas Kluyver.
bpo-20152: Convert the array and cmath modules to Argument Clinic.
bpo-18643: Add socket.socketpair() on Windows.
bpo-22435: Fix a file descriptor leak when socketserver bind fails.
bpo-13096: Fixed segfault in CTypes POINTER handling of large values.
bpo-11694: Raise ConversionError in xdrlib as documented. Patch by Filip Gruszczyński and Claudiu Popa.
bpo-19380: Optimized parsing of regular expressions.
bpo-1519638: Now unmatched groups are replaced with empty strings in re.sub() and re.subn().
bpo-18615: sndhdr.what/whathdr now return a namedtuple.
bpo-22462: Fix pyexpat’s creation of a dummy frame to make it appear in exception tracebacks.
bpo-21965: Add support for in-memory SSL to the ssl module. Patch by Geert Jansen.
bpo-21173: Fix len() on a WeakKeyDictionary when .clear() was called with an iterator alive.
bpo-11866: Eliminated race condition in the computation of names for new threads.
bpo-21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules is mutated while iterating. Patch by Olivier Grisel.
bpo-11271: concurrent.futures.Executor.map() now takes a chunksize argument to allow batching of tasks in child processes and improve performance of ProcessPoolExecutor. Patch by Dan O’Reilly.
bpo-21883: os.path.join() and os.path.relpath() now raise a TypeError with more helpful error message for unsupported or mismatched types of arguments.
bpo-22219: The zipfile module CLI now adds entries for directories (including empty directories) in ZIP file.
bpo-22449: In the ssl.SSLContext.load_default_certs, consult the environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows.
bpo-22508: The email.__version__ variable has been removed; the email code is no longer shipped separately from the stdlib, and __version__ hasn’t been updated in several releases.
bpo-20076: Added non derived UTF-8 aliases to locale aliases table.
bpo-20079: Added locales supported in glibc 2.18 to locale alias table.
bpo-20218: Added convenience methods read_text/write_text and read_bytes/ write_bytes to pathlib.Path objects.
bpo-22396: On 32-bit AIX platform, don’t expose os.posix_fadvise() nor os.posix_fallocate() because their prototypes in system headers are wrong.
bpo-22517: When an io.BufferedRWPair object is deallocated, clear its weakrefs.
bpo-22437: Number of capturing groups in regular expression is no longer limited by 100.
bpo-17442: InteractiveInterpreter now displays the full chained traceback in its showtraceback method, to match the built in interactive interpreter.
bpo-23392: Added tests for marshal C API that works with FILE*.
bpo-10510: distutils register and upload methods now use HTML standards compliant CRLF line endings.
bpo-9850: Fixed macpath.join() for empty first component. Patch by Oleg Oshmyan.
bpo-5309: distutils“ build and build_ext commands now accept a
-j
option to enable parallel building of extension modules.bpo-22448: Improve canceled timer handles cleanup to prevent unbound memory usage. Patch by Joshua Moore-Oliva.
bpo-22427: TemporaryDirectory no longer attempts to clean up twice when used in the with statement in generator.
bpo-22362: Forbidden ambiguous octal escapes out of range 0-0o377 in regular expressions.
bpo-20912: Now directories added to ZIP file have correct Unix and MS-DOS directory attributes.
bpo-21866: ZipFile.close() no longer writes ZIP64 central directory records if allowZip64 is false.
bpo-22278: Fix urljoin problem with relative urls, a regression observed after changes to issue22118 were submitted.
bpo-22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re module. Removed trailing spaces in debugging output.
bpo-22423: Unhandled exception in thread no longer causes unhandled AttributeError when sys.stderr is None.
bpo-21332: Ensure that
bufsize=1
in subprocess.Popen() selects line buffering, rather than block buffering. Patch by Akira Li.bpo-21091: Fix API bug: email.message.EmailMessage.is_attachment is now a method.
bpo-21079: Fix email.message.EmailMessage.is_attachment to return the correct result when the header has parameters as well as a value.
bpo-22247: Add NNTPError to nntplib.__all__.
bpo-22366: urllib.request.urlopen will accept a context object (SSLContext) as an argument which will then be used for HTTPS connection. Patch by Alex Gaynor.
bpo-4180: The warnings registries are now reset when the filters are modified.
bpo-22419: Limit the length of incoming HTTP request in wsgiref server to 65536 bytes and send a 414 error code for higher lengths. Patch contributed by Devin Cook.
Lax cookie parsing in http.cookies could be a security issue when combined with non-standard cookie handling in some web browsers. Reported by Sergey Bobrov.
bpo-20537: logging methods now accept an exception instance as well as a Boolean value or exception tuple. Thanks to Yury Selivanov for the patch.
bpo-22384: An exception in Tkinter callback no longer crashes the program when it is run with pythonw.exe.
bpo-22168: Prevent turtle AttributeError with non-default Canvas on OS X.
bpo-21147: sqlite3 now raises an exception if the request contains a null character instead of truncating it. Based on patch by Victor Stinner.
bpo-13968: The glob module now supports recursive search in subdirectories using the
**
pattern.bpo-21951: Fixed a crash in Tkinter on AIX when called Tcl command with empty string or tuple argument.
bpo-21951: Tkinter now most likely raises MemoryError instead of crash if the memory allocation fails.
bpo-22338: Fix a crash in the json module on memory allocation failure.
bpo-12410: imaplib.IMAP4 now supports the context management protocol. Original patch by Tarek Ziadé.
bpo-21270: We now override tuple methods in mock.call objects so that they can be used as normal call attributes.
bpo-16662: Разрешить параметры с именами
load_tests()
и__init__.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22226: First letter no longer is stripped from the «status» key in the result of Treeview.heading().
bpo-19524: Fixed resource leak in the HTTP connection when an invalid response is received. Patch by Martin Panter.
bpo-20421: Add a .version() method to SSL sockets exposing the actual protocol version in use.
bpo-19546: configparser exceptions no longer expose implementation details. Chained KeyErrors are removed, which leads to cleaner tracebacks. Patch by Claudiu Popa.
bpo-22051: turtledemo no longer reloads examples to re-run them. Initialization of variables and gui setup should be done in main(), which is called each time a demo is run, but not on import.
bpo-21933: Turtledemo users can change the code font size with a menu selection or control(command) „-“ or „+“ or control-mousewheel. Original patch by Lita Cho.
bpo-21597: The separator between the turtledemo text pane and the drawing canvas can now be grabbed and dragged with a mouse. The code text pane can be widened to easily view or copy the full width of the text. The canvas can be widened on small screens. Original patches by Jan Kanis and Lita Cho.
bpo-18132: Turtledemo buttons no longer disappear when the window is shrunk. Original patches by Jan Kanis and Lita Cho.
bpo-22043: Разрешить параметры с именами
threading.Lock.acquire()
иthreading.RLock.acquire()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21527: Add a default number of workers to ThreadPoolExecutor equal to 5 times the number of CPUs. Patch by Claudiu Popa.
bpo-22216: smtplib now resets its state more completely after a quit. The most obvious consequence of the previous behavior was a STARTTLS failure during a connect/starttls/quit/connect/starttls sequence.
bpo-22098: ctypes“ BigEndianStructure and LittleEndianStructure now define an empty __slots__ so that subclasses don’t always get an instance dict. Patch by Claudiu Popa.
bpo-22185: Fix an occasional RuntimeError in threading.Condition.wait() caused by mutation of the waiters queue without holding the lock. Patch by Doug Zongker.
bpo-22287: On UNIX, _PyTime_gettimeofday() now uses clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now depends on the librt library on Solaris and on Linux (only with glibc older than 2.17).
bpo-22182: Use e.args to unpack exceptions correctly in distutils.file_util.move_file. Patch by Claudiu Popa.
The webbrowser module now uses subprocess’s start_new_session=True rather than a potentially risky preexec_fn=os.setsid call.
bpo-22042: signal.set_wakeup_fd(fd) now raises an exception if the file descriptor is in blocking mode.
bpo-16808: inspect.stack() now returns a named tuple instead of a tuple. Patch by Daniel Shahaf.
bpo-22236: Fixed Tkinter images copying operations in NoDefaultRoot mode.
bpo-2527: Add a globals argument to timeit functions, in order to override the globals namespace in which the timed code is executed. Patch by Ben Roberts.
bpo-22118: Switch urllib.parse to use RFC 3986 semantics for the resolution of relative URLs, rather than RFCs 1808 and 2396. Patch by Demian Brecht.
bpo-21549: Added the «members» parameter to TarFile.list().
bpo-19628: Allow compileall recursion depth to be specified with a -r option.
bpo-15696: Add a __sizeof__ implementation for mmap objects on Windows.
bpo-22068: Avoided reference loops with Variables and Fonts in Tkinter.
bpo-22165: SimpleHTTPRequestHandler now supports undecodable file names.
bpo-15381: Optimized line reading in io.BytesIO.
bpo-8797: Raise HTTPError on failed Basic Authentication immediately. Initial patch by Sam Bull.
bpo-20729: Restored the use of lazy iterkeys()/itervalues()/iteritems() in the mailbox module.
bpo-21448: Changed FeedParser feed() to avoid O(n2) behavior when parsing long line. Original patch by Raymond Hettinger.
bpo-22184: The functools LRU Cache decorator factory now gives an earlier and clearer error message when the user forgets the required parameters.
bpo-17923: glob() patterns ending with a slash no longer match non-dirs on AIX. Based on patch by Delhallt.
bpo-21725: Added support for RFC 6531 (SMTPUTF8) in smtpd.
bpo-22176: Update the ctypes module’s libffi to v3.1. This release adds support for the Linux AArch64 and POWERPC ELF ABIv2 little endian architectures.
bpo-5411: Added support for the «xztar» format in the shutil module.
bpo-21121: Don’t force 3rd party C extensions to be built with -Werror=declaration-after-statement.
bpo-21975: Fixed crash when using uninitialized sqlite3.Row (in particular when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in the __new__() method.
bpo-20170: Convert posixmodule to use Argument Clinic.
bpo-21539: Разрешить параметры с именами
Pathlib.mkdir()
иmkdir -p
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-22127: Bypass IDNA for pure-ASCII host names in the socket module (in particular for numeric IPs).
bpo-21047: set the default value for the convert_charrefs argument of HTMLParser to True. Patch by Berker Peksag.
Add an __all__ to html.entities.
bpo-15114: the strict mode and argument of HTMLParser, HTMLParser.error, and the HTMLParserError exception have been removed.
bpo-22085: Dropped support of Tk 8.3 in Tkinter.
bpo-21580: Now Tkinter correctly handles bytes arguments passed to Tk. In particular this allows initializing images from binary data.
bpo-22003: When initialized from a bytes object, io.BytesIO() now defers making a copy until it is mutated, improving performance and memory use on some use cases. Patch by David Wilson.
bpo-22018: On Windows, signal.set_wakeup_fd() now also supports sockets. A side effect is that Python depends to the WinSock library.
bpo-22054: Add os.get_blocking() and os.set_blocking() functions to get and set the blocking mode of a file descriptor (False if the O_NONBLOCK flag is set, True otherwise). These functions are not available on Windows.
bpo-17172: Make turtledemo start as active on OS X even when run with subprocess. Patch by Lita Cho.
bpo-21704: Fix build error for _multiprocessing when semaphores are not available. Patch by Arfrever Frehtes Taifersar Arahesis.
bpo-20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic. Patch by Vajrasky Kok.
Fix repr(_socket.socket) on Windows 64-bit: don’t fail with OverflowError on closed socket. repr(socket.socket) already works fine.
bpo-22033: Reprs of most Python implemented classes now contain actual class name instead of hardcoded one.
bpo-21947: The dis module can now disassemble generator-iterator objects based on their gi_code attribute. Patch by Clement Rouault.
bpo-16133: The asynchat.async_chat.handle_read() method now ignores BlockingIOError exceptions.
bpo-22044: Fixed premature DECREF in call_tzinfo_method. Patch by Tom Flanagan.
bpo-19884: readline: Disable the meta modifier key if stdout is not a terminal to not write the ANSI sequence
"\033[1034h"
into stdout. This sequence is used on some terminal (ex: TERM=xterm-256color») to enable support of 8 bit characters.bpo-4350: Removed a number of out-of-dated and non-working for a long time Tkinter methods.
bpo-6167: Scrollbar.activate() now returns the name of active element if the argument is not specified. Scrollbar.set() now always accepts only 2 arguments.
bpo-15275: Clean up and speed up the ntpath module.
bpo-21888: plistlib’s load() and loads() now work if the fmt parameter is specified.
bpo-22032: __qualname__ instead of __name__ is now always used to format fully qualified class names of Python implemented classes.
bpo-22031: Reprs now always use hexadecimal format with the «0x» prefix when contain an id in form « at 0x…».
bpo-22018: signal.set_wakeup_fd() now raises an OSError instead of a ValueError on
fstat()
failure.bpo-21044: tarfile.open() now handles fileobj with an integer „name“ attribute. Based on patch by Antoine Pietri.
bpo-21966: Respect -q command-line option when code module is ran.
bpo-19076: Don’t pass the redundant „file“ argument to self.error().
bpo-16382: Improve exception message of warnings.warn() for bad category. Initial patch by Phil Elson.
bpo-21932: Разрешить параметры с именами
Py_ssize_t()
и int с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21942: Fixed source file viewing in pydoc’s server mode on Windows.
bpo-11259: asynchat.async_chat().set_terminator() now raises a ValueError if the number of received bytes is negative.
bpo-12523: asynchat.async_chat.push() now raises a TypeError if it doesn’t get a bytes string
bpo-21707: Add missing kwonlyargcount argument to ModuleFinder.replace_paths_in_code().
bpo-20639: calling Path.with_suffix(„“) allows removing the suffix again. Patch by July Tikhonov.
bpo-21714: Disallow the construction of invalid paths using Path.with_name(). Original patch by Antony Lee.
bpo-15014: Added „auth“ method to smtplib to make implementing auth mechanisms simpler, and used it internally in the login method.
bpo-21151: Разрешить параметры с именами
None
иREG_BINARY
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21090: io.FileIO.readall() does not ignore I/O errors anymore. Before, it ignored I/O errors if at least the first C call read() succeed.
bpo-5800: headers parameter of wsgiref.headers.Headers is now optional. Initial patch by Pablo Torres Navarrete and SilentGhost.
bpo-21781: ssl.RAND_add() now supports strings longer than 2 GB.
bpo-21679: Prevent extraneous fstat() calls during open(). Patch by Bohuslav Kabrda.
bpo-21863: cProfile now displays the module name of C extension functions, in addition to their own name.
bpo-11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper object is destroyed. The destructor now closes the file if needed. The close() method can now be called twice: the second call does nothing.
bpo-21858: Better handling of Python exceptions in the sqlite3 module.
bpo-21476: Make sure the email.parser.BytesParser TextIOWrapper is discarded after parsing, so the input file isn’t unexpectedly closed.
bpo-20295: imghdr now recognizes OpenEXR format images.
bpo-21729: Used the «with» statement in the dbm.dumb module to ensure files closing. Patch by Claudiu Popa.
bpo-21491: socketserver: Fix a race condition in child processes reaping.
bpo-21719: Added the
st_file_attributes
field to os.stat_result on Windows.bpo-21832: Require named tuple inputs to be exact strings.
bpo-21722: The distutils «upload» command now exits with a non-zero return code when uploading fails. Patch by Martin Dengler.
bpo-21723: asyncio.Queue: support any type of number (ex: float) for the maximum size. Patch written by Vajrasky Kok.
bpo-21711: support for «site-python» directories has now been removed from the site module (it was deprecated in 3.4).
bpo-17552: new socket.sendfile() method allowing a file to be sent over a socket by using high-performance os.sendfile() on UNIX. Patch by Giampaolo Rodola“.
bpo-18039: dbm.dump.open() now always creates a new database when the flag has the value „n“. Patch by Claudiu Popa.
bpo-21326: Add a new is_closed() method to asyncio.BaseEventLoop. run_forever() and run_until_complete() methods of asyncio.BaseEventLoop now raise an exception if the event loop was closed.
bpo-21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths before checking for a CGI script at that path.
bpo-21310: Fixed possible resource leak in failed open().
bpo-21256: Printout of keyword args should be in deterministic order in a mock function call. This will help to write better doctests.
bpo-21677: Fixed chaining nonnormalized exceptions in io close() methods.
bpo-11709: Fix the pydoc.help function to not fail when sys.stdin is not a valid file.
bpo-21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available.
bpo-13223: Fix pydoc.writedoc so that the HTML documentation for methods that use „self“ in the example code is generated correctly.
bpo-21463: In urllib.request, fix pruning of the FTP cache.
bpo-21618: The subprocess module could fail to close open fds that were inherited by the calling process and already higher than POSIX resource limits would otherwise allow. On systems with a functioning /proc/self/fd or /dev/fd interface the max is now ignored and all fds are closed.
bpo-20383: Introduce importlib.util.module_from_spec() as the preferred way to create a new module.
bpo-21552: Fixed possible integer overflow of too long string lengths in the tkinter module on 64-bit platforms.
bpo-14315: The zipfile module now ignores extra fields in the central directory that are too short to be parsed instead of letting a struct.unpack error bubble up as this «bad data» appears in many real world zip files in the wild and is ignored by other zip tools.
bpo-13742: Added «key» and «reverse» parameters to heapq.merge(). (First draft of patch contributed by Simon Sapin.)
bpo-21402: tkinter.ttk now works when default root window is not set.
bpo-3015: _tkinter.create() now creates tkapp object with wantobject=1 by default.
bpo-10203: sqlite3.Row now truly supports sequence protocol. In particular it supports reverse() and negative indices. Original patch by Claudiu Popa.
bpo-18807: If copying (no symlinks) specified for a venv, then the python interpreter aliases (python, python3) are now created by copying rather than symlinking.
bpo-20197: Added support for the WebP image type in the imghdr module. Patch by Fabrice Aneche and Claudiu Popa.
bpo-21513: Speedup some properties of IP addresses (IPv4Address, IPv6Address) such as .is_private or .is_multicast.
bpo-21137: Improve the repr for threading.Lock() and its variants by showing the «locked» or «unlocked» status. Patch by Berker Peksag.
bpo-21538: The plistlib module now supports loading of binary plist files when reference or offset size is not a power of two.
bpo-21455: Add a default backlog to socket.listen().
bpo-21525: Most Tkinter methods which accepted tuples now accept lists too.
bpo-22166: With the assistance of a new internal _codecs._forget_codec helping function, test_codecs now clears the encoding caches to avoid the appearance of a reference leak
bpo-22236: Tkinter tests now don’t reuse default root window. New root window is created for every test class.
bpo-10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial shape.
bpo-20826: Optimize ipaddress.collapse_addresses().
bpo-21487: Optimize ipaddress.summarize_address_range() and ipaddress.{IPv4Network,IPv6Network}.subnets().
bpo-21486: Optimize parsing of netmasks in ipaddress.IPv4Network and ipaddress.IPv6Network.
bpo-13916: Disallowed the surrogatepass error handler for non UTF-* encodings.
bpo-20998: Fixed re.fullmatch() of repeated single character pattern with ignore case. Original patch by Matthew Barnett.
bpo-21075: fileinput.FileInput now reads bytes from standard stream if binary mode is specified. Patch by Sam Kimbrel.
bpo-19775: Add a samefile() method to pathlib Path objects. Initial patch by Vajrasky Kok.
bpo-21226: Set up modules properly in PyImport_ExecCodeModuleObject (and friends).
bpo-21398: Fix a unicode error in the pydoc pager when the documentation contains characters not encodable to the stdout encoding.
bpo-16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept an (address, netmask) tuple argument, so as to easily construct network objects from existing addresses.
bpo-21156: importlib.abc.InspectLoader.source_to_code() is now a staticmethod.
bpo-21424: Simplified and optimized heaqp.nlargest() and nmsmallest() to make fewer tuple comparisons.
bpo-21396: Fix TextIOWrapper(…, write_through=True) to not force a flush() on the underlying binary stream. Patch by akira.
bpo-18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman
bpo-21088: Bugfix for curses.window.addch() regression in 3.4.0. In porting to Argument Clinic, the first two arguments were reversed.
bpo-21407: _decimal: The module now supports function signatures.
bpo-10650: Remove the non-standard „watchexp“ parameter from the Decimal.quantize() method in the Python version. It had never been present in the C version.
bpo-21469: Reduced the risk of false positives in robotparser by checking to make sure that robots.txt has been read or does not exist prior to returning True in can_fetch().
bpo-19414: Have the OrderedDict mark deleted links as unusable. This gives an early failure if the link is deleted during iteration.
bpo-21421: Add __slots__ to the MappingViews ABC. Patch by Josh Rosenberg.
bpo-21101: Eliminate double hashing in the C speed-up code for collections.Counter().
bpo-21321: itertools.islice() now releases the reference to the source iterator when the slice is exhausted. Patch by Anton Afanasyev.
bpo-21057: TextIOWrapper now allows the underlying binary stream’s read() or read1() method to return an arbitrary bytes-like object (such as a memoryview). Patch by Nikolaus Rath.
bpo-20951: SSLSocket.send() now raises either SSLWantReadError or SSLWantWriteError on a non-blocking socket if the operation would block. Previously, it would return 0. Patch by Nikolaus Rath.
bpo-13248: removed previously deprecated asyncore.dispatcher __getattr__ cheap inheritance hack.
bpo-9815: assertRaises now tries to clear references to local variables in the exception’s traceback.
bpo-19940: ssl.cert_time_to_seconds() now interprets the given time string in the UTC timezone (as specified in RFC 5280), not the local timezone.
bpo-13204: Calling sys.flags.__new__ would crash the interpreter, now it raises a TypeError.
bpo-19385: Make operations on a closed dbm.dumb database always raise the same exception.
bpo-21207: Detect when the os.urandom cached fd has been closed or replaced, and open it anew.
bpo-21291: subprocess’s Popen.wait() is now thread safe so that multiple threads may be calling wait() or poll() on a Popen instance at the same time without losing the Popen.returncode value.
bpo-21127: Path objects can now be instantiated from str subclass instances (such as
numpy.str_
).bpo-15002: urllib.response object to use _TemporaryFileWrapper (and _TemporaryFileCloser) facility. Provides a better way to handle file descriptor close. Patch contributed by Christian Theune.
bpo-12220: mindom now raises a custom ValueError indicating it doesn’t support spaces in URIs instead of letting a „split“ ValueError bubble up.
bpo-21068: The ssl.PROTOCOL* constants are now enum members.
bpo-21276: posixmodule: Don’t define USE_XATTRS on KFreeBSD and the Hurd.
bpo-21262: New method assert_not_called for Mock. It raises AssertionError if the mock has been called.
bpo-21238: Разрешить параметры с именами
unsafe
иAttributeError
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not PROTOCOL_SSLv3, for maximum compatibility.
bpo-21239: patch.stopall() didn’t work deterministically when the same name was patched more than once.
bpo-21203: Updated fileConfig and dictConfig to remove inconsistencies. Thanks to Jure Koren for the patch.
bpo-21222: Passing name keyword argument to mock.create_autospec now works.
bpo-21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX.
bpo-17498: Some SMTP servers disconnect after certain errors, violating strict RFC conformance. Instead of losing the error code when we issue the subsequent RSET, smtplib now returns the error code and defers raising the SMTPServerDisconnected error until the next command is issued.
bpo-17826: setting an iterable side_effect on a mock function created by create_autospec now works. Patch by Kushal Das.
bpo-7776: Fix
Host:
header and reconnection when using http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath.bpo-20968: unittest.mock.MagicMock now supports division. Patch by Johannes Baiter.
bpo-21529: Fix arbitrary memory access in JSONDecoder.raw_decode with a negative second parameter. Bug reported by Guido Vranken. (See also: CVE-2014-4616)
bpo-21169: getpass now handles non-ascii characters that the input stream encoding cannot encode by re-encoding using the replace error handler.
bpo-21171: Fixed undocumented filter API of the rot13 codec. Patch by Berker Peksag.
bpo-20539: Improved math.factorial error message for large positive inputs and changed exception type (OverflowError -> ValueError) for large negative inputs.
bpo-21172: isinstance check relaxed from dict to collections.Mapping.
bpo-21155: asyncio.EventLoop.create_unix_server() now raises a ValueError if path and sock are specified at the same time.
bpo-21136: Avoid unnecessary normalization of Fractions resulting from power and other operations. Patch by Raymond Hettinger.
bpo-17621: Introduce importlib.util.LazyLoader.
bpo-21076: signal module constants were turned into enums. Patch by Giampaolo Rodola“.
bpo-20636: Improved the repr of Tkinter widgets.
bpo-19505: The items, keys, and values views of OrderedDict now support reverse iteration using reversed().
bpo-21149: Improved thread-safety in logging cleanup during interpreter shutdown. Thanks to Devin Jeanpierre for the patch.
bpo-21058: Разрешить параметры с именами
tempfile.NamedTemporaryFile()
иio.open()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21200: Return None from pkgutil.get_loader() when __spec__ is missing.
bpo-21013: Enhance ssl.create_default_context() when used for server side sockets to provide better security by default.
bpo-20145: Разрешить параметры с именами
assertRaisesRegex
иassertWarnsRegex
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20633: Replace relative import by absolute import.
bpo-20980: Stop wrapping exception when using ThreadPool.
bpo-21082: In os.makedirs, do not set the process-wide umask. Note this changes behavior of makedirs when exist_ok=True.
bpo-20990: Fix issues found by pyflakes for multiprocessing.
bpo-21015: SSL contexts will now automatically select an elliptic curve for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise default to «prime256v1».
bpo-21000: Improve the command-line interface of json.tool.
bpo-20995: Enhance default ciphers used by the ssl module to enable better security and prioritize perfect forward secrecy.
bpo-20884: Don’t assume that __file__ is defined on importlib.__init__.
bpo-21499: Ignore __builtins__ in several test_importlib.test_api tests.
bpo-20627: xmlrpc.client.ServerProxy is now a context manager.
bpo-19165: The formatter module now raises DeprecationWarning instead of PendingDeprecationWarning.
bpo-13936: Remove the ability of datetime.time instances to be considered false in boolean contexts.
bpo-18931: selectors module now supports /dev/poll on Solaris. Patch by Giampaolo Rodola“.
bpo-19977: Разрешить параметры с именами
LC_TYPE
иC
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20574: Implement incremental decoder for cp65001 code (Windows code page 65001, Microsoft UTF-8).
bpo-20879: Delay the initialization of encoding and decoding tables for base32, ascii85 and base85 codecs in the base64 module, and delay the initialization of the unquote_to_bytes() table of the urllib.parse module, to not waste memory if these modules are not used.
bpo-19157: Include the broadcast address in the usable hosts for IPv6 in ipaddress.
bpo-11599: When an external command (e.g. compiler) fails, distutils now prints out the whole command line (instead of just the command name) if the environment variable DISTUTILS_DEBUG is set.
bpo-4931: distutils should not produce unhelpful «error: None» messages anymore. distutils.util.grok_environment_error is kept but doc-deprecated.
bpo-20875: Prevent possible gzip «„read“ is not defined» NameError. Patch by Claudiu Popa.
bpo-11558: Разрешить параметры с именами
email.message.Message.attach
иattach
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20283: RE pattern methods now accept the string keyword parameters as documented. The pattern and source keyword parameters are left as deprecated aliases.
bpo-20778: Fix modulefinder to work with bytecode-only modules.
bpo-20791: copy.copy() now doesn’t make a copy when the input is a bytes object. Initial patch by Peter Otten.
bpo-19748: On AIX, time.mktime() now raises an OverflowError for year outsize range [1902; 2037].
bpo-19573: inspect.signature: Use enum for parameter kind constants.
bpo-20726: inspect.signature: Make Signature and Parameter picklable.
bpo-17373: Add inspect.Signature.from_callable method.
bpo-20378: Improve repr of inspect.Signature and inspect.Parameter.
bpo-20816: Fix inspect.getcallargs() to raise correct TypeError for missing keyword-only arguments. Patch by Jeremiah Lowin.
bpo-20817: Fix inspect.getcallargs() to fail correctly if more than 3 arguments are missing. Patch by Jeremiah Lowin.
bpo-6676: Ensure a meaningful exception is raised when attempting to parse more than one XML document per pyexpat xmlparser instance. (Original patches by Hirokazu Yamamoto and Amaury Forgeot d’Arc, with suggested wording by David Gutteridge)
bpo-21117: Fix inspect.signature to better support functools.partial. Due to the specifics of functools.partial implementation, positional-or-keyword arguments passed as keyword arguments become keyword-only.
bpo-20334: inspect.Signature and inspect.Parameter are now hashable. Thanks to Antony Lee for bug reports and suggestions.
bpo-15916: doctest.DocTestSuite returns an empty unittest.TestSuite instead of raising ValueError if it finds no tests
bpo-21209: Fix asyncio.tasks.CoroWrapper to workaround a bug in yield-from implementation in CPythons prior to 3.4.1.
asyncio: Add gi_{frame,running,code} properties to CoroWrapper (upstream bpo-163).
bpo-21311: Avoid exception in _osx_support with non-standard compiler configurations. Patch by John Szakmeister.
bpo-11571: Ensure that the turtle window becomes the topmost window when launched on OS X.
bpo-21801: Validate that __signature__ is None or an instance of Signature.
bpo-21923: Prevent AttributeError in distutils.sysconfig.customize_compiler due to possible uninitialized _config_vars.
bpo-21323: Fix http.server to again handle scripts in CGI subdirectories, broken by the fix for security bpo-19435. Patch by Zach Byrne.
bpo-22733: Fix ffi_prep_args not zero-extending argument values correctly on 64-bit Windows.
bpo-23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection. Removed use of hard-coded MSS as it’s an optimization that’s no longer needed with Nagle disabled.
IDLE¶
bpo-20577: Configuration of the max line length for the FormatParagraph extension has been moved from the General tab of the Idle preferences dialog to the FormatParagraph tab of the Config Extensions dialog. Patch by Tal Einat.
bpo-16893: Update Idle doc chapter to match current Idle and add new information.
bpo-3068: Add Idle extension configuration dialog to Options menu. Changes are written to HOME/.idlerc/config-extensions.cfg. Original patch by Tal Einat.
bpo-16233: A module browser (File : Class Browser, Alt+C) requires an editor window with a filename. When Class Browser is requested otherwise, from a shell, output window, or „Untitled“ editor, Idle no longer displays an error box. It now pops up an Open Module box (Alt+M). If a valid name is entered and a module is opened, a corresponding browser is also opened.
bpo-4832: Save As to type Python files automatically adds .py to the name you enter (even if your system does not display it). Some systems automatically add .txt when type is Text files.
bpo-21986: Code objects are not normally pickled by the pickle module. To match this, they are no longer pickled when running under Idle.
bpo-17390: Adjust Editor window title; remove „Python“, move version to end.
bpo-14105: Idle debugger breakpoints no longer disappear when inserting or deleting lines.
bpo-17172: Turtledemo can now be run from Idle. Currently, the entry is on the Help menu, but it may move to Run. Patch by Ramchandra Apt and Lita Cho.
bpo-21765: Add support for non-ascii identifiers to HyperParser.
bpo-21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav Heblikar.
bpo-18592: Add unittest for SearchDialogBase. Patch by Phil Webster.
bpo-21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar.
bpo-21686: add unittest for HyperParser. Original patch by Saimadhav Heblikar.
bpo-12387: Add missing upper(lower)case versions of default Windows key bindings for Idle so Caps Lock does not disable them. Patch by Roger Serwy.
bpo-21695: Closing a Find-in-files output window while the search is still in progress no longer closes Idle.
bpo-18910: Add unittest for textView. Patch by Phil Webster.
bpo-18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar.
bpo-18409: Add unittest for AutoComplete. Patch by Phil Webster.
bpo-21477: htest.py - Improve framework, complete set of tests. Patches by Saimadhav Heblikar
bpo-18104: Add idlelib/idle_test/htest.py with a few sample tests to begin consolidating and improving human-validated tests of Idle. Change other files as needed to work with htest. Running the module as __main__ runs all tests.
bpo-21139: Change default paragraph width to 72, the PEP 8 recommendation.
bpo-21284: Paragraph reformat test passes after user changes reformat width.
bpo-17654: Ensure IDLE menus are customized properly on OS X for non-framework builds and for all variants of Tk.
bpo-23180: Rename IDLE «Windows» menu item to «Window». Patch by Al Sweigart.
Построить¶
bpo-15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the configure script.
bpo-22935: Allow the ssl module to be compiled if openssl doesn’t support SSL 3.
bpo-22592: Drop support of the Borland C compiler to build Python. The distutils module still supports it to build extensions.
bpo-22591: Drop support of MS-DOS, especially of the DJGPP compiler (MS-DOS port of GCC).
bpo-16537: Check whether self.extensions is empty in setup.py. Patch by Jonathan Hosmer.
bpo-22359: Remove incorrect uses of recursive make. Patch by Jonas Wagner.
bpo-21958: Define HAVE_ROUND when building with Visual Studio 2013 and above. Patch by Zachary Turner.
bpo-18093: the programs that embed the CPython runtime are now in a separate «Programs» directory, rather than being kept in the Modules directory.
bpo-15759: «make suspicious», «make linkcheck» and «make doctest» in Doc/ now display special message when and only when there are failures.
bpo-21141: Разрешить параметры с именами
PCbuild\build_ssl.py
иPCbuild\prepare_ssl.py
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21037: Add a build option to enable AddressSanitizer support.
bpo-19962: The Windows build process now creates «python.bat» in the root of the source tree, which passes all arguments through to the most recently built interpreter.
bpo-21285: Refactor and fix curses configure check to always search in a ncursesw directory.
bpo-15234: For BerkeleyDB and Sqlite, only add the found library and include directories if they aren’t already being searched. This avoids an explicit runtime library dependency.
bpo-17861: Tools/scripts/generate_opcode_h.py automatically regenerates Include/opcode.h from Lib/opcode.py if the latter gets any change.
bpo-20644: OS X installer build support for documentation build changes in 3.4.1: assume externally supplied sphinx-build is available in /usr/bin.
bpo-20022: Eliminate use of deprecated bundlebuilder in OS X builds.
bpo-15968: Incorporated Tcl, Tk, and Tix builds into the Windows build solution.
bpo-17095: Fix Modules/Setup shared support.
bpo-21811: Anticipated fixes to support OS X versions > 10.9.
bpo-21166: Prevent possible segfaults and other random failures of python –generate-posix-vars in pybuilddir.txt build target.
bpo-18096: Fix library order returned by python-config.
bpo-17219: Add library build dir for Python extension cross-builds.
bpo-22919: Windows build updated to support VC 14.0 (Visual Studio 2015), which will be used for the official release.
bpo-21236: Build _msi.pyd with cabinet.lib instead of fci.lib
bpo-17128: Use private version of OpenSSL for OS X 10.5+ installer.
C API¶
bpo-14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(), bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf(). All functions now raise BufferError in that case.
bpo-22445: PyBuffer_IsContiguous() now implements precise contiguity tests, compatible with NumPy’s NPY_RELAXED_STRIDES_CHECKING compilation flag. Previously the function reported false negatives for corner cases.
bpo-22079: PyType_Ready() now checks that statically allocated type has no dynamically allocated bases.
bpo-22453: Removed non-documented macro PyObject_REPR().
bpo-18395: Разрешить параметры с именами
_Py_char2wchar()
иPy_DecodeLocale()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21233: Разрешить параметры с именами
calloc()
иmalloc()
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to match what importlib does; this affects _frozen_importlib as well as any module loaded using imp.init_frozen().
Документация¶
bpo-19548: Update the codecs module documentation to better cover the distinction between text encodings and other codecs, together with other clarifications. Patch by Martin Panter.
bpo-22394: Разрешить параметры с именами
make venv PYTHON=../python
иmake html PYTHON=venv/bin/python3
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21514: The documentation of the json module now refers to new JSON RFC 7159 instead of obsoleted RFC 4627.
bpo-21777: The binary sequence methods on bytes and bytearray are now documented explicitly, rather than assuming users will be able to derive the expected behaviour from the behaviour of the corresponding str methods.
bpo-6916: undocument deprecated asynchat.fifo class.
bpo-17386: Разрешить параметры с именами
Doc/make.bat
иDoc/Makefile
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-21312: Update the thread_foobar.h template file to include newer threading APIs. Patch by Jack McCracken.
bpo-21043: Remove the recommendation for specific CA organizations and to mention the ability to load the OS certificates.
bpo-20765: Add missing documentation for PurePath.with_name() and PurePath.with_suffix().
bpo-19407: New package installation and distribution guides based on the Python Packaging Authority tools. Existing guides have been retained as legacy links from the distutils docs, as they still contain some required reference material for tool developers that isn’t recorded anywhere else.
bpo-19697: Document cases where __main__.__spec__ is None.
Тесты¶
bpo-18982: Add tests for CLI of the calendar module.
bpo-19548: Added some additional checks to test_codecs to ensure that statements in the updated documentation remain accurate. Patch by Martin Panter.
bpo-22838: All test_re tests now work with unittest test discovery.
bpo-22173: Update lib2to3 tests to use unittest test discovery.
bpo-16000: Convert test_curses to use unittest.
bpo-21456: Skip two tests in test_urllib2net.py if _ssl module not present. Patch by Remi Pointel.
bpo-20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier de Gaye.
bpo-22060: test_ctypes has been somewhat cleaned up and simplified; it now uses unittest test discovery to find its tests.
bpo-22104: regrtest.py no longer holds a reference to the suite of tests loaded from test modules that don’t define test_main().
bpo-22111: Assorted cleanups in test_imaplib. Patch by Milan Oberkirch.
bpo-22002: Added
load_package_tests
function to test.support and used it to implement/augment test discovery in test_asyncio, test_email, test_importlib, test_json, and test_tools.bpo-21976: Fix test_ssl to accept LibreSSL version strings. Thanks to William Orr.
bpo-21918: Converted test_tools from a module to a package containing separate test files for each tested script.
bpo-9554: Use modern unittest features in test_argparse. Initial patch by Denver Coneybeare and Radu Voicilas.
bpo-20155: Changed HTTP method names in failing tests in test_httpservers so that packet filtering software (specifically Windows Base Filtering Engine) does not interfere with the transaction semantics expected by the tests.
bpo-19493: Refactored the ctypes test package to skip tests explicitly rather than silently.
bpo-18492: All resources are now allowed when tests are not run by regrtest.py.
bpo-21634: Fix pystone micro-benchmark: use floor division instead of true division to benchmark integers instead of floating point numbers. Set pystone version to 1.2. Patch written by Lennart Regebro.
bpo-21605: Added tests for Tkinter images.
bpo-21493: Added test for ntpath.expanduser(). Original patch by Claudiu Popa.
bpo-19925: Added tests for the spwd module. Original patch by Vajrasky Kok.
bpo-21522: Added Tkinter tests for Listbox.itemconfigure(), PanedWindow.paneconfigure(), and Menu.entryconfigure().
bpo-17756: Fix test_code test when run from the installed location.
bpo-17752: Fix distutils tests when run from the installed location.
bpo-18604: Consolidated checks for GUI availability. All platforms now at least check whether Tk can be instantiated when the GUI resource is requested.
bpo-21275: Fix a socket test on KFreeBSD.
bpo-21223: Pass test_site/test_startup_imports when some of the extensions are built as builtins.
bpo-20635: Added tests for Tk geometry managers.
Add test case for freeze.
bpo-20743: Fix a reference leak in test_tcl.
bpo-21097: Move test_namespace_pkgs into test_importlib.
bpo-21503: Use test_both() consistently in test_importlib.
bpo-20939: Avoid various network test failures due to new redirect of http://www.python.org/ to https://www.python.org: use http://www.example.com instead.
bpo-20668: asyncio tests no longer rely on tests.txt file. (Patch by Vajrasky Kok)
bpo-21093: Prevent failures of ctypes test_macholib on OS X if a copy of libz exists in $HOME/lib or /usr/local/lib.
bpo-22770: Prevent some Tk segfaults on OS X when running gui tests.
bpo-23211: Workaround test_logging failure on some OS X 10.6 systems.
bpo-23345: Prevent test_ssl failures with large OpenSSL patch level values (like 0.9.8zc).
Инструменты/демоверсии¶
bpo-22314: pydoc now works when the LINES environment variable is set.
bpo-22615: Argument Clinic now supports the «type» argument for the int converter. This permits using the int converter with enums and typedefs.
bpo-20076: The makelocalealias.py script no longer ignores UTF-8 mapping.
bpo-20079: The makelocalealias.py script now can parse the SUPPORTED file from glibc sources and supports command line options for source paths.
bpo-22201: Command-line interface of the zipfile module now correctly extracts ZIP files with directory entries. Patch by Ryan Wilson.
bpo-22120: For functions using an unsigned integer return converter, Argument Clinic now generates a cast to that type for the comparison to -1 in the generated code. (This suppresses a compilation warning.)
bpo-18974: Tools/scripts/diff.py now uses argparse instead of optparse.
bpo-21906: Make Tools/scripts/md5sum.py work in Python 3. Patch by Zachary Ware.
bpo-21629: Fix Argument Clinic’s «–converters» feature.
Add support for
yield from
to 2to3.Add support for the PEP 465 matrix multiplication operator to 2to3.
bpo-16047: Fix module exception list and __file__ handling in freeze. Patch by Meador Inge.
bpo-11824: Consider ABI tags in freeze. Patch by Meador Inge.
bpo-20535: PYTHONWARNING no longer affects the run_tests.py script. Patch by Arfrever Frehtes Taifersar Arahesis.
Windows¶
bpo-23260: Update Windows installer
The bundled version of Tcl/Tk has been updated to 8.6.3. The most visible result of this change is the addition of new native file dialogs when running on Windows Vista or newer. See Tcl/Tk’s TIP 432 for more information. Also, this version of Tcl/Tk includes support for Windows 10.
bpo-17896: Разрешить параметры с именами
PCbuild\..\externals
иPCbuild\..\..
с пользовательскими именами C в Argument Clinic. Исправление Эрленда Э. Аасландаbpo-17717: The Windows build scripts now use a copy of NASM pulled from svn.python.org to build OpenSSL.
bpo-21907: Improved the batch scripts provided for building Python.
bpo-22644: The bundled version of OpenSSL has been updated to 1.0.1j.
bpo-10747: Use versioned labels in the Windows start menu. Patch by Olive Kilburn.
bpo-22980: .pyd files with a version and platform tag (for example, «.cp35-win32.pyd») will now be loaded in preference to those without tags.
(For information about older versions, consult the HISTORY file.)